1*0472e113SJosef 'Jeff' Sipek /*
2*0472e113SJosef 'Jeff' Sipek * This file and its contents are supplied under the terms of the
3*0472e113SJosef 'Jeff' Sipek * Common Development and Distribution License ("CDDL"), version 1.0.
4*0472e113SJosef 'Jeff' Sipek * You may only use this file in accordance with the terms of version
5*0472e113SJosef 'Jeff' Sipek * 1.0 of the CDDL.
6*0472e113SJosef 'Jeff' Sipek *
7*0472e113SJosef 'Jeff' Sipek * A full copy of the text of the CDDL should have accompanied this
8*0472e113SJosef 'Jeff' Sipek * source. A copy of the CDDL is also available via the Internet at
9*0472e113SJosef 'Jeff' Sipek * http://www.illumos.org/license/CDDL.
10*0472e113SJosef 'Jeff' Sipek */
11*0472e113SJosef 'Jeff' Sipek
12*0472e113SJosef 'Jeff' Sipek /*
13*0472e113SJosef 'Jeff' Sipek * Copyright 2015 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
14*0472e113SJosef 'Jeff' Sipek */
15*0472e113SJosef 'Jeff' Sipek
16*0472e113SJosef 'Jeff' Sipek #include <stdio.h>
17*0472e113SJosef 'Jeff' Sipek #include <libdisasm.h>
18*0472e113SJosef 'Jeff' Sipek #include <sys/sysmacros.h>
19*0472e113SJosef 'Jeff' Sipek #include <sys/debug.h>
20*0472e113SJosef 'Jeff' Sipek #include <sys/byteorder.h>
21*0472e113SJosef 'Jeff' Sipek
22*0472e113SJosef 'Jeff' Sipek #include "libdisasm_impl.h"
23*0472e113SJosef 'Jeff' Sipek
24*0472e113SJosef 'Jeff' Sipek #define ILC2LEN(ilc) (2 * ((ilc) >= 2 ? (ilc) : (ilc) + 1))
25*0472e113SJosef 'Jeff' Sipek
26*0472e113SJosef 'Jeff' Sipek /*
27*0472e113SJosef 'Jeff' Sipek * Throughout this file, the instruction format names based on:
28*0472e113SJosef 'Jeff' Sipek * SA22-7832-09 z/Architecture Principles of Operation
29*0472e113SJosef 'Jeff' Sipek *
30*0472e113SJosef 'Jeff' Sipek * System/370, ESA/390, and earlier z/Architecture POP use slightly
31*0472e113SJosef 'Jeff' Sipek * different names for the formats (the variant names are numeric). For the
32*0472e113SJosef 'Jeff' Sipek * sake of simplicity, we use the most detailed definitions - z/Architecture.
33*0472e113SJosef 'Jeff' Sipek *
34*0472e113SJosef 'Jeff' Sipek * For ESA/390 we map the formats:
35*0472e113SJosef 'Jeff' Sipek * E -> E
36*0472e113SJosef 'Jeff' Sipek * I -> I
37*0472e113SJosef 'Jeff' Sipek * RR -> RR
38*0472e113SJosef 'Jeff' Sipek * RRE -> RRE
39*0472e113SJosef 'Jeff' Sipek * RRF -> RRD & RRFa-e
40*0472e113SJosef 'Jeff' Sipek * RX -> RXa-b
41*0472e113SJosef 'Jeff' Sipek * RXE -> RXE
42*0472e113SJosef 'Jeff' Sipek * RXF -> RXF
43*0472e113SJosef 'Jeff' Sipek * RS -> RSa-b
44*0472e113SJosef 'Jeff' Sipek * RSE -> RSYa-b
45*0472e113SJosef 'Jeff' Sipek * RSL -> RSLa
46*0472e113SJosef 'Jeff' Sipek * RSI -> RSI
47*0472e113SJosef 'Jeff' Sipek * RI -> RIa-c
48*0472e113SJosef 'Jeff' Sipek * RIL -> RILa-c
49*0472e113SJosef 'Jeff' Sipek * SI -> SI
50*0472e113SJosef 'Jeff' Sipek * S -> S
51*0472e113SJosef 'Jeff' Sipek * SS -> SSa-b & SSd-e
52*0472e113SJosef 'Jeff' Sipek * SSE -> SSE
53*0472e113SJosef 'Jeff' Sipek *
54*0472e113SJosef 'Jeff' Sipek * For System/370 we map the formats:
55*0472e113SJosef 'Jeff' Sipek * RR -> RR
56*0472e113SJosef 'Jeff' Sipek * RX -> RXa-b
57*0472e113SJosef 'Jeff' Sipek * RS -> RSa-b
58*0472e113SJosef 'Jeff' Sipek * SI -> SI
59*0472e113SJosef 'Jeff' Sipek * S -> S
60*0472e113SJosef 'Jeff' Sipek * SS -> SSa-c
61*0472e113SJosef 'Jeff' Sipek *
62*0472e113SJosef 'Jeff' Sipek * Disassembly begins in tbl_xx. The first byte of the instruction is used
63*0472e113SJosef 'Jeff' Sipek * as the index. This yields either an instruction or a sub-table.
64*0472e113SJosef 'Jeff' Sipek *
65*0472e113SJosef 'Jeff' Sipek * If an instruction is encountered, its format field is used to format the
66*0472e113SJosef 'Jeff' Sipek * instruction.
67*0472e113SJosef 'Jeff' Sipek *
68*0472e113SJosef 'Jeff' Sipek * There are two types of sub-tables: extended opcode tables (indicated with
69*0472e113SJosef 'Jeff' Sipek * IF_TBL) or a multiple mnemonics tables (indicated with IF_MULTI).
70*0472e113SJosef 'Jeff' Sipek *
71*0472e113SJosef 'Jeff' Sipek * Extended opcode tables indicade which additional bits of the instruction
72*0472e113SJosef 'Jeff' Sipek * should be inspected. These bits are used as an index into the sub table.
73*0472e113SJosef 'Jeff' Sipek *
74*0472e113SJosef 'Jeff' Sipek * Multiple mnemonic tables are used to print different mnemonics depending
75*0472e113SJosef 'Jeff' Sipek * on the architecture. Over the years, certain instructions got a new
76*0472e113SJosef 'Jeff' Sipek * preferred mnemonic. For example, 0xa70 is test-under-mask-high (tmh) on
77*0472e113SJosef 'Jeff' Sipek * System/390. On z/Architecture systems, the instruction behaves
78*0472e113SJosef 'Jeff' Sipek * identically (and the assembler hapilly accepts tmh), but the preferred
79*0472e113SJosef 'Jeff' Sipek * mnemonic is tmlh (test-under-mask-low-high) because z/Architecture
80*0472e113SJosef 'Jeff' Sipek * extended the general purpose registers from 32 bits to 64 bits. The
81*0472e113SJosef 'Jeff' Sipek * current architecture flag (e.g., F_390) is used to index into the
82*0472e113SJosef 'Jeff' Sipek * sub-table.
83*0472e113SJosef 'Jeff' Sipek *
84*0472e113SJosef 'Jeff' Sipek * Regardless of which sub-table is encountered, the selected entry in the
85*0472e113SJosef 'Jeff' Sipek * sub-table is interpreted using the same rules as the contents of tbl_xx.
86*0472e113SJosef 'Jeff' Sipek *
87*0472e113SJosef 'Jeff' Sipek * Finally, we use the extended opcode sub-table mechanism to pretty print
88*0472e113SJosef 'Jeff' Sipek * the branching instructions. All branches are conditional based on a
89*0472e113SJosef 'Jeff' Sipek * 4-bit mask indicating which value of the condition code will result in a
90*0472e113SJosef 'Jeff' Sipek * taken branch. In order to produce a more human friendly output, we use
91*0472e113SJosef 'Jeff' Sipek * the 4-bit mask as an extended opcode to break up the branching
92*0472e113SJosef 'Jeff' Sipek * instruction into 16 different ones. For example, instead of printing:
93*0472e113SJosef 'Jeff' Sipek *
94*0472e113SJosef 'Jeff' Sipek * bc 7,0x123(%r1,%r2)
95*0472e113SJosef 'Jeff' Sipek *
96*0472e113SJosef 'Jeff' Sipek * we print:
97*0472e113SJosef 'Jeff' Sipek *
98*0472e113SJosef 'Jeff' Sipek * bne 0x123(%r1,%r2)
99*0472e113SJosef 'Jeff' Sipek *
100*0472e113SJosef 'Jeff' Sipek * Note that we are using designated initializers via the INSTR/TABLE/MULTI
101*0472e113SJosef 'Jeff' Sipek * macros and therefore the below tables can be sparse. We rely on unset
102*0472e113SJosef 'Jeff' Sipek * entries having zero format fields (aka. IF_INVAL) per C99.
103*0472e113SJosef 'Jeff' Sipek */
104*0472e113SJosef 'Jeff' Sipek
105*0472e113SJosef 'Jeff' Sipek /* BEGIN CSTYLED */
106*0472e113SJosef 'Jeff' Sipek enum ifmt {
107*0472e113SJosef 'Jeff' Sipek /* invalid */
108*0472e113SJosef 'Jeff' Sipek IF_INVAL = 0,
109*0472e113SJosef 'Jeff' Sipek
110*0472e113SJosef 'Jeff' Sipek /* indirection */
111*0472e113SJosef 'Jeff' Sipek IF_TBL,
112*0472e113SJosef 'Jeff' Sipek IF_MULTI,
113*0472e113SJosef 'Jeff' Sipek
114*0472e113SJosef 'Jeff' Sipek /* 2-byte */
115*0472e113SJosef 'Jeff' Sipek IF_ZERO, /* 370, 390, z */
116*0472e113SJosef 'Jeff' Sipek IF_E, /* 390, z */
117*0472e113SJosef 'Jeff' Sipek IF_I, /* 390, z */
118*0472e113SJosef 'Jeff' Sipek IF_RR, /* 370, 390, z */
119*0472e113SJosef 'Jeff' Sipek
120*0472e113SJosef 'Jeff' Sipek /* 4-byte */
121*0472e113SJosef 'Jeff' Sipek IF_DIAG, /* 370, 390, z */
122*0472e113SJosef 'Jeff' Sipek IF_IE, /* z */
123*0472e113SJosef 'Jeff' Sipek IF_RIa, /* 390, z */
124*0472e113SJosef 'Jeff' Sipek IF_RIb, /* 390, z */
125*0472e113SJosef 'Jeff' Sipek IF_RIc, /* 390, z */
126*0472e113SJosef 'Jeff' Sipek IF_RRD, /* 390, z */ /* on 390 these are RRF */
127*0472e113SJosef 'Jeff' Sipek IF_RRE, /* 390, z */
128*0472e113SJosef 'Jeff' Sipek IF_RRFa, /* 390, z */
129*0472e113SJosef 'Jeff' Sipek IF_RRFb, /* 390, z */
130*0472e113SJosef 'Jeff' Sipek IF_RRFc, /* 390, z */
131*0472e113SJosef 'Jeff' Sipek IF_RRFd, /* 390, z */
132*0472e113SJosef 'Jeff' Sipek IF_RRFe, /* 390, z */
133*0472e113SJosef 'Jeff' Sipek IF_RSa, /* 370, 390, z */
134*0472e113SJosef 'Jeff' Sipek IF_RSb, /* 370, 390, z */
135*0472e113SJosef 'Jeff' Sipek IF_RSI, /* 390, z */
136*0472e113SJosef 'Jeff' Sipek IF_RXa, /* 370, 390, z */
137*0472e113SJosef 'Jeff' Sipek IF_RXb, /* 370, 390, z */
138*0472e113SJosef 'Jeff' Sipek IF_S, /* 370, 390, z */
139*0472e113SJosef 'Jeff' Sipek IF_SI, /* 370, 390, z */
140*0472e113SJosef 'Jeff' Sipek
141*0472e113SJosef 'Jeff' Sipek /* 6-byte */
142*0472e113SJosef 'Jeff' Sipek IF_MII, /* z */
143*0472e113SJosef 'Jeff' Sipek IF_RIEa, /* z */
144*0472e113SJosef 'Jeff' Sipek IF_RIEb, /* z */
145*0472e113SJosef 'Jeff' Sipek IF_RIEc, /* z */
146*0472e113SJosef 'Jeff' Sipek IF_RIEd, /* z */
147*0472e113SJosef 'Jeff' Sipek IF_RIEe, /* z */
148*0472e113SJosef 'Jeff' Sipek IF_RIEf, /* z */
149*0472e113SJosef 'Jeff' Sipek IF_RILa, /* 390, z */
150*0472e113SJosef 'Jeff' Sipek IF_RILb, /* 390, z */
151*0472e113SJosef 'Jeff' Sipek IF_RILc, /* 390, z */
152*0472e113SJosef 'Jeff' Sipek IF_RIS, /* z */
153*0472e113SJosef 'Jeff' Sipek IF_RRS, /* z */
154*0472e113SJosef 'Jeff' Sipek IF_RSLa, /* 390, z */
155*0472e113SJosef 'Jeff' Sipek IF_RSLb, /* z */
156*0472e113SJosef 'Jeff' Sipek IF_RSYa, /* z */
157*0472e113SJosef 'Jeff' Sipek IF_RSYb, /* z */
158*0472e113SJosef 'Jeff' Sipek IF_RXE, /* 390, z */
159*0472e113SJosef 'Jeff' Sipek IF_RXF, /* 390, z */
160*0472e113SJosef 'Jeff' Sipek IF_RXYa, /* z */
161*0472e113SJosef 'Jeff' Sipek IF_RXYb, /* z */
162*0472e113SJosef 'Jeff' Sipek IF_SIL, /* z */
163*0472e113SJosef 'Jeff' Sipek IF_SIY, /* z */
164*0472e113SJosef 'Jeff' Sipek IF_SMI, /* z */
165*0472e113SJosef 'Jeff' Sipek IF_SSa, /* 370, 390, z */
166*0472e113SJosef 'Jeff' Sipek IF_SSb, /* 370, 390, z */
167*0472e113SJosef 'Jeff' Sipek IF_SSc, /* 370, 390, z */
168*0472e113SJosef 'Jeff' Sipek IF_SSd, /* 390, z */
169*0472e113SJosef 'Jeff' Sipek IF_SSe, /* 390, z */
170*0472e113SJosef 'Jeff' Sipek IF_SSf, /* 390, z */
171*0472e113SJosef 'Jeff' Sipek IF_SSE, /* 390, z */
172*0472e113SJosef 'Jeff' Sipek IF_SSF, /* z */
173*0472e113SJosef 'Jeff' Sipek };
174*0472e113SJosef 'Jeff' Sipek
175*0472e113SJosef 'Jeff' Sipek #define IF_NFMTS (IF_SSF + 1)
176*0472e113SJosef 'Jeff' Sipek
177*0472e113SJosef 'Jeff' Sipek #define F_370 0x0001 /* 370 */
178*0472e113SJosef 'Jeff' Sipek #define F_390 0x0002 /* 390 */
179*0472e113SJosef 'Jeff' Sipek #define F_Z 0x0004 /* z */
180*0472e113SJosef 'Jeff' Sipek #define F_SIGNED_IMM 0x0010 /* 370, 390, z */
181*0472e113SJosef 'Jeff' Sipek #define F_CTL_REG 0x0020 /* 370, 390, z */
182*0472e113SJosef 'Jeff' Sipek #define F_HIDE_MASK 0x0040 /* 370, 390, z */
183*0472e113SJosef 'Jeff' Sipek #define F_R1_IS_MASK 0x0080 /* 370, 390, z */
184*0472e113SJosef 'Jeff' Sipek /* END CSTYLED */
185*0472e113SJosef 'Jeff' Sipek
186*0472e113SJosef 'Jeff' Sipek struct inst_table {
187*0472e113SJosef 'Jeff' Sipek union {
188*0472e113SJosef 'Jeff' Sipek struct {
189*0472e113SJosef 'Jeff' Sipek const char *it_name;
190*0472e113SJosef 'Jeff' Sipek unsigned it_flags;
191*0472e113SJosef 'Jeff' Sipek } it_inst;
192*0472e113SJosef 'Jeff' Sipek struct {
193*0472e113SJosef 'Jeff' Sipek const struct inst_table *it_ptr;
194*0472e113SJosef 'Jeff' Sipek uint8_t it_off:4;
195*0472e113SJosef 'Jeff' Sipek uint8_t it_shift:4;
196*0472e113SJosef 'Jeff' Sipek uint8_t it_mask;
197*0472e113SJosef 'Jeff' Sipek } it_table;
198*0472e113SJosef 'Jeff' Sipek struct {
199*0472e113SJosef 'Jeff' Sipek const struct inst_table *it_ptr;
200*0472e113SJosef 'Jeff' Sipek } it_multi;
201*0472e113SJosef 'Jeff' Sipek } it_u;
202*0472e113SJosef 'Jeff' Sipek enum ifmt it_fmt;
203*0472e113SJosef 'Jeff' Sipek };
204*0472e113SJosef 'Jeff' Sipek
205*0472e113SJosef 'Jeff' Sipek #define BITFLD(a, b) DECL_BITFIELD2(b:4, a:4)
206*0472e113SJosef 'Jeff' Sipek
207*0472e113SJosef 'Jeff' Sipek union inst {
208*0472e113SJosef 'Jeff' Sipek uint8_t raw[6];
209*0472e113SJosef 'Jeff' Sipek struct {
210*0472e113SJosef 'Jeff' Sipek uint8_t op;
211*0472e113SJosef 'Jeff' Sipek uint8_t par1;
212*0472e113SJosef 'Jeff' Sipek uint16_t par2;
213*0472e113SJosef 'Jeff' Sipek } diag;
214*0472e113SJosef 'Jeff' Sipek struct {
215*0472e113SJosef 'Jeff' Sipek uint8_t op;
216*0472e113SJosef 'Jeff' Sipek uint8_t i;
217*0472e113SJosef 'Jeff' Sipek } i;
218*0472e113SJosef 'Jeff' Sipek struct {
219*0472e113SJosef 'Jeff' Sipek uint16_t op;
220*0472e113SJosef 'Jeff' Sipek uint8_t pad;
221*0472e113SJosef 'Jeff' Sipek BITFLD(i1, i2);
222*0472e113SJosef 'Jeff' Sipek } ie;
223*0472e113SJosef 'Jeff' Sipek struct {
224*0472e113SJosef 'Jeff' Sipek uint8_t op;
225*0472e113SJosef 'Jeff' Sipek BITFLD(m1, ri2h);
226*0472e113SJosef 'Jeff' Sipek uint8_t ri2l;
227*0472e113SJosef 'Jeff' Sipek uint8_t ri3h;
228*0472e113SJosef 'Jeff' Sipek uint16_t ri3l;
229*0472e113SJosef 'Jeff' Sipek } mii;
230*0472e113SJosef 'Jeff' Sipek struct {
231*0472e113SJosef 'Jeff' Sipek uint8_t op;
232*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2);
233*0472e113SJosef 'Jeff' Sipek } rr;
234*0472e113SJosef 'Jeff' Sipek struct {
235*0472e113SJosef 'Jeff' Sipek uint16_t op;
236*0472e113SJosef 'Jeff' Sipek BITFLD(r1, pad);
237*0472e113SJosef 'Jeff' Sipek BITFLD(r3, r2);
238*0472e113SJosef 'Jeff' Sipek } rrd;
239*0472e113SJosef 'Jeff' Sipek struct {
240*0472e113SJosef 'Jeff' Sipek uint16_t op;
241*0472e113SJosef 'Jeff' Sipek uint8_t pad;
242*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2);
243*0472e113SJosef 'Jeff' Sipek } rre;
244*0472e113SJosef 'Jeff' Sipek struct {
245*0472e113SJosef 'Jeff' Sipek uint16_t op;
246*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m4);
247*0472e113SJosef 'Jeff' Sipek BITFLD(r3, r2);
248*0472e113SJosef 'Jeff' Sipek } rrf_ab;
249*0472e113SJosef 'Jeff' Sipek struct {
250*0472e113SJosef 'Jeff' Sipek uint16_t op;
251*0472e113SJosef 'Jeff' Sipek BITFLD(m3, m4);
252*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2);
253*0472e113SJosef 'Jeff' Sipek } rrf_cde;
254*0472e113SJosef 'Jeff' Sipek struct {
255*0472e113SJosef 'Jeff' Sipek uint8_t op1;
256*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2);
257*0472e113SJosef 'Jeff' Sipek BITFLD(b4, d4h);
258*0472e113SJosef 'Jeff' Sipek uint8_t d4l;
259*0472e113SJosef 'Jeff' Sipek BITFLD(m3, pad);
260*0472e113SJosef 'Jeff' Sipek uint8_t op2;
261*0472e113SJosef 'Jeff' Sipek } rrs;
262*0472e113SJosef 'Jeff' Sipek struct {
263*0472e113SJosef 'Jeff' Sipek uint8_t op;
264*0472e113SJosef 'Jeff' Sipek BITFLD(r1, x2);
265*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
266*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
267*0472e113SJosef 'Jeff' Sipek } rx_a;
268*0472e113SJosef 'Jeff' Sipek struct {
269*0472e113SJosef 'Jeff' Sipek uint8_t op;
270*0472e113SJosef 'Jeff' Sipek BITFLD(m1, x2);
271*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
272*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
273*0472e113SJosef 'Jeff' Sipek } rx_b;
274*0472e113SJosef 'Jeff' Sipek struct {
275*0472e113SJosef 'Jeff' Sipek uint8_t op1;
276*0472e113SJosef 'Jeff' Sipek BITFLD(r1, x2);
277*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
278*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
279*0472e113SJosef 'Jeff' Sipek uint8_t pad;
280*0472e113SJosef 'Jeff' Sipek uint8_t op2;
281*0472e113SJosef 'Jeff' Sipek } rxe;
282*0472e113SJosef 'Jeff' Sipek struct {
283*0472e113SJosef 'Jeff' Sipek uint8_t op1;
284*0472e113SJosef 'Jeff' Sipek BITFLD(r3, x2);
285*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
286*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
287*0472e113SJosef 'Jeff' Sipek BITFLD(r1, pad);
288*0472e113SJosef 'Jeff' Sipek uint8_t op2;
289*0472e113SJosef 'Jeff' Sipek } rxf;
290*0472e113SJosef 'Jeff' Sipek struct {
291*0472e113SJosef 'Jeff' Sipek uint8_t op1;
292*0472e113SJosef 'Jeff' Sipek BITFLD(r1, x2);
293*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h);
294*0472e113SJosef 'Jeff' Sipek uint8_t dl2l;
295*0472e113SJosef 'Jeff' Sipek uint8_t dh2;
296*0472e113SJosef 'Jeff' Sipek uint8_t op2;
297*0472e113SJosef 'Jeff' Sipek } rxy_a;
298*0472e113SJosef 'Jeff' Sipek struct {
299*0472e113SJosef 'Jeff' Sipek uint8_t op1;
300*0472e113SJosef 'Jeff' Sipek BITFLD(m1, x2);
301*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h);
302*0472e113SJosef 'Jeff' Sipek uint8_t dl2l;
303*0472e113SJosef 'Jeff' Sipek uint8_t dh2;
304*0472e113SJosef 'Jeff' Sipek uint8_t op2;
305*0472e113SJosef 'Jeff' Sipek } rxy_b;
306*0472e113SJosef 'Jeff' Sipek struct {
307*0472e113SJosef 'Jeff' Sipek uint8_t op;
308*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
309*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
310*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
311*0472e113SJosef 'Jeff' Sipek } rs_a;
312*0472e113SJosef 'Jeff' Sipek struct {
313*0472e113SJosef 'Jeff' Sipek uint8_t op;
314*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3);
315*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
316*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
317*0472e113SJosef 'Jeff' Sipek } rs_b;
318*0472e113SJosef 'Jeff' Sipek struct {
319*0472e113SJosef 'Jeff' Sipek uint8_t op1;
320*0472e113SJosef 'Jeff' Sipek BITFLD(l1, pad1);
321*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
322*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
323*0472e113SJosef 'Jeff' Sipek uint8_t pad2;
324*0472e113SJosef 'Jeff' Sipek uint8_t op2;
325*0472e113SJosef 'Jeff' Sipek } rsl_a;
326*0472e113SJosef 'Jeff' Sipek struct {
327*0472e113SJosef 'Jeff' Sipek uint8_t op1;
328*0472e113SJosef 'Jeff' Sipek uint8_t l2;
329*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
330*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
331*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3);
332*0472e113SJosef 'Jeff' Sipek uint8_t op2;
333*0472e113SJosef 'Jeff' Sipek } rsl_b;
334*0472e113SJosef 'Jeff' Sipek struct {
335*0472e113SJosef 'Jeff' Sipek uint8_t op;
336*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
337*0472e113SJosef 'Jeff' Sipek uint16_t ri2;
338*0472e113SJosef 'Jeff' Sipek } rsi;
339*0472e113SJosef 'Jeff' Sipek struct {
340*0472e113SJosef 'Jeff' Sipek uint8_t op1;
341*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
342*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h);
343*0472e113SJosef 'Jeff' Sipek uint8_t dl2l;
344*0472e113SJosef 'Jeff' Sipek uint8_t dh2;
345*0472e113SJosef 'Jeff' Sipek uint8_t op2;
346*0472e113SJosef 'Jeff' Sipek } rsy_a;
347*0472e113SJosef 'Jeff' Sipek struct {
348*0472e113SJosef 'Jeff' Sipek uint8_t op1;
349*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3);
350*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h);
351*0472e113SJosef 'Jeff' Sipek uint8_t dl2l;
352*0472e113SJosef 'Jeff' Sipek uint8_t dh2;
353*0472e113SJosef 'Jeff' Sipek uint8_t op2;
354*0472e113SJosef 'Jeff' Sipek } rsy_b;
355*0472e113SJosef 'Jeff' Sipek struct {
356*0472e113SJosef 'Jeff' Sipek uint8_t op1;
357*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2);
358*0472e113SJosef 'Jeff' Sipek uint16_t i2;
359*0472e113SJosef 'Jeff' Sipek } ri_a;
360*0472e113SJosef 'Jeff' Sipek struct {
361*0472e113SJosef 'Jeff' Sipek uint8_t op1;
362*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2);
363*0472e113SJosef 'Jeff' Sipek uint16_t ri2;
364*0472e113SJosef 'Jeff' Sipek } ri_b;
365*0472e113SJosef 'Jeff' Sipek struct {
366*0472e113SJosef 'Jeff' Sipek uint8_t op1;
367*0472e113SJosef 'Jeff' Sipek BITFLD(m1, op2);
368*0472e113SJosef 'Jeff' Sipek uint16_t ri2;
369*0472e113SJosef 'Jeff' Sipek } ri_c;
370*0472e113SJosef 'Jeff' Sipek struct {
371*0472e113SJosef 'Jeff' Sipek uint8_t op1;
372*0472e113SJosef 'Jeff' Sipek BITFLD(r1, _pad0);
373*0472e113SJosef 'Jeff' Sipek uint16_t i2;
374*0472e113SJosef 'Jeff' Sipek BITFLD(m3, _pad1);
375*0472e113SJosef 'Jeff' Sipek uint8_t op2;
376*0472e113SJosef 'Jeff' Sipek } rie_a;
377*0472e113SJosef 'Jeff' Sipek struct {
378*0472e113SJosef 'Jeff' Sipek uint8_t op1;
379*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2);
380*0472e113SJosef 'Jeff' Sipek uint16_t ri4;
381*0472e113SJosef 'Jeff' Sipek BITFLD(m3, _pad);
382*0472e113SJosef 'Jeff' Sipek uint8_t op2;
383*0472e113SJosef 'Jeff' Sipek } rie_b;
384*0472e113SJosef 'Jeff' Sipek struct {
385*0472e113SJosef 'Jeff' Sipek uint8_t op1;
386*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3);
387*0472e113SJosef 'Jeff' Sipek uint16_t ri4;
388*0472e113SJosef 'Jeff' Sipek uint8_t i2;
389*0472e113SJosef 'Jeff' Sipek uint8_t op2;
390*0472e113SJosef 'Jeff' Sipek } rie_c;
391*0472e113SJosef 'Jeff' Sipek struct {
392*0472e113SJosef 'Jeff' Sipek uint8_t op1;
393*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
394*0472e113SJosef 'Jeff' Sipek uint16_t i2;
395*0472e113SJosef 'Jeff' Sipek uint8_t _pad;
396*0472e113SJosef 'Jeff' Sipek uint8_t op2;
397*0472e113SJosef 'Jeff' Sipek } rie_d;
398*0472e113SJosef 'Jeff' Sipek struct {
399*0472e113SJosef 'Jeff' Sipek uint8_t op1;
400*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
401*0472e113SJosef 'Jeff' Sipek uint16_t ri2;
402*0472e113SJosef 'Jeff' Sipek uint8_t _pad;
403*0472e113SJosef 'Jeff' Sipek uint8_t op2;
404*0472e113SJosef 'Jeff' Sipek } rie_e;
405*0472e113SJosef 'Jeff' Sipek struct {
406*0472e113SJosef 'Jeff' Sipek uint8_t op1;
407*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2);
408*0472e113SJosef 'Jeff' Sipek uint8_t i3;
409*0472e113SJosef 'Jeff' Sipek uint8_t i4;
410*0472e113SJosef 'Jeff' Sipek uint8_t i5;
411*0472e113SJosef 'Jeff' Sipek uint8_t op2;
412*0472e113SJosef 'Jeff' Sipek } rie_f;
413*0472e113SJosef 'Jeff' Sipek struct {
414*0472e113SJosef 'Jeff' Sipek uint8_t op1;
415*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2);
416*0472e113SJosef 'Jeff' Sipek uint16_t i2h;
417*0472e113SJosef 'Jeff' Sipek uint16_t i2l;
418*0472e113SJosef 'Jeff' Sipek } ril_a;
419*0472e113SJosef 'Jeff' Sipek struct {
420*0472e113SJosef 'Jeff' Sipek uint8_t op1;
421*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2);
422*0472e113SJosef 'Jeff' Sipek uint16_t ri2h;
423*0472e113SJosef 'Jeff' Sipek uint16_t ri2l;
424*0472e113SJosef 'Jeff' Sipek } ril_b;
425*0472e113SJosef 'Jeff' Sipek struct {
426*0472e113SJosef 'Jeff' Sipek uint8_t op1;
427*0472e113SJosef 'Jeff' Sipek BITFLD(m1, op2);
428*0472e113SJosef 'Jeff' Sipek uint16_t ri2h;
429*0472e113SJosef 'Jeff' Sipek uint16_t ri2l;
430*0472e113SJosef 'Jeff' Sipek } ril_c;
431*0472e113SJosef 'Jeff' Sipek struct {
432*0472e113SJosef 'Jeff' Sipek uint8_t op1;
433*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3);
434*0472e113SJosef 'Jeff' Sipek BITFLD(b4, d4h);
435*0472e113SJosef 'Jeff' Sipek uint8_t d4l;
436*0472e113SJosef 'Jeff' Sipek uint8_t i2;
437*0472e113SJosef 'Jeff' Sipek uint8_t op2;
438*0472e113SJosef 'Jeff' Sipek } ris;
439*0472e113SJosef 'Jeff' Sipek struct {
440*0472e113SJosef 'Jeff' Sipek uint8_t op;
441*0472e113SJosef 'Jeff' Sipek uint8_t i2;
442*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
443*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
444*0472e113SJosef 'Jeff' Sipek } si;
445*0472e113SJosef 'Jeff' Sipek struct {
446*0472e113SJosef 'Jeff' Sipek uint16_t op;
447*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
448*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
449*0472e113SJosef 'Jeff' Sipek uint16_t i2;
450*0472e113SJosef 'Jeff' Sipek } sil;
451*0472e113SJosef 'Jeff' Sipek struct {
452*0472e113SJosef 'Jeff' Sipek uint8_t op1;
453*0472e113SJosef 'Jeff' Sipek uint8_t i2;
454*0472e113SJosef 'Jeff' Sipek BITFLD(b1, dl1h);
455*0472e113SJosef 'Jeff' Sipek uint8_t dl1l;
456*0472e113SJosef 'Jeff' Sipek uint8_t dh1;
457*0472e113SJosef 'Jeff' Sipek uint8_t op2;
458*0472e113SJosef 'Jeff' Sipek } siy;
459*0472e113SJosef 'Jeff' Sipek struct {
460*0472e113SJosef 'Jeff' Sipek uint8_t op;
461*0472e113SJosef 'Jeff' Sipek BITFLD(m1, pad);
462*0472e113SJosef 'Jeff' Sipek BITFLD(b3, d3h);
463*0472e113SJosef 'Jeff' Sipek uint8_t d3l;
464*0472e113SJosef 'Jeff' Sipek uint16_t ri2;
465*0472e113SJosef 'Jeff' Sipek } smi;
466*0472e113SJosef 'Jeff' Sipek struct {
467*0472e113SJosef 'Jeff' Sipek uint8_t op1;
468*0472e113SJosef 'Jeff' Sipek uint8_t op2;
469*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
470*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
471*0472e113SJosef 'Jeff' Sipek } s;
472*0472e113SJosef 'Jeff' Sipek struct {
473*0472e113SJosef 'Jeff' Sipek uint8_t op;
474*0472e113SJosef 'Jeff' Sipek uint8_t l;
475*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
476*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
477*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
478*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
479*0472e113SJosef 'Jeff' Sipek } ss_a;
480*0472e113SJosef 'Jeff' Sipek struct {
481*0472e113SJosef 'Jeff' Sipek uint8_t op;
482*0472e113SJosef 'Jeff' Sipek BITFLD(l1, l2);
483*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
484*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
485*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
486*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
487*0472e113SJosef 'Jeff' Sipek } ss_b;
488*0472e113SJosef 'Jeff' Sipek struct {
489*0472e113SJosef 'Jeff' Sipek uint8_t op;
490*0472e113SJosef 'Jeff' Sipek BITFLD(l1, i3);
491*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
492*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
493*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
494*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
495*0472e113SJosef 'Jeff' Sipek } ss_c;
496*0472e113SJosef 'Jeff' Sipek struct {
497*0472e113SJosef 'Jeff' Sipek uint8_t op;
498*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
499*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
500*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
501*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
502*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
503*0472e113SJosef 'Jeff' Sipek } ss_d;
504*0472e113SJosef 'Jeff' Sipek struct {
505*0472e113SJosef 'Jeff' Sipek uint8_t op;
506*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3);
507*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
508*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
509*0472e113SJosef 'Jeff' Sipek BITFLD(b4, d4h);
510*0472e113SJosef 'Jeff' Sipek uint8_t d4l;
511*0472e113SJosef 'Jeff' Sipek } ss_e;
512*0472e113SJosef 'Jeff' Sipek struct {
513*0472e113SJosef 'Jeff' Sipek uint8_t op;
514*0472e113SJosef 'Jeff' Sipek uint8_t l2;
515*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
516*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
517*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
518*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
519*0472e113SJosef 'Jeff' Sipek } ss_f;
520*0472e113SJosef 'Jeff' Sipek struct {
521*0472e113SJosef 'Jeff' Sipek uint16_t op;
522*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
523*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
524*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
525*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
526*0472e113SJosef 'Jeff' Sipek } sse;
527*0472e113SJosef 'Jeff' Sipek struct {
528*0472e113SJosef 'Jeff' Sipek uint8_t op1;
529*0472e113SJosef 'Jeff' Sipek BITFLD(r3, op2);
530*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h);
531*0472e113SJosef 'Jeff' Sipek uint8_t d1l;
532*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h);
533*0472e113SJosef 'Jeff' Sipek uint8_t d2l;
534*0472e113SJosef 'Jeff' Sipek } ssf;
535*0472e113SJosef 'Jeff' Sipek };
536*0472e113SJosef 'Jeff' Sipek
537*0472e113SJosef 'Jeff' Sipek #define INSTR(op, m, fm, fl) [op] = { \
538*0472e113SJosef 'Jeff' Sipek .it_u.it_inst = { \
539*0472e113SJosef 'Jeff' Sipek .it_name = (m), \
540*0472e113SJosef 'Jeff' Sipek .it_flags = (fl), \
541*0472e113SJosef 'Jeff' Sipek }, \
542*0472e113SJosef 'Jeff' Sipek .it_fmt = (fm), \
543*0472e113SJosef 'Jeff' Sipek }
544*0472e113SJosef 'Jeff' Sipek #define TABLE(op, tbl, o, s, m) [op] = { \
545*0472e113SJosef 'Jeff' Sipek .it_u.it_table = { \
546*0472e113SJosef 'Jeff' Sipek .it_ptr = (tbl), \
547*0472e113SJosef 'Jeff' Sipek .it_off = (o), \
548*0472e113SJosef 'Jeff' Sipek .it_shift = (s), \
549*0472e113SJosef 'Jeff' Sipek .it_mask = (m), \
550*0472e113SJosef 'Jeff' Sipek }, \
551*0472e113SJosef 'Jeff' Sipek .it_fmt = IF_TBL, \
552*0472e113SJosef 'Jeff' Sipek }
553*0472e113SJosef 'Jeff' Sipek #define MULTI(op, tbl) [op] = { \
554*0472e113SJosef 'Jeff' Sipek .it_u.it_multi.it_ptr = (tbl), \
555*0472e113SJosef 'Jeff' Sipek .it_fmt = IF_MULTI, \
556*0472e113SJosef 'Jeff' Sipek }
557*0472e113SJosef 'Jeff' Sipek
558*0472e113SJosef 'Jeff' Sipek /*
559*0472e113SJosef 'Jeff' Sipek * Instruction tables based on:
560*0472e113SJosef 'Jeff' Sipek * GA22-7000-4 System/370 Principles of Operation
561*0472e113SJosef 'Jeff' Sipek * SA22-7201-08 ESA/390 Principles of Operation
562*0472e113SJosef 'Jeff' Sipek * SA22-7832-09 z/Architecture Principles of Operation
563*0472e113SJosef 'Jeff' Sipek */
564*0472e113SJosef 'Jeff' Sipek
565*0472e113SJosef 'Jeff' Sipek /* BEGIN CSTYLED */
566*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_01xx[256] = {
567*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "pr", IF_E, F_390 | F_Z),
568*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "upt", IF_E, F_390 | F_Z),
569*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "ptff", IF_E, F_Z),
570*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "sckpf", IF_E, F_390 | F_Z),
571*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "pfpo", IF_E, F_Z),
572*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "tam", IF_E, F_390 | F_Z),
573*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "sam24", IF_E, F_390 | F_Z),
574*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "sam31", IF_E, F_390 | F_Z),
575*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "sam64", IF_E, F_Z),
576*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "trap2", IF_E, F_390 | F_Z),
577*0472e113SJosef 'Jeff' Sipek };
578*0472e113SJosef 'Jeff' Sipek
579*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_07[] = {
580*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "nopr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
581*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "bor", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
582*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "bhr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
583*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK),
584*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "blr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
585*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK),
586*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK),
587*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "bnzr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
588*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "ber", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
589*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK),
590*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK),
591*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "bner", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
592*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK),
593*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "bnhr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
594*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "bnor", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
595*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "br", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK),
596*0472e113SJosef 'Jeff' Sipek };
597*0472e113SJosef 'Jeff' Sipek
598*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_47[] = {
599*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "nop", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
600*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "bo", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
601*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "bh", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
602*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "bc", IF_RXb, F_370 | F_390 | F_Z),
603*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "bl", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
604*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "bc", IF_RXb, F_370 | F_390 | F_Z),
605*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "bc", IF_RXb, F_370 | F_390 | F_Z),
606*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "bne", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
607*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "be", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
608*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "bc", IF_RXb, F_370 | F_390 | F_Z),
609*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "bc", IF_RXb, F_370 | F_390 | F_Z),
610*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "bnl", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
611*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "bc", IF_RXb, F_370 | F_390 | F_Z),
612*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "bnh", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
613*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "bno", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
614*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "b", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK),
615*0472e113SJosef 'Jeff' Sipek };
616*0472e113SJosef 'Jeff' Sipek
617*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */
618*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_25[] = {
619*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "lrdr", IF_RR, F_370),
620*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ldxr", IF_RR, F_390),
621*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ldxr", IF_RR, F_Z),
622*0472e113SJosef 'Jeff' Sipek };
623*0472e113SJosef 'Jeff' Sipek
624*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */
625*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_35[] = {
626*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "lrer", IF_RR, F_370),
627*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ledr", IF_RR, F_390),
628*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ledr", IF_RR, F_Z),
629*0472e113SJosef 'Jeff' Sipek };
630*0472e113SJosef 'Jeff' Sipek
631*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */
632*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_3c[] = {
633*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "mer", IF_RR, F_370),
634*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "mder", IF_RR, F_390),
635*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "mder", IF_RR, F_Z),
636*0472e113SJosef 'Jeff' Sipek };
637*0472e113SJosef 'Jeff' Sipek
638*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */
639*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_7c[] = {
640*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "me", IF_RXa, F_370),
641*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "mde", IF_RXa, F_390),
642*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "mde", IF_RXa, F_Z),
643*0472e113SJosef 'Jeff' Sipek };
644*0472e113SJosef 'Jeff' Sipek
645*0472e113SJosef 'Jeff' Sipek /* the meaning of this instruction changed over time */
646*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_84[] = {
647*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "wrd", IF_SI, F_370),
648*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "brxh", IF_RSI, F_390),
649*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "brxh", IF_RSI, F_Z),
650*0472e113SJosef 'Jeff' Sipek };
651*0472e113SJosef 'Jeff' Sipek
652*0472e113SJosef 'Jeff' Sipek /* the meaning of this instruction changed over time */
653*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_85[] = {
654*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "rdd", IF_SI, F_370),
655*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "brxle", IF_RSI, F_390),
656*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "brxle", IF_RSI, F_Z),
657*0472e113SJosef 'Jeff' Sipek };
658*0472e113SJosef 'Jeff' Sipek
659*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a5x[16] = {
660*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "iihh", IF_RIa, F_Z),
661*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "iihl", IF_RIa, F_Z),
662*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "iilh", IF_RIa, F_Z),
663*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "iill", IF_RIa, F_Z),
664*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "nihh", IF_RIa, F_Z),
665*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "nihl", IF_RIa, F_Z),
666*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "nilh", IF_RIa, F_Z),
667*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "nill", IF_RIa, F_Z),
668*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "oihh", IF_RIa, F_Z),
669*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "oihl", IF_RIa, F_Z),
670*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "oilh", IF_RIa, F_Z),
671*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "oill", IF_RIa, F_Z),
672*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "llihh", IF_RIa, F_Z),
673*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "llihl", IF_RIa, F_Z),
674*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "llilh", IF_RIa, F_Z),
675*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "llill", IF_RIa, F_Z),
676*0472e113SJosef 'Jeff' Sipek };
677*0472e113SJosef 'Jeff' Sipek
678*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */
679*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a70[] = {
680*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "tmh", IF_RIa, F_390),
681*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "tmlh", IF_RIa, F_Z),
682*0472e113SJosef 'Jeff' Sipek };
683*0472e113SJosef 'Jeff' Sipek
684*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */
685*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a71[] = {
686*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "tml", IF_RIa, F_390),
687*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "tmll", IF_RIa, F_Z),
688*0472e113SJosef 'Jeff' Sipek };
689*0472e113SJosef 'Jeff' Sipek
690*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a74[16] = {
691*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "jnop", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
692*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "jo", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
693*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "jh", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
694*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "brc", IF_RIc, F_390 | F_Z),
695*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "jl", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
696*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "brc", IF_RIc, F_390 | F_Z),
697*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "brc", IF_RIc, F_390 | F_Z),
698*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "jne", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
699*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "je", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
700*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "brc", IF_RIc, F_390 | F_Z),
701*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "brc", IF_RIc, F_390 | F_Z),
702*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "jnl", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
703*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "brc", IF_RIc, F_390 | F_Z),
704*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "jnh", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
705*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "jno", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
706*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "j", IF_RIc, F_390 | F_Z | F_HIDE_MASK),
707*0472e113SJosef 'Jeff' Sipek };
708*0472e113SJosef 'Jeff' Sipek
709*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a7x[16] = {
710*0472e113SJosef 'Jeff' Sipek MULTI(0x0, tbl_a70),
711*0472e113SJosef 'Jeff' Sipek MULTI(0x1, tbl_a71),
712*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "tmhh", IF_RIa, F_Z),
713*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "tmhl", IF_RIa, F_Z),
714*0472e113SJosef 'Jeff' Sipek TABLE(0x4, tbl_a74, 1, 4, 0x0f),
715*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "bras", IF_RIb, F_390 | F_Z),
716*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "brct", IF_RIb, F_390 | F_Z),
717*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "brctg", IF_RIb, F_Z),
718*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "lhi", IF_RIa, F_390 | F_Z),
719*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "lghi", IF_RIa, F_Z),
720*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "ahi", IF_RIa, F_390 | F_Z | F_SIGNED_IMM),
721*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "aghi", IF_RIa, F_Z | F_SIGNED_IMM),
722*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "mhi", IF_RIa, F_390 | F_Z),
723*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "mghi", IF_RIa, F_Z),
724*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "chi", IF_RIa, F_390 | F_Z | F_SIGNED_IMM),
725*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "cghi", IF_RIa, F_Z | F_SIGNED_IMM),
726*0472e113SJosef 'Jeff' Sipek };
727*0472e113SJosef 'Jeff' Sipek
728*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b2a6[] = {
729*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cuutf", IF_RRFc, F_390),
730*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "c21", IF_RRFc, F_Z),
731*0472e113SJosef 'Jeff' Sipek };
732*0472e113SJosef 'Jeff' Sipek
733*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b2a7[] = {
734*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cutfu", IF_RRFc, F_390),
735*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cu12", IF_RRFc, F_Z),
736*0472e113SJosef 'Jeff' Sipek };
737*0472e113SJosef 'Jeff' Sipek
738*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b2xx[256] = {
739*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "stidp", IF_S, F_370 | F_390 | F_Z),
740*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "sck", IF_S, F_370 | F_390 | F_Z),
741*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "stck", IF_S, F_370 | F_390 | F_Z),
742*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "sckc", IF_S, F_370 | F_390 | F_Z),
743*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "stckc", IF_S, F_370 | F_390 | F_Z),
744*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "spt", IF_S, F_370 | F_390 | F_Z),
745*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "stpt", IF_S, F_370 | F_390 | F_Z),
746*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "spka", IF_S, F_370 | F_390 | F_Z),
747*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "ipk", IF_S, F_370 | F_390 | F_Z),
748*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "ptlb", IF_S, F_370 | F_390 | F_Z),
749*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "spx", IF_S, F_370 | F_390 | F_Z),
750*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "stpx", IF_S, F_370 | F_390 | F_Z),
751*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "stap", IF_S, F_370 | F_390 | F_Z),
752*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "rrb", IF_S, F_370),
753*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "sie", IF_S, F_390 | F_Z),
754*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "pc", IF_S, F_390 | F_Z),
755*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "sac", IF_S, F_390 | F_Z),
756*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "cfc", IF_S, F_390 | F_Z),
757*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "ipte", IF_RRE, F_390 | F_Z),
758*0472e113SJosef 'Jeff' Sipek INSTR(0x22, "ipm", IF_RRE, F_390 | F_Z),
759*0472e113SJosef 'Jeff' Sipek INSTR(0x23, "ivsk", IF_RRE, F_390 | F_Z),
760*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "iac", IF_RRE, F_390 | F_Z),
761*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "ssar", IF_RRE, F_390 | F_Z),
762*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "epar", IF_RRE, F_390 | F_Z),
763*0472e113SJosef 'Jeff' Sipek INSTR(0x27, "esar", IF_RRE, F_390 | F_Z),
764*0472e113SJosef 'Jeff' Sipek INSTR(0x28, "pt", IF_RRE, F_390 | F_Z),
765*0472e113SJosef 'Jeff' Sipek INSTR(0x29, "iske", IF_RRE, F_390 | F_Z),
766*0472e113SJosef 'Jeff' Sipek INSTR(0x2a, "rrbe", IF_RRE, F_390 | F_Z),
767*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "sske", IF_RRFc, F_390 | F_Z),
768*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "tb", IF_RRE, F_390 | F_Z),
769*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "dxr", IF_RRE, F_390 | F_Z),
770*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "pgin", IF_RRE, F_390 | F_Z),
771*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "pgout", IF_RRE, F_390 | F_Z),
772*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "csch", IF_S, F_Z),
773*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "hsch", IF_S, F_Z),
774*0472e113SJosef 'Jeff' Sipek INSTR(0x32, "msch", IF_S, F_Z),
775*0472e113SJosef 'Jeff' Sipek INSTR(0x33, "ssch", IF_S, F_Z),
776*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "stsch", IF_S, F_Z),
777*0472e113SJosef 'Jeff' Sipek INSTR(0x35, "tsch", IF_S, F_Z),
778*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "tpi", IF_S, F_Z),
779*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "sal", IF_S, F_Z),
780*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "rsch", IF_S, F_Z),
781*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "stcrw", IF_S, F_Z),
782*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "stcps", IF_S, F_Z),
783*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "rchp", IF_S, F_Z),
784*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "schm", IF_S, F_Z),
785*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "bakr", IF_RRE, F_390 | F_Z),
786*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "cksm", IF_RRE, F_390 | F_Z),
787*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "sqdr", IF_RRE, F_390 | F_Z),
788*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "sqer", IF_RRE, F_390 | F_Z),
789*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "stura", IF_RRE, F_390 | F_Z),
790*0472e113SJosef 'Jeff' Sipek INSTR(0x47, "msta", IF_RRE, F_390 | F_Z),
791*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "palb", IF_RRE, F_390 | F_Z),
792*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "ereg", IF_RRE, F_390 | F_Z),
793*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "esta", IF_RRE, F_390 | F_Z),
794*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "lura", IF_RRE, F_390 | F_Z),
795*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "tar", IF_RRE, F_390 | F_Z),
796*0472e113SJosef 'Jeff' Sipek INSTR(0x4d, "cpya", IF_RRE, F_390 | F_Z),
797*0472e113SJosef 'Jeff' Sipek INSTR(0x4e, "sar", IF_RRE, F_390 | F_Z),
798*0472e113SJosef 'Jeff' Sipek INSTR(0x4f, "ear", IF_RRE, F_390 | F_Z),
799*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "csp", IF_RRE, F_390 | F_Z),
800*0472e113SJosef 'Jeff' Sipek INSTR(0x52, "msr", IF_RRE, F_390 | F_Z),
801*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "mvpg", IF_RRE, F_390 | F_Z),
802*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "mvst", IF_RRE, F_390 | F_Z),
803*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "cuse", IF_RRE, F_390 | F_Z),
804*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "bsg", IF_RRE, F_390 | F_Z),
805*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "bsa", IF_RRE, F_390 | F_Z),
806*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "clst", IF_RRE, F_390 | F_Z),
807*0472e113SJosef 'Jeff' Sipek INSTR(0x5e, "srst", IF_RRE, F_390 | F_Z),
808*0472e113SJosef 'Jeff' Sipek INSTR(0x63, "cmpsc", IF_RRE, F_Z),
809*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "xsch", IF_S, F_Z),
810*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "rp", IF_S, F_390 | F_Z),
811*0472e113SJosef 'Jeff' Sipek INSTR(0x78, "stcke", IF_S, F_390 | F_Z),
812*0472e113SJosef 'Jeff' Sipek INSTR(0x79, "sacf", IF_S, F_390 | F_Z),
813*0472e113SJosef 'Jeff' Sipek INSTR(0x7c, "stckf", IF_S, F_Z),
814*0472e113SJosef 'Jeff' Sipek INSTR(0x7d, "stsi", IF_S, F_390 | F_Z),
815*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "srnm", IF_S, F_390 | F_Z),
816*0472e113SJosef 'Jeff' Sipek INSTR(0x9c, "stfpc", IF_S, F_390 | F_Z),
817*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "lfpc", IF_S, F_390 | F_Z),
818*0472e113SJosef 'Jeff' Sipek INSTR(0xa5, "tre", IF_RRE, F_390 | F_Z),
819*0472e113SJosef 'Jeff' Sipek MULTI(0xa6, tbl_b2a6),
820*0472e113SJosef 'Jeff' Sipek MULTI(0xa7, tbl_b2a7),
821*0472e113SJosef 'Jeff' Sipek INSTR(0xb0, "stfle", IF_S, F_Z),
822*0472e113SJosef 'Jeff' Sipek INSTR(0xb1, "stfl", IF_S, F_390 | F_Z),
823*0472e113SJosef 'Jeff' Sipek INSTR(0xb2, "lpswe", IF_S, F_Z),
824*0472e113SJosef 'Jeff' Sipek INSTR(0xb8, "srnmb", IF_S, F_Z),
825*0472e113SJosef 'Jeff' Sipek INSTR(0xb9, "srnmt", IF_S, F_Z),
826*0472e113SJosef 'Jeff' Sipek INSTR(0xbd, "lfas", IF_S, F_Z),
827*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "ppa", IF_RRFc, F_Z),
828*0472e113SJosef 'Jeff' Sipek INSTR(0xec, "etnd", IF_RRE, F_Z),
829*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "tend", IF_S, F_Z),
830*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "niai", IF_IE, F_Z),
831*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "tabort", IF_S, F_Z),
832*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "trap4", IF_S, F_390 | F_Z),
833*0472e113SJosef 'Jeff' Sipek };
834*0472e113SJosef 'Jeff' Sipek
835*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b344[] = {
836*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ledbr", IF_RRE, F_390),
837*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ledbra", IF_RRFe, F_Z),
838*0472e113SJosef 'Jeff' Sipek };
839*0472e113SJosef 'Jeff' Sipek
840*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b345[] = {
841*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ldxbr", IF_RRE, F_390),
842*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ldxbra", IF_RRFe, F_Z),
843*0472e113SJosef 'Jeff' Sipek };
844*0472e113SJosef 'Jeff' Sipek
845*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b346[] = {
846*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "lexbr", IF_RRE, F_390),
847*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "lexbra", IF_RRFe, F_Z),
848*0472e113SJosef 'Jeff' Sipek };
849*0472e113SJosef 'Jeff' Sipek
850*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b347[] = {
851*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "fixbr", IF_RRFe, F_390),
852*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "fixbra", IF_RRFe, F_Z),
853*0472e113SJosef 'Jeff' Sipek };
854*0472e113SJosef 'Jeff' Sipek
855*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b357[] = {
856*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "fiebr", IF_RRFe, F_390),
857*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "fiebre", IF_RRFe, F_Z),
858*0472e113SJosef 'Jeff' Sipek };
859*0472e113SJosef 'Jeff' Sipek
860*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b35f[] = {
861*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "fidbr", IF_RRFe, F_390),
862*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "fidbra", IF_RRFe, F_Z),
863*0472e113SJosef 'Jeff' Sipek };
864*0472e113SJosef 'Jeff' Sipek
865*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b394[] = {
866*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cefbr", IF_RRE, F_390),
867*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cefbra", IF_RRFe, F_Z),
868*0472e113SJosef 'Jeff' Sipek };
869*0472e113SJosef 'Jeff' Sipek
870*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b395[] = {
871*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cdfbr", IF_RRE, F_390),
872*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cdfbra", IF_RRFe, F_Z),
873*0472e113SJosef 'Jeff' Sipek };
874*0472e113SJosef 'Jeff' Sipek
875*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b396[] = {
876*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cxfbr", IF_RRE, F_390),
877*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cxfbra", IF_RRFe, F_Z),
878*0472e113SJosef 'Jeff' Sipek };
879*0472e113SJosef 'Jeff' Sipek
880*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b398[] = {
881*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cfebr", IF_RRFe, F_390),
882*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cfebra", IF_RRFe, F_Z),
883*0472e113SJosef 'Jeff' Sipek };
884*0472e113SJosef 'Jeff' Sipek
885*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b399[] = {
886*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cfdbr", IF_RRFe, F_390),
887*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cfdbra", IF_RRFe, F_Z),
888*0472e113SJosef 'Jeff' Sipek };
889*0472e113SJosef 'Jeff' Sipek
890*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b39a[] = {
891*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cfxbr", IF_RRFe, F_390),
892*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cfxbra", IF_RRFe, F_Z),
893*0472e113SJosef 'Jeff' Sipek };
894*0472e113SJosef 'Jeff' Sipek
895*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b3xx[256] = {
896*0472e113SJosef 'Jeff' Sipek INSTR(0x00, "lpebr", IF_RRE, F_390 | F_Z),
897*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "lnebr", IF_RRE, F_390 | F_Z),
898*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "ltebr", IF_RRE, F_390 | F_Z),
899*0472e113SJosef 'Jeff' Sipek INSTR(0x03, "lcebr", IF_RRE, F_390 | F_Z),
900*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "ldebr", IF_RRE, F_390 | F_Z),
901*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "lxdbr", IF_RRE, F_390 | F_Z),
902*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "lxebr", IF_RRE, F_390 | F_Z),
903*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "mxdbr", IF_RRE, F_390 | F_Z),
904*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "kebr", IF_RRE, F_390 | F_Z),
905*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "cebr", IF_RRE, F_390 | F_Z),
906*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "aebr", IF_RRE, F_390 | F_Z),
907*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "sebr", IF_RRE, F_390 | F_Z),
908*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "mdebr", IF_RRE, F_390 | F_Z),
909*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "debr", IF_RRE, F_390 | F_Z),
910*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "maebr", IF_RRD, F_390 | F_Z),
911*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "msebr", IF_RRD, F_390 | F_Z),
912*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "lpdbr", IF_RRE, F_390 | F_Z),
913*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "lndbr", IF_RRE, F_390 | F_Z),
914*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "ltdbr", IF_RRE, F_390 | F_Z),
915*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lcdbr", IF_RRE, F_390 | F_Z),
916*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "sqebr", IF_RRE, F_390 | F_Z),
917*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "sqdbr", IF_RRE, F_390 | F_Z),
918*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "sqxbr", IF_RRE, F_390 | F_Z),
919*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "meebr", IF_RRE, F_390 | F_Z),
920*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "kdbr", IF_RRE, F_390 | F_Z),
921*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "cdbr", IF_RRE, F_390 | F_Z),
922*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "adbr", IF_RRE, F_390 | F_Z),
923*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "sdbr", IF_RRE, F_390 | F_Z),
924*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "mdbr", IF_RRE, F_390 | F_Z),
925*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "ddbr", IF_RRE, F_390 | F_Z),
926*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "madbr", IF_RRD, F_390 | F_Z),
927*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "msdbr", IF_RRD, F_390 | F_Z),
928*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "lder", IF_RRE, F_390 | F_Z),
929*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "lxdr", IF_RRE, F_390 | F_Z),
930*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "lxer", IF_RRE, F_390 | F_Z),
931*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "maer", IF_RRD, F_390 | F_Z),
932*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "mser", IF_RRD, F_390 | F_Z),
933*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "sqxr", IF_RRE, F_390 | F_Z),
934*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "meer", IF_RRE, F_390 | F_Z),
935*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "maylr", IF_RRD, F_Z),
936*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "mylr", IF_RRD, F_Z),
937*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "mayr", IF_RRD, F_Z),
938*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "myr", IF_RRD, F_Z),
939*0472e113SJosef 'Jeff' Sipek INSTR(0x3c, "mayhr", IF_RRD, F_Z),
940*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "myhr", IF_RRD, F_Z),
941*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "madr", IF_RRD, F_390 | F_Z),
942*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "msdr", IF_RRD, F_390 | F_Z),
943*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "lpxbr", IF_RRE, F_390 | F_Z),
944*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "lnxbr", IF_RRE, F_390 | F_Z),
945*0472e113SJosef 'Jeff' Sipek INSTR(0x42, "ltxbr", IF_RRE, F_390 | F_Z),
946*0472e113SJosef 'Jeff' Sipek INSTR(0x43, "lcxbr", IF_RRE, F_390 | F_Z),
947*0472e113SJosef 'Jeff' Sipek MULTI(0x44, tbl_b344),
948*0472e113SJosef 'Jeff' Sipek MULTI(0x45, tbl_b345),
949*0472e113SJosef 'Jeff' Sipek MULTI(0x46, tbl_b346),
950*0472e113SJosef 'Jeff' Sipek MULTI(0x47, tbl_b347),
951*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "kxbr", IF_RRE, F_390 | F_Z),
952*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "cxbr", IF_RRE, F_390 | F_Z),
953*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "axbr", IF_RRE, F_390 | F_Z),
954*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "sxbr", IF_RRE, F_390 | F_Z),
955*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "mxbr", IF_RRE, F_390 | F_Z),
956*0472e113SJosef 'Jeff' Sipek INSTR(0x4d, "dxbr", IF_RRE, F_390 | F_Z),
957*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "tbedr", IF_RRFe, F_390 | F_Z),
958*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "tbdr", IF_RRFe, F_390 | F_Z),
959*0472e113SJosef 'Jeff' Sipek INSTR(0x53, "diebr", IF_RRFb, F_390 | F_Z),
960*0472e113SJosef 'Jeff' Sipek MULTI(0x57, tbl_b357),
961*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "thder", IF_RRE, F_390 | F_Z),
962*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "thdr", IF_RRE, F_390 | F_Z),
963*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "didbr", IF_RRFe, F_390 | F_Z),
964*0472e113SJosef 'Jeff' Sipek MULTI(0x5f, tbl_b35f),
965*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "lpxr", IF_RRE, F_390 | F_Z),
966*0472e113SJosef 'Jeff' Sipek INSTR(0x61, "lnxr", IF_RRE, F_390 | F_Z),
967*0472e113SJosef 'Jeff' Sipek INSTR(0x62, "ltxr", IF_RRE, F_390 | F_Z),
968*0472e113SJosef 'Jeff' Sipek INSTR(0x63, "lcxr", IF_RRE, F_390 | F_Z),
969*0472e113SJosef 'Jeff' Sipek INSTR(0x65, "lxr", IF_RRE, F_390 | F_Z),
970*0472e113SJosef 'Jeff' Sipek INSTR(0x66, "lexr", IF_RRE, F_390 | F_Z),
971*0472e113SJosef 'Jeff' Sipek INSTR(0x67, "fixr", IF_RRE, F_390 | F_Z),
972*0472e113SJosef 'Jeff' Sipek INSTR(0x69, "cxr", IF_RRE, F_390 | F_Z),
973*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "lpdfr", IF_RRE, F_Z),
974*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "lndfr", IF_RRE, F_Z),
975*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "cpsdr", IF_RRFe, F_Z),
976*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "lcdfr", IF_RRE, F_Z),
977*0472e113SJosef 'Jeff' Sipek INSTR(0x74, "lzer", IF_RRE, F_390 | F_Z),
978*0472e113SJosef 'Jeff' Sipek INSTR(0x75, "lzdr", IF_RRE, F_390 | F_Z),
979*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "lzxr", IF_RRE, F_390 | F_Z),
980*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "fier", IF_RRE, F_390 | F_Z),
981*0472e113SJosef 'Jeff' Sipek INSTR(0x7f, "fidr", IF_RRE, F_390 | F_Z),
982*0472e113SJosef 'Jeff' Sipek INSTR(0x84, "sfpc", IF_RRE, F_390 | F_Z),
983*0472e113SJosef 'Jeff' Sipek INSTR(0x85, "sfasr", IF_RRE, F_Z),
984*0472e113SJosef 'Jeff' Sipek INSTR(0x8c, "efpc", IF_RRE, F_390 | F_Z),
985*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "celfbr", IF_RRFe, F_Z),
986*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "cdlfbr", IF_RRFe, F_Z),
987*0472e113SJosef 'Jeff' Sipek INSTR(0x92, "cxlfbr", IF_RRFe, F_Z),
988*0472e113SJosef 'Jeff' Sipek MULTI(0x94, tbl_b394),
989*0472e113SJosef 'Jeff' Sipek MULTI(0x95, tbl_b395),
990*0472e113SJosef 'Jeff' Sipek MULTI(0x96, tbl_b396),
991*0472e113SJosef 'Jeff' Sipek MULTI(0x98, tbl_b398),
992*0472e113SJosef 'Jeff' Sipek MULTI(0x99, tbl_b399),
993*0472e113SJosef 'Jeff' Sipek MULTI(0x9a, tbl_b39a),
994*0472e113SJosef 'Jeff' Sipek INSTR(0x9c, "clfebr", IF_RRFe, F_Z),
995*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "clfdbr", IF_RRFe, F_Z),
996*0472e113SJosef 'Jeff' Sipek INSTR(0x9e, "clfxbr", IF_RRFe, F_Z),
997*0472e113SJosef 'Jeff' Sipek INSTR(0xa0, "celgbr", IF_RRFe, F_Z),
998*0472e113SJosef 'Jeff' Sipek INSTR(0xa1, "cdlgbr", IF_RRFe, F_Z),
999*0472e113SJosef 'Jeff' Sipek INSTR(0xa2, "cxlgbr", IF_RRFe, F_Z),
1000*0472e113SJosef 'Jeff' Sipek INSTR(0xa4, "cegbra", IF_RRFe, F_Z),
1001*0472e113SJosef 'Jeff' Sipek INSTR(0xa5, "cdgbra", IF_RRFe, F_Z),
1002*0472e113SJosef 'Jeff' Sipek INSTR(0xa6, "cxgbra", IF_RRFe, F_Z),
1003*0472e113SJosef 'Jeff' Sipek INSTR(0xa8, "cgebra", IF_RRFe, F_Z),
1004*0472e113SJosef 'Jeff' Sipek INSTR(0xa9, "cgdbra", IF_RRFe, F_Z),
1005*0472e113SJosef 'Jeff' Sipek INSTR(0xaa, "cgxbra", IF_RRFe, F_Z),
1006*0472e113SJosef 'Jeff' Sipek INSTR(0xac, "clgebr", IF_RRFe, F_Z),
1007*0472e113SJosef 'Jeff' Sipek INSTR(0xad, "clgdbr", IF_RRFe, F_Z),
1008*0472e113SJosef 'Jeff' Sipek INSTR(0xae, "clgxbr", IF_RRFe, F_Z),
1009*0472e113SJosef 'Jeff' Sipek INSTR(0xb4, "cefr", IF_RRE, F_390 | F_Z),
1010*0472e113SJosef 'Jeff' Sipek INSTR(0xb5, "cdfr", IF_RRE, F_390 | F_Z),
1011*0472e113SJosef 'Jeff' Sipek INSTR(0xb6, "cxfr", IF_RRE, F_390 | F_Z),
1012*0472e113SJosef 'Jeff' Sipek INSTR(0xb8, "cfer", IF_RRFe, F_390 | F_Z),
1013*0472e113SJosef 'Jeff' Sipek INSTR(0xb9, "cfdr", IF_RRFe, F_390 | F_Z),
1014*0472e113SJosef 'Jeff' Sipek INSTR(0xba, "cfxr", IF_RRFe, F_390 | F_Z),
1015*0472e113SJosef 'Jeff' Sipek INSTR(0xc1, "ldgr", IF_RRE, F_Z),
1016*0472e113SJosef 'Jeff' Sipek INSTR(0xc4, "cegr", IF_RRE, F_Z),
1017*0472e113SJosef 'Jeff' Sipek INSTR(0xc5, "cdgr", IF_RRE, F_Z),
1018*0472e113SJosef 'Jeff' Sipek INSTR(0xc6, "cxgr", IF_RRE, F_Z),
1019*0472e113SJosef 'Jeff' Sipek INSTR(0xc8, "cger", IF_RRFe, F_Z),
1020*0472e113SJosef 'Jeff' Sipek INSTR(0xc9, "cgdr", IF_RRFe, F_Z),
1021*0472e113SJosef 'Jeff' Sipek INSTR(0xca, "cgxr", IF_RRFe, F_Z),
1022*0472e113SJosef 'Jeff' Sipek INSTR(0xcd, "lgdr", IF_RRE, F_Z),
1023*0472e113SJosef 'Jeff' Sipek INSTR(0xd0, "mdtra", IF_RRFa, F_Z),
1024*0472e113SJosef 'Jeff' Sipek INSTR(0xd1, "ddtra", IF_RRFa, F_Z),
1025*0472e113SJosef 'Jeff' Sipek INSTR(0xd2, "adtra", IF_RRFa, F_Z),
1026*0472e113SJosef 'Jeff' Sipek INSTR(0xd3, "sdtra", IF_RRFa, F_Z),
1027*0472e113SJosef 'Jeff' Sipek INSTR(0xd4, "ldetr", IF_RRFd, F_Z),
1028*0472e113SJosef 'Jeff' Sipek INSTR(0xd5, "ledtr", IF_RRFe, F_Z),
1029*0472e113SJosef 'Jeff' Sipek INSTR(0xd6, "ltdtr", IF_RRE, F_Z),
1030*0472e113SJosef 'Jeff' Sipek INSTR(0xd7, "fidtr", IF_RRFe, F_Z),
1031*0472e113SJosef 'Jeff' Sipek INSTR(0xd8, "mxtra", IF_RRFa, F_Z),
1032*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "dxtra", IF_RRFa, F_Z),
1033*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "axtra", IF_RRFa, F_Z),
1034*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "sxtra", IF_RRFa, F_Z),
1035*0472e113SJosef 'Jeff' Sipek INSTR(0xdc, "lxdtr", IF_RRFd, F_Z),
1036*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "ldxtr", IF_RRFe, F_Z),
1037*0472e113SJosef 'Jeff' Sipek INSTR(0xde, "ltxtr", IF_RRE, F_Z),
1038*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "fixtr", IF_RRFe, F_Z),
1039*0472e113SJosef 'Jeff' Sipek INSTR(0xe0, "kdtr", IF_RRE, F_Z),
1040*0472e113SJosef 'Jeff' Sipek INSTR(0xe1, "cgdtra", IF_RRFe, F_Z),
1041*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "cudtr", IF_RRE, F_Z),
1042*0472e113SJosef 'Jeff' Sipek INSTR(0xe3, "csdtr", IF_RRFd, F_Z),
1043*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "cdtr", IF_RRE, F_Z),
1044*0472e113SJosef 'Jeff' Sipek INSTR(0xe5, "eedtr", IF_RRE, F_Z),
1045*0472e113SJosef 'Jeff' Sipek INSTR(0xe7, "esdtr", IF_RRE, F_Z),
1046*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "kxtr", IF_RRE, F_Z),
1047*0472e113SJosef 'Jeff' Sipek INSTR(0xe9, "cgxtra", IF_RRFe, F_Z),
1048*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "cuxtr", IF_RRE, F_Z),
1049*0472e113SJosef 'Jeff' Sipek INSTR(0xeb, "csxtr", IF_RRFd, F_Z),
1050*0472e113SJosef 'Jeff' Sipek INSTR(0xec, "cxtr", IF_RRE, F_Z),
1051*0472e113SJosef 'Jeff' Sipek INSTR(0xed, "eextr", IF_RRE, F_Z),
1052*0472e113SJosef 'Jeff' Sipek INSTR(0xef, "esxtr", IF_RRE, F_Z),
1053*0472e113SJosef 'Jeff' Sipek INSTR(0xf1, "cdgtra", IF_RRE, F_Z),
1054*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "cdutr", IF_RRE, F_Z),
1055*0472e113SJosef 'Jeff' Sipek INSTR(0xf3, "cdstr", IF_RRE, F_Z),
1056*0472e113SJosef 'Jeff' Sipek INSTR(0xf4, "cedtr", IF_RRE, F_Z),
1057*0472e113SJosef 'Jeff' Sipek INSTR(0xf5, "qadtr", IF_RRFb, F_Z),
1058*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "iedtr", IF_RRFb, F_Z),
1059*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "rrdtr", IF_RRFb, F_Z),
1060*0472e113SJosef 'Jeff' Sipek INSTR(0xf9, "cxgtra", IF_RRE, F_Z),
1061*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "cxutr", IF_RRE, F_Z),
1062*0472e113SJosef 'Jeff' Sipek INSTR(0xfb, "cxstr", IF_RRE, F_Z),
1063*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "cextr", IF_RRE, F_Z),
1064*0472e113SJosef 'Jeff' Sipek INSTR(0xfd, "qaxtr", IF_RRFb, F_Z),
1065*0472e113SJosef 'Jeff' Sipek INSTR(0xfe, "iextr", IF_RRFb, F_Z),
1066*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "rrxtr", IF_RRFb, F_Z),
1067*0472e113SJosef 'Jeff' Sipek };
1068*0472e113SJosef 'Jeff' Sipek
1069*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b9xx[256] = {
1070*0472e113SJosef 'Jeff' Sipek INSTR(0x00, "lpgr", IF_RRE, F_Z),
1071*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "lngr", IF_RRE, F_Z),
1072*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "ltgr", IF_RRE, F_Z),
1073*0472e113SJosef 'Jeff' Sipek INSTR(0x03, "lcgr", IF_RRE, F_Z),
1074*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "lgr", IF_RRE, F_Z),
1075*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "lurag", IF_RRE, F_Z),
1076*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "lgbr", IF_RRE, F_Z),
1077*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "lghr", IF_RRE, F_Z),
1078*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "agr", IF_RRE, F_Z),
1079*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "sgr", IF_RRE, F_Z),
1080*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "algr", IF_RRE, F_Z),
1081*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "slgr", IF_RRE, F_Z),
1082*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "msgr", IF_RRE, F_Z),
1083*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "dsgr", IF_RRE, F_Z),
1084*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "eregg", IF_RRE, F_Z),
1085*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "lrvgr", IF_RRE, F_Z),
1086*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "lpgfr", IF_RRE, F_Z),
1087*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "lngfr", IF_RRE, F_Z),
1088*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "ltgfr", IF_RRE, F_Z),
1089*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lcgfr", IF_RRE, F_Z),
1090*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "lgfr", IF_RRE, F_Z),
1091*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "llgfr", IF_RRE, F_Z),
1092*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "llgtr", IF_RRE, F_Z),
1093*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "agfr", IF_RRE, F_Z),
1094*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "sgfr", IF_RRE, F_Z),
1095*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "algfr", IF_RRE, F_Z),
1096*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "slgfr", IF_RRE, F_Z),
1097*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "msgfr", IF_RRE, F_Z),
1098*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "dsgfr", IF_RRE, F_Z),
1099*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "kmac", IF_RRE, F_390 | F_Z),
1100*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "lrvr", IF_RRE, F_390 | F_Z),
1101*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "cgr", IF_RRE, F_Z),
1102*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "clgr", IF_RRE, F_Z),
1103*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "sturg", IF_RRE, F_Z),
1104*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "lbr", IF_RRE, F_Z),
1105*0472e113SJosef 'Jeff' Sipek INSTR(0x27, "lhr", IF_RRE, F_Z),
1106*0472e113SJosef 'Jeff' Sipek INSTR(0x28, "pckmo", IF_RRE, F_Z),
1107*0472e113SJosef 'Jeff' Sipek INSTR(0x2a, "kmf", IF_RRE, F_Z),
1108*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "kmo", IF_RRE, F_Z),
1109*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "pcc", IF_RRE, F_Z),
1110*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "kmctr", IF_RRFd, F_Z),
1111*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "km", IF_RRE, F_390 | F_Z),
1112*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "kmc", IF_RRE, F_390 | F_Z),
1113*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "cgfr", IF_RRE, F_Z),
1114*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "clgfr", IF_RRE, F_Z),
1115*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "kimd", IF_RRE, F_390 | F_Z),
1116*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "klmd", IF_RRE, F_390 | F_Z),
1117*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "cfdtr", IF_RRFe, F_Z),
1118*0472e113SJosef 'Jeff' Sipek INSTR(0x42, "clgdtr", IF_RRFe, F_Z),
1119*0472e113SJosef 'Jeff' Sipek INSTR(0x43, "clfdtr", IF_RRFe, F_Z),
1120*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "bctgr", IF_RRE, F_Z),
1121*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "cfxtr", IF_RRFe, F_Z),
1122*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "clgxtr", IF_RRFe, F_Z),
1123*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "clfxtr", IF_RRFe, F_Z),
1124*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "cdftr", IF_RRE, F_Z),
1125*0472e113SJosef 'Jeff' Sipek INSTR(0x52, "cdlgtr", IF_RRFe, F_Z),
1126*0472e113SJosef 'Jeff' Sipek INSTR(0x53, "cdlftr", IF_RRFe, F_Z),
1127*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "cxftr", IF_RRE, F_Z),
1128*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "cxlgtr", IF_RRFe, F_Z),
1129*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "cxlftr", IF_RRFe, F_Z),
1130*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "cgrt", IF_RRFc, F_Z),
1131*0472e113SJosef 'Jeff' Sipek INSTR(0x61, "clgrt", IF_RRFc, F_Z),
1132*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "crt", IF_RRFc, F_Z),
1133*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "clrt", IF_RRFc, F_Z),
1134*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "ngr", IF_RRE, F_Z),
1135*0472e113SJosef 'Jeff' Sipek INSTR(0x81, "ogr", IF_RRE, F_Z),
1136*0472e113SJosef 'Jeff' Sipek INSTR(0x82, "xgr", IF_RRE, F_Z),
1137*0472e113SJosef 'Jeff' Sipek INSTR(0x83, "flogr", IF_RRE, F_Z),
1138*0472e113SJosef 'Jeff' Sipek INSTR(0x84, "llgcr", IF_RRE, F_Z),
1139*0472e113SJosef 'Jeff' Sipek INSTR(0x85, "llghr", IF_RRE, F_Z),
1140*0472e113SJosef 'Jeff' Sipek INSTR(0x86, "mlgr", IF_RRE, F_Z),
1141*0472e113SJosef 'Jeff' Sipek INSTR(0x87, "dlgr", IF_RRE, F_Z),
1142*0472e113SJosef 'Jeff' Sipek INSTR(0x88, "alcgr", IF_RRE, F_Z),
1143*0472e113SJosef 'Jeff' Sipek INSTR(0x89, "slbgr", IF_RRE, F_Z),
1144*0472e113SJosef 'Jeff' Sipek INSTR(0x8a, "cspg", IF_RRE, F_Z),
1145*0472e113SJosef 'Jeff' Sipek INSTR(0x8d, "epsw", IF_RRE, F_390 | F_Z),
1146*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "idte", IF_RRFb, F_Z),
1147*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "crdte", IF_RRFb, F_Z),
1148*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "trtt", IF_RRFc, F_390 | F_Z),
1149*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "trto", IF_RRFc, F_390 | F_Z),
1150*0472e113SJosef 'Jeff' Sipek INSTR(0x92, "trot", IF_RRFc, F_390 | F_Z),
1151*0472e113SJosef 'Jeff' Sipek INSTR(0x93, "troo", IF_RRFc, F_390 | F_Z),
1152*0472e113SJosef 'Jeff' Sipek INSTR(0x94, "llcr", IF_RRE, F_Z),
1153*0472e113SJosef 'Jeff' Sipek INSTR(0x95, "llhr", IF_RRE, F_Z),
1154*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "mlr", IF_RRE, F_390 | F_Z),
1155*0472e113SJosef 'Jeff' Sipek INSTR(0x97, "dlr", IF_RRE, F_390 | F_Z),
1156*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "alcr", IF_RRE, F_390 | F_Z),
1157*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "slbr", IF_RRE, F_390 | F_Z),
1158*0472e113SJosef 'Jeff' Sipek INSTR(0x9a, "epair", IF_RRE, F_Z),
1159*0472e113SJosef 'Jeff' Sipek INSTR(0x9b, "esair", IF_RRE, F_Z),
1160*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "esea", IF_RRE, F_Z),
1161*0472e113SJosef 'Jeff' Sipek INSTR(0x9e, "pti", IF_RRE, F_Z),
1162*0472e113SJosef 'Jeff' Sipek INSTR(0x9f, "ssair", IF_RRE, F_Z),
1163*0472e113SJosef 'Jeff' Sipek INSTR(0xa2, "ptf", IF_RRE, F_Z),
1164*0472e113SJosef 'Jeff' Sipek INSTR(0xaa, "lptea", IF_RRFb, F_Z),
1165*0472e113SJosef 'Jeff' Sipek INSTR(0xae, "rrbm", IF_RRE, F_Z),
1166*0472e113SJosef 'Jeff' Sipek INSTR(0xaf, "pfmf", IF_RRE, F_Z),
1167*0472e113SJosef 'Jeff' Sipek INSTR(0xb0, "cu14", IF_RRFc, F_Z),
1168*0472e113SJosef 'Jeff' Sipek INSTR(0xb1, "cu24", IF_RRFc, F_Z),
1169*0472e113SJosef 'Jeff' Sipek INSTR(0xb2, "cu41", IF_RRE, F_Z),
1170*0472e113SJosef 'Jeff' Sipek INSTR(0xb3, "cu42", IF_RRE, F_Z),
1171*0472e113SJosef 'Jeff' Sipek INSTR(0xbd, "trtre", IF_RRFc, F_Z),
1172*0472e113SJosef 'Jeff' Sipek INSTR(0xbe, "srstu", IF_RRE, F_Z),
1173*0472e113SJosef 'Jeff' Sipek INSTR(0xbf, "trte", IF_RRFc, F_Z),
1174*0472e113SJosef 'Jeff' Sipek INSTR(0xc8, "ahhhr", IF_RRFa, F_Z),
1175*0472e113SJosef 'Jeff' Sipek INSTR(0xc9, "shhhr", IF_RRFa, F_Z),
1176*0472e113SJosef 'Jeff' Sipek INSTR(0xca, "alhhhr", IF_RRFa, F_Z),
1177*0472e113SJosef 'Jeff' Sipek INSTR(0xcb, "slhhhr", IF_RRFa, F_Z),
1178*0472e113SJosef 'Jeff' Sipek INSTR(0xcd, "chhr", IF_RRE, F_Z),
1179*0472e113SJosef 'Jeff' Sipek INSTR(0xcf, "clhhr", IF_RRE, F_Z),
1180*0472e113SJosef 'Jeff' Sipek INSTR(0xd8, "ahhlr", IF_RRFa, F_Z),
1181*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "shhlr", IF_RRFa, F_Z),
1182*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "alhhlr", IF_RRFa, F_Z),
1183*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "slhhlr", IF_RRFa, F_Z),
1184*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "chlr", IF_RRE, F_Z),
1185*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "clhlr", IF_RRE, F_Z),
1186*0472e113SJosef 'Jeff' Sipek INSTR(0xe1, "popcnt", IF_RRE, F_Z),
1187*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "locgr", IF_RRFc, F_Z),
1188*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "ngrk", IF_RRFa, F_Z),
1189*0472e113SJosef 'Jeff' Sipek INSTR(0xe6, "ogrk", IF_RRFa, F_Z),
1190*0472e113SJosef 'Jeff' Sipek INSTR(0xe7, "xgrk", IF_RRFa, F_Z),
1191*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "agrk", IF_RRFa, F_Z),
1192*0472e113SJosef 'Jeff' Sipek INSTR(0xe9, "sgrk", IF_RRFa, F_Z),
1193*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "algrk", IF_RRFa, F_Z),
1194*0472e113SJosef 'Jeff' Sipek INSTR(0xeb, "slgrk", IF_RRFa, F_Z),
1195*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "locgr", IF_RRFc, F_Z),
1196*0472e113SJosef 'Jeff' Sipek INSTR(0xf4, "nrk", IF_RRFa, F_Z),
1197*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "ork", IF_RRFa, F_Z),
1198*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "xrk", IF_RRFa, F_Z),
1199*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "ark", IF_RRFa, F_Z),
1200*0472e113SJosef 'Jeff' Sipek INSTR(0xf9, "srk", IF_RRFa, F_Z),
1201*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "alrk", IF_RRFa, F_Z),
1202*0472e113SJosef 'Jeff' Sipek INSTR(0xfb, "slrk", IF_RRFa, F_Z),
1203*0472e113SJosef 'Jeff' Sipek };
1204*0472e113SJosef 'Jeff' Sipek
1205*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c0x[16] = {
1206*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "larl", IF_RILb, F_390 | F_Z),
1207*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "lgfi", IF_RILa, F_Z),
1208*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "brcl", IF_RILc, F_390 | F_Z),
1209*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "brasl", IF_RILb, F_390 | F_Z),
1210*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "xihf", IF_RILa, F_Z),
1211*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "xilf", IF_RILa, F_Z),
1212*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "iihf", IF_RILa, F_Z),
1213*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "iilf", IF_RILa, F_Z),
1214*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "nihf", IF_RILa, F_Z),
1215*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "nilf", IF_RILa, F_Z),
1216*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "oihf", IF_RILa, F_Z),
1217*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "oilf", IF_RILa, F_Z),
1218*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "llihf", IF_RILa, F_Z),
1219*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "llilf", IF_RILa, F_Z),
1220*0472e113SJosef 'Jeff' Sipek };
1221*0472e113SJosef 'Jeff' Sipek
1222*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c2x[16] = {
1223*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "msgfi", IF_RILa, F_Z),
1224*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "msfi", IF_RILa, F_Z),
1225*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "slgfi", IF_RILa, F_Z),
1226*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "slfi", IF_RILa, F_Z),
1227*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "agfi", IF_RILa, F_Z),
1228*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "afi", IF_RILa, F_Z),
1229*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "algfi", IF_RILa, F_Z),
1230*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "alfi", IF_RILa, F_Z),
1231*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "cgfi", IF_RILa, F_Z),
1232*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "cfi", IF_RILa, F_Z),
1233*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "clgfi", IF_RILa, F_Z),
1234*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "clfi", IF_RILa, F_Z),
1235*0472e113SJosef 'Jeff' Sipek };
1236*0472e113SJosef 'Jeff' Sipek
1237*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c4x[16] = {
1238*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "llhrl", IF_RILb, F_Z),
1239*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "lghrl", IF_RILb, F_Z),
1240*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "lhrl", IF_RILb, F_Z),
1241*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "llghrl", IF_RILb, F_Z),
1242*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "sthrl", IF_RILb, F_Z),
1243*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "lgrl", IF_RILb, F_Z),
1244*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "stgrl", IF_RILb, F_Z),
1245*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "lgfrl", IF_RILb, F_Z),
1246*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "lrl", IF_RILb, F_Z),
1247*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "llgfrl", IF_RILb, F_Z),
1248*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "strl", IF_RILb, F_Z),
1249*0472e113SJosef 'Jeff' Sipek };
1250*0472e113SJosef 'Jeff' Sipek
1251*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c6x[16] = {
1252*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "exrl", IF_RILb, F_Z),
1253*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "pfdrl", IF_RILc, F_Z),
1254*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "cghrl", IF_RILb, F_Z),
1255*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "chrl", IF_RILb, F_Z),
1256*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "clghrl", IF_RILb, F_Z),
1257*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "clhrl", IF_RILb, F_Z),
1258*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "cgrl", IF_RILb, F_Z),
1259*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "clgrl", IF_RILb, F_Z),
1260*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "cgfrl", IF_RILb, F_Z),
1261*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "crl", IF_RILb, F_Z),
1262*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "clgfrl", IF_RILb, F_Z),
1263*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "clrl", IF_RILb, F_Z),
1264*0472e113SJosef 'Jeff' Sipek };
1265*0472e113SJosef 'Jeff' Sipek
1266*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c8x[16] = {
1267*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "mvcos", IF_SSF, F_Z),
1268*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "ectg", IF_SSF, F_Z),
1269*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "csst", IF_SSF, F_Z),
1270*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "lpd", IF_SSF, F_Z),
1271*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "lpdg", IF_SSF, F_Z),
1272*0472e113SJosef 'Jeff' Sipek };
1273*0472e113SJosef 'Jeff' Sipek
1274*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_ccx[16] = {
1275*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "brcth", IF_RILb, F_Z),
1276*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "aih", IF_RILa, F_Z),
1277*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "alsih", IF_RILa, F_Z),
1278*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "alsihn", IF_RILa, F_Z),
1279*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "cih", IF_RILa, F_Z),
1280*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "clih", IF_RILa, F_Z),
1281*0472e113SJosef 'Jeff' Sipek };
1282*0472e113SJosef 'Jeff' Sipek
1283*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_e3xx[256] = {
1284*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "ltg", IF_RXYa, F_Z),
1285*0472e113SJosef 'Jeff' Sipek INSTR(0x03, "lrag", IF_RXYa, F_Z),
1286*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "lg", IF_RXYa, F_Z),
1287*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "cvby", IF_RXYa, F_Z),
1288*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "ag", IF_RXYa, F_Z),
1289*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "sg", IF_RXYa, F_Z),
1290*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "alg", IF_RXYa, F_Z),
1291*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "slg", IF_RXYa, F_Z),
1292*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "msg", IF_RXYa, F_Z),
1293*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "dsg", IF_RXYa, F_Z),
1294*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "cvbg", IF_RXYa, F_Z),
1295*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "lrvg", IF_RXYa, F_Z),
1296*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "lt", IF_RXYa, F_Z),
1297*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lray", IF_RXYa, F_Z),
1298*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "lgf", IF_RXYa, F_Z),
1299*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "lgh", IF_RXYa, F_Z),
1300*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "llgf", IF_RXYa, F_Z),
1301*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "llgt", IF_RXYa, F_Z),
1302*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "agf", IF_RXYa, F_Z),
1303*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "sgf", IF_RXYa, F_Z),
1304*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "algf", IF_RXYa, F_Z),
1305*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "slgf", IF_RXYa, F_Z),
1306*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "msgf", IF_RXYa, F_Z),
1307*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "dsgf", IF_RXYa, F_Z),
1308*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "lrv", IF_RXYa, F_390 | F_Z),
1309*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "lrvh", IF_RXYa, F_390 | F_Z),
1310*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "cg", IF_RXYa, F_Z),
1311*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "clg", IF_RXYa, F_Z),
1312*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "stg", IF_RXYa, F_Z),
1313*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "ntstg", IF_RXYa, F_Z),
1314*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "cvdy", IF_RXYa, F_Z),
1315*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "cvdg", IF_RXYa, F_Z),
1316*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "strvg", IF_RXYa, F_Z),
1317*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "cgf", IF_RXYa, F_Z),
1318*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "clgf", IF_RXYa, F_Z),
1319*0472e113SJosef 'Jeff' Sipek INSTR(0x32, "ltgf", IF_RXYa, F_Z),
1320*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "cgh", IF_RXYa, F_Z),
1321*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "pfd", IF_RXYb, F_Z),
1322*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "strv", IF_RXYa, F_390 | F_Z),
1323*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "strvh", IF_RXYa, F_390 | F_Z),
1324*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "bctg", IF_RXYa, F_Z),
1325*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "sty", IF_RXYa, F_Z),
1326*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "msy", IF_RXYa, F_Z),
1327*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "ny", IF_RXYa, F_Z),
1328*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "cly", IF_RXYa, F_Z),
1329*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "oy", IF_RXYa, F_Z),
1330*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "xy", IF_RXYa, F_Z),
1331*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "ly", IF_RXYa, F_Z),
1332*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "cy", IF_RXYa, F_Z),
1333*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "ay", IF_RXYa, F_Z),
1334*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "sy", IF_RXYa, F_Z),
1335*0472e113SJosef 'Jeff' Sipek INSTR(0x5c, "mfy", IF_RXYa, F_Z),
1336*0472e113SJosef 'Jeff' Sipek INSTR(0x5e, "aly", IF_RXYa, F_Z),
1337*0472e113SJosef 'Jeff' Sipek INSTR(0x5f, "sly", IF_RXYa, F_Z),
1338*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "sthy", IF_RXYa, F_Z),
1339*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "lay", IF_RXYa, F_Z),
1340*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "stcy", IF_RXYa, F_Z),
1341*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "icy", IF_RXYa, F_Z),
1342*0472e113SJosef 'Jeff' Sipek INSTR(0x75, "laey", IF_RXYa, F_Z),
1343*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "lb", IF_RXYa, F_Z),
1344*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "lgb", IF_RXYa, F_Z),
1345*0472e113SJosef 'Jeff' Sipek INSTR(0x78, "lhy", IF_RXYa, F_Z),
1346*0472e113SJosef 'Jeff' Sipek INSTR(0x79, "chy", IF_RXYa, F_Z),
1347*0472e113SJosef 'Jeff' Sipek INSTR(0x7a, "ahy", IF_RXYa, F_Z),
1348*0472e113SJosef 'Jeff' Sipek INSTR(0x7b, "shy", IF_RXYa, F_Z),
1349*0472e113SJosef 'Jeff' Sipek INSTR(0x7c, "mhy", IF_RXYa, F_Z),
1350*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "ng", IF_RXYa, F_Z),
1351*0472e113SJosef 'Jeff' Sipek INSTR(0x81, "og", IF_RXYa, F_Z),
1352*0472e113SJosef 'Jeff' Sipek INSTR(0x82, "xg", IF_RXYa, F_Z),
1353*0472e113SJosef 'Jeff' Sipek INSTR(0x85, "lgat", IF_RXYa, F_Z),
1354*0472e113SJosef 'Jeff' Sipek INSTR(0x86, "mlg", IF_RXYa, F_Z),
1355*0472e113SJosef 'Jeff' Sipek INSTR(0x87, "dlg", IF_RXYa, F_Z),
1356*0472e113SJosef 'Jeff' Sipek INSTR(0x88, "alcg", IF_RXYa, F_Z),
1357*0472e113SJosef 'Jeff' Sipek INSTR(0x89, "slbg", IF_RXYa, F_Z),
1358*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "stpq", IF_RXYa, F_Z),
1359*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "lpq", IF_RXYa, F_Z),
1360*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "llgc", IF_RXYa, F_Z),
1361*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "llgh", IF_RXYa, F_Z),
1362*0472e113SJosef 'Jeff' Sipek INSTR(0x94, "llc", IF_RXYa, F_Z),
1363*0472e113SJosef 'Jeff' Sipek INSTR(0x95, "llh", IF_RXYa, F_Z),
1364*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "ml", IF_RXYa, F_390 | F_Z),
1365*0472e113SJosef 'Jeff' Sipek INSTR(0x97, "dl", IF_RXYa, F_390 | F_Z),
1366*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "alc", IF_RXYa, F_390 | F_Z),
1367*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "slb", IF_RXYa, F_390 | F_Z),
1368*0472e113SJosef 'Jeff' Sipek INSTR(0x9c, "llgtat", IF_RXYa, F_Z),
1369*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "llgfat", IF_RXYa, F_Z),
1370*0472e113SJosef 'Jeff' Sipek INSTR(0x9f, "lat", IF_RXYa, F_Z),
1371*0472e113SJosef 'Jeff' Sipek INSTR(0xc0, "lbh", IF_RXYa, F_Z),
1372*0472e113SJosef 'Jeff' Sipek INSTR(0xc2, "llch", IF_RXYa, F_Z),
1373*0472e113SJosef 'Jeff' Sipek INSTR(0xc3, "stch", IF_RXYa, F_Z),
1374*0472e113SJosef 'Jeff' Sipek INSTR(0xc4, "lhh", IF_RXYa, F_Z),
1375*0472e113SJosef 'Jeff' Sipek INSTR(0xc6, "llhh", IF_RXYa, F_Z),
1376*0472e113SJosef 'Jeff' Sipek INSTR(0xc7, "sthh", IF_RXYa, F_Z),
1377*0472e113SJosef 'Jeff' Sipek INSTR(0xc8, "lfhat", IF_RXYa, F_Z),
1378*0472e113SJosef 'Jeff' Sipek INSTR(0xca, "lfh", IF_RXYa, F_Z),
1379*0472e113SJosef 'Jeff' Sipek INSTR(0xcb, "stfh", IF_RXYa, F_Z),
1380*0472e113SJosef 'Jeff' Sipek INSTR(0xcd, "chf", IF_RXYa, F_Z),
1381*0472e113SJosef 'Jeff' Sipek INSTR(0xcf, "clhf", IF_RXYa, F_Z),
1382*0472e113SJosef 'Jeff' Sipek };
1383*0472e113SJosef 'Jeff' Sipek
1384*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_e5xx[256] = {
1385*0472e113SJosef 'Jeff' Sipek INSTR(0x00, "lasp", IF_SSE, F_390 | F_Z),
1386*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "tprot", IF_SSE, F_390 | F_Z),
1387*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "strag", IF_SSE, F_Z),
1388*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "mvcsk", IF_SSE, F_390 | F_Z),
1389*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "mvcdk", IF_SSE, F_390 | F_Z),
1390*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "mvhhi", IF_SIL, F_Z),
1391*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "mvghi", IF_SIL, F_Z),
1392*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "mvhi", IF_SIL, F_Z),
1393*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "chhsi", IF_SIL, F_Z),
1394*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "clhhsi", IF_SIL, F_Z),
1395*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "cghsi", IF_SIL, F_Z),
1396*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "clghsi", IF_SIL, F_Z),
1397*0472e113SJosef 'Jeff' Sipek INSTR(0x5c, "chsi", IF_SIL, F_Z),
1398*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "clfhsi", IF_SIL, F_Z),
1399*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "tbegin", IF_SIL, F_Z),
1400*0472e113SJosef 'Jeff' Sipek INSTR(0x61, "tbeginc", IF_SIL, F_Z),
1401*0472e113SJosef 'Jeff' Sipek };
1402*0472e113SJosef 'Jeff' Sipek
1403*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_ebxx[256] = {
1404*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "lmg", IF_RSYa, F_Z),
1405*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "srag", IF_RSYa, F_Z),
1406*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "slag", IF_RSYa, F_Z),
1407*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "srlg", IF_RSYa, F_Z),
1408*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "sllg", IF_RSYa, F_Z),
1409*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "tracg", IF_RSYa, F_Z),
1410*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "csy", IF_RSYa, F_Z),
1411*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "rllg", IF_RSYa, F_Z),
1412*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "rll", IF_RSYa, F_390 | F_Z),
1413*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "clmh", IF_RSYb, F_Z),
1414*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "clmy", IF_RSYb, F_Z),
1415*0472e113SJosef 'Jeff' Sipek INSTR(0x23, "clt", IF_RSYb, F_Z),
1416*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "stmg", IF_RSYa, F_Z),
1417*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "stctg", IF_RSYa, F_Z | F_CTL_REG),
1418*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "stmh", IF_RSYa, F_Z),
1419*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "clgt", IF_RSYb, F_Z),
1420*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "stcmh", IF_RSYb, F_Z),
1421*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "stcmy", IF_RSYb, F_Z),
1422*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "lctlg", IF_RSYa, F_Z | F_CTL_REG),
1423*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "csg", IF_RSYa, F_Z),
1424*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "cdsy", IF_RSYa, F_Z),
1425*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "cdsg", IF_RSYa, F_Z),
1426*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "bxhg", IF_RSYa, F_Z),
1427*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "bxleg", IF_RSYa, F_Z),
1428*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "ecag", IF_RSYa, F_Z),
1429*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "tmy", IF_SIY, F_Z),
1430*0472e113SJosef 'Jeff' Sipek INSTR(0x52, "mviy", IF_SIY, F_Z),
1431*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "niy", IF_SIY, F_Z),
1432*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "cliy", IF_SIY, F_Z),
1433*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "oiy", IF_SIY, F_Z),
1434*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "xiy", IF_SIY, F_Z),
1435*0472e113SJosef 'Jeff' Sipek INSTR(0x6a, "asi", IF_SIY, F_Z),
1436*0472e113SJosef 'Jeff' Sipek INSTR(0x6e, "alsi", IF_SIY, F_Z),
1437*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "icmh", IF_RSYb, F_Z),
1438*0472e113SJosef 'Jeff' Sipek INSTR(0x81, "icmy", IF_RSYb, F_Z),
1439*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "mvclu", IF_RSYa, F_390 | F_Z),
1440*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "clclu", IF_RSYa, F_390 | F_Z),
1441*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "stmy", IF_RSYa, F_Z),
1442*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "lmh", IF_RSYa, F_Z),
1443*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "lmy", IF_RSYa, F_Z),
1444*0472e113SJosef 'Jeff' Sipek INSTR(0x9a, "lamy", IF_RSYa, F_Z),
1445*0472e113SJosef 'Jeff' Sipek INSTR(0x9b, "stamy", IF_RSYa, F_Z),
1446*0472e113SJosef 'Jeff' Sipek INSTR(0xc0, "tp", IF_RSLa, F_390 | F_Z),
1447*0472e113SJosef 'Jeff' Sipek INSTR(0xdc, "srak", IF_RSYa, F_Z),
1448*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "slak", IF_RSYa, F_Z),
1449*0472e113SJosef 'Jeff' Sipek INSTR(0xde, "srlk", IF_RSYa, F_Z),
1450*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "sllk", IF_RSYa, F_Z),
1451*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "locg", IF_RSYb, F_Z),
1452*0472e113SJosef 'Jeff' Sipek INSTR(0xe3, "stocg", IF_RSYb, F_Z),
1453*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "lang", IF_RSYa, F_Z),
1454*0472e113SJosef 'Jeff' Sipek INSTR(0xe6, "laog", IF_RSYa, F_Z),
1455*0472e113SJosef 'Jeff' Sipek INSTR(0xe7, "laxg", IF_RSYa, F_Z),
1456*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "laag", IF_RSYa, F_Z),
1457*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "laalg", IF_RSYa, F_Z),
1458*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "loc", IF_RSYb, F_Z),
1459*0472e113SJosef 'Jeff' Sipek INSTR(0xf3, "stoc", IF_RSYb, F_Z),
1460*0472e113SJosef 'Jeff' Sipek INSTR(0xf4, "lan", IF_RSYa, F_Z),
1461*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "lao", IF_RSYa, F_Z),
1462*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "lax", IF_RSYa, F_Z),
1463*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "laa", IF_RSYa, F_Z),
1464*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "laal", IF_RSYa, F_Z),
1465*0472e113SJosef 'Jeff' Sipek };
1466*0472e113SJosef 'Jeff' Sipek
1467*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_ecxx[256] = {
1468*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "brxhg", IF_RIEe, F_Z),
1469*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "brxlg", IF_RIEe, F_Z),
1470*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "risblg", IF_RIEf, F_Z),
1471*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "rnsbg", IF_RIEf, F_Z),
1472*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "risbg", IF_RIEf, F_Z),
1473*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "rosbg", IF_RIEf, F_Z),
1474*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "rxsbg", IF_RIEf, F_Z),
1475*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "risbgn", IF_RIEf, F_Z),
1476*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "risbhg", IF_RIEf, F_Z),
1477*0472e113SJosef 'Jeff' Sipek INSTR(0x64, "cgrj", IF_RIEb, F_Z),
1478*0472e113SJosef 'Jeff' Sipek INSTR(0x65, "clgrj", IF_RIEb, F_Z),
1479*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "cgit", IF_RIEa, F_Z),
1480*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "clgit", IF_RIEa, F_Z),
1481*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "cit", IF_RIEa, F_Z),
1482*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "clfit", IF_RIEa, F_Z),
1483*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "crj", IF_RIEb, F_Z),
1484*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "clrj", IF_RIEb, F_Z),
1485*0472e113SJosef 'Jeff' Sipek INSTR(0x7c, "cgij", IF_RIEc, F_Z),
1486*0472e113SJosef 'Jeff' Sipek INSTR(0x7d, "clgij", IF_RIEc, F_Z),
1487*0472e113SJosef 'Jeff' Sipek INSTR(0x7e, "cij", IF_RIEc, F_Z),
1488*0472e113SJosef 'Jeff' Sipek INSTR(0x7f, "clij", IF_RIEc, F_Z),
1489*0472e113SJosef 'Jeff' Sipek INSTR(0xd8, "ahik", IF_RIEd, F_Z),
1490*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "aghik", IF_RIEd, F_Z),
1491*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "alhsik", IF_RIEd, F_Z),
1492*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "alghsik", IF_RIEd, F_Z),
1493*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "cgrb", IF_RRS, F_Z),
1494*0472e113SJosef 'Jeff' Sipek INSTR(0xe5, "clgrb", IF_RRS, F_Z),
1495*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "crb", IF_RRS, F_Z),
1496*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "clrb", IF_RRS, F_Z),
1497*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "cgib", IF_RIS, F_Z),
1498*0472e113SJosef 'Jeff' Sipek INSTR(0xfd, "clgib", IF_RIS, F_Z),
1499*0472e113SJosef 'Jeff' Sipek INSTR(0xfe, "cib", IF_RIS, F_Z),
1500*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "clib", IF_RIS, F_Z),
1501*0472e113SJosef 'Jeff' Sipek };
1502*0472e113SJosef 'Jeff' Sipek
1503*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_edxx[256] = {
1504*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "ldeb", IF_RXE, F_390 | F_Z),
1505*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "lxdb", IF_RXE, F_390 | F_Z),
1506*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "lxeb", IF_RXE, F_390 | F_Z),
1507*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "mxdb", IF_RXE, F_390 | F_Z),
1508*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "keb", IF_RXE, F_390 | F_Z),
1509*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "ceb", IF_RXE, F_390 | F_Z),
1510*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "aeb", IF_RXE, F_390 | F_Z),
1511*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "seb", IF_RXE, F_390 | F_Z),
1512*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "mdeb", IF_RXE, F_390 | F_Z),
1513*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "deb", IF_RXE, F_390 | F_Z),
1514*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "maeb", IF_RXF, F_390 | F_Z),
1515*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "mseb", IF_RXF, F_390 | F_Z),
1516*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "tceb", IF_RXE, F_390 | F_Z),
1517*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "tcdb", IF_RXE, F_390 | F_Z),
1518*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "tcxb", IF_RXE, F_390 | F_Z),
1519*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "sqeb", IF_RXE, F_390 | F_Z),
1520*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "sqdb", IF_RXE, F_390 | F_Z),
1521*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "meeb", IF_RXE, F_390 | F_Z),
1522*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "kdb", IF_RXE, F_390 | F_Z),
1523*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "cdb", IF_RXE, F_390 | F_Z),
1524*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "adb", IF_RXE, F_390 | F_Z),
1525*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "sdb", IF_RXE, F_390 | F_Z),
1526*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "mdb", IF_RXE, F_390 | F_Z),
1527*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "ddb", IF_RXE, F_390 | F_Z),
1528*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "madb", IF_RXF, F_390 | F_Z),
1529*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "msdb", IF_RXF, F_390 | F_Z),
1530*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "lde", IF_RXE, F_390 | F_Z),
1531*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "lxd", IF_RXE, F_390 | F_Z),
1532*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "lxe", IF_RXE, F_390 | F_Z),
1533*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "mae", IF_RXF, F_390 | F_Z),
1534*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "mse", IF_RXF, F_390 | F_Z),
1535*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "sqe", IF_RXE, F_390 | F_Z),
1536*0472e113SJosef 'Jeff' Sipek INSTR(0x35, "sqd", IF_RXE, F_390 | F_Z),
1537*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "mee", IF_RXE, F_390 | F_Z),
1538*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "mayl", IF_RXF, F_Z),
1539*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "myl", IF_RXF, F_Z),
1540*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "may", IF_RXF, F_Z),
1541*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "my", IF_RXF, F_Z),
1542*0472e113SJosef 'Jeff' Sipek INSTR(0x3c, "mayh", IF_RXF, F_Z),
1543*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "myh", IF_RXF, F_Z),
1544*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "mad", IF_RXF, F_390 | F_Z),
1545*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "msd", IF_RXF, F_390 | F_Z),
1546*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "sldt", IF_RXF, F_Z),
1547*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "srdt", IF_RXF, F_Z),
1548*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "slxt", IF_RXF, F_Z),
1549*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "srxt", IF_RXF, F_Z),
1550*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "tdcet", IF_RXE, F_Z),
1551*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "tdget", IF_RXE, F_Z),
1552*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "tdcdt", IF_RXE, F_Z),
1553*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "tdgdt", IF_RXE, F_Z),
1554*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "tdcxt", IF_RXE, F_Z),
1555*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "tdgxt", IF_RXE, F_Z),
1556*0472e113SJosef 'Jeff' Sipek INSTR(0x64, "ley", IF_RXYa, F_Z),
1557*0472e113SJosef 'Jeff' Sipek INSTR(0x65, "ldy", IF_RXYa, F_Z),
1558*0472e113SJosef 'Jeff' Sipek INSTR(0x66, "stey", IF_RXYa, F_Z),
1559*0472e113SJosef 'Jeff' Sipek INSTR(0x67, "stdy", IF_RXYa, F_Z),
1560*0472e113SJosef 'Jeff' Sipek INSTR(0xa8, "czdt", IF_RSLb, F_Z),
1561*0472e113SJosef 'Jeff' Sipek INSTR(0xa9, "czxt", IF_RSLb, F_Z),
1562*0472e113SJosef 'Jeff' Sipek INSTR(0xaa, "cdzt", IF_RSLb, F_Z),
1563*0472e113SJosef 'Jeff' Sipek INSTR(0xab, "cxzt", IF_RSLb, F_Z),
1564*0472e113SJosef 'Jeff' Sipek };
1565*0472e113SJosef 'Jeff' Sipek
1566*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_xx[256] = {
1567*0472e113SJosef 'Jeff' Sipek INSTR(0x00, ".byte", IF_ZERO, F_370 | F_390 | F_Z),
1568*0472e113SJosef 'Jeff' Sipek TABLE(0x01, tbl_01xx, 1, 0, 0xff),
1569*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "spm", IF_RR, F_370 | F_Z),
1570*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "balr", IF_RR, F_370 | F_Z),
1571*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "bctr", IF_RR, F_370 | F_Z),
1572*0472e113SJosef 'Jeff' Sipek TABLE(0x07, tbl_07, 1, 4, 0x0f),
1573*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "ssk", IF_RR, F_370),
1574*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "isk", IF_RR, F_370),
1575*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "svc", IF_I, F_370 | F_390 | F_Z),
1576*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "bsm", IF_RR, F_390 | F_Z),
1577*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "bassm", IF_RR, F_390 | F_Z),
1578*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "basr", IF_RR, F_390 | F_Z),
1579*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "mvcl", IF_RR, F_370 | F_390 | F_Z),
1580*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "clcl", IF_RR, F_370 | F_390 | F_Z),
1581*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "lpr", IF_RR, F_370 | F_390 | F_Z),
1582*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "lnr", IF_RR, F_370 | F_390 | F_Z),
1583*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "ltr", IF_RR, F_370 | F_390 | F_Z),
1584*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lcr", IF_RR, F_370 | F_390 | F_Z),
1585*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "nr", IF_RR, F_370 | F_390 | F_Z),
1586*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "clr", IF_RR, F_370 | F_390 | F_Z),
1587*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "or", IF_RR, F_370 | F_390 | F_Z),
1588*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "xr", IF_RR, F_370 | F_390 | F_Z),
1589*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "lr", IF_RR, F_370 | F_390 | F_Z),
1590*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "cr", IF_RR, F_370 | F_390 | F_Z),
1591*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "ar", IF_RR, F_370 | F_390 | F_Z),
1592*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "sr", IF_RR, F_370 | F_390 | F_Z),
1593*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "mr", IF_RR, F_370 | F_390 | F_Z),
1594*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "dr", IF_RR, F_370 | F_390 | F_Z),
1595*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "alr", IF_RR, F_370 | F_390 | F_Z),
1596*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "slr", IF_RR, F_370 | F_390 | F_Z),
1597*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "lpdr", IF_RR, F_370 | F_390 | F_Z),
1598*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "lndr", IF_RR, F_370 | F_390 | F_Z),
1599*0472e113SJosef 'Jeff' Sipek INSTR(0x22, "ltdr", IF_RR, F_370 | F_390 | F_Z),
1600*0472e113SJosef 'Jeff' Sipek INSTR(0x23, "lcdr", IF_RR, F_370 | F_390 | F_Z),
1601*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "hdr", IF_RR, F_370 | F_390 | F_Z),
1602*0472e113SJosef 'Jeff' Sipek MULTI(0x25, tbl_25),
1603*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "mxr", IF_RR, F_370 | F_390 | F_Z),
1604*0472e113SJosef 'Jeff' Sipek INSTR(0x27, "mxdr", IF_RR, F_370 | F_390 | F_Z),
1605*0472e113SJosef 'Jeff' Sipek INSTR(0x28, "ldr", IF_RR, F_370 | F_390 | F_Z),
1606*0472e113SJosef 'Jeff' Sipek INSTR(0x29, "cdr", IF_RR, F_370 | F_390 | F_Z),
1607*0472e113SJosef 'Jeff' Sipek INSTR(0x2a, "adr", IF_RR, F_370 | F_390 | F_Z),
1608*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "sdr", IF_RR, F_370 | F_390 | F_Z),
1609*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "mdr", IF_RR, F_370 | F_390 | F_Z),
1610*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "ddr", IF_RR, F_370 | F_390 | F_Z),
1611*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "awr", IF_RR, F_370 | F_390 | F_Z),
1612*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "swr", IF_RR, F_370 | F_390 | F_Z),
1613*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "lper", IF_RR, F_370 | F_390 | F_Z),
1614*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "lner", IF_RR, F_370 | F_390 | F_Z),
1615*0472e113SJosef 'Jeff' Sipek INSTR(0x32, "lter", IF_RR, F_370 | F_390 | F_Z),
1616*0472e113SJosef 'Jeff' Sipek INSTR(0x33, "lcer", IF_RR, F_370 | F_390 | F_Z),
1617*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "her", IF_RR, F_370 | F_390 | F_Z),
1618*0472e113SJosef 'Jeff' Sipek MULTI(0x35, tbl_35),
1619*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "axr", IF_RR, F_370 | F_390 | F_Z),
1620*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "sxr", IF_RR, F_370 | F_390 | F_Z),
1621*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "ler", IF_RR, F_370 | F_390 | F_Z),
1622*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "cer", IF_RR, F_370 | F_390 | F_Z),
1623*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "aer", IF_RR, F_370 | F_390 | F_Z),
1624*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "ser", IF_RR, F_370 | F_390 | F_Z),
1625*0472e113SJosef 'Jeff' Sipek MULTI(0x3c, tbl_3c),
1626*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "der", IF_RR, F_370 | F_390 | F_Z),
1627*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "aur", IF_RR, F_370 | F_390 | F_Z),
1628*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "sur", IF_RR, F_370 | F_390 | F_Z),
1629*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "sth", IF_RXa, F_370 | F_390 | F_Z),
1630*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "la", IF_RXa, F_370 | F_390 | F_Z),
1631*0472e113SJosef 'Jeff' Sipek INSTR(0x42, "stc", IF_RXa, F_370 | F_390 | F_Z),
1632*0472e113SJosef 'Jeff' Sipek INSTR(0x43, "ic", IF_RXa, F_370 | F_390 | F_Z),
1633*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "ex", IF_RXa, F_370 | F_390 | F_Z),
1634*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "bal", IF_RXa, F_370 | F_390 | F_Z),
1635*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "bct", IF_RXa, F_370 | F_390 | F_Z),
1636*0472e113SJosef 'Jeff' Sipek TABLE(0x47, tbl_47, 1, 4, 0x0f),
1637*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "lh", IF_RXa, F_370 | F_390 | F_Z),
1638*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "ch", IF_RXa, F_370 | F_390 | F_Z),
1639*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "ah", IF_RXa, F_370 | F_390 | F_Z),
1640*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "sh", IF_RXa, F_370 | F_390 | F_Z),
1641*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "mh", IF_RXa, F_370 | F_390 | F_Z),
1642*0472e113SJosef 'Jeff' Sipek INSTR(0x4d, "bas", IF_RXa, F_390 | F_Z),
1643*0472e113SJosef 'Jeff' Sipek INSTR(0x4e, "cvd", IF_RXa, F_370 | F_390 | F_Z),
1644*0472e113SJosef 'Jeff' Sipek INSTR(0x4f, "cvb", IF_RXa, F_370 | F_390 | F_Z),
1645*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "st", IF_RXa, F_370 | F_390 | F_Z),
1646*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "lae", IF_RXa, F_390 | F_Z),
1647*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "n", IF_RXa, F_370 | F_390 | F_Z),
1648*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "cl", IF_RXa, F_370 | F_390 | F_Z),
1649*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "o", IF_RXa, F_370 | F_390 | F_Z),
1650*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "x", IF_RXa, F_370 | F_390 | F_Z),
1651*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "l", IF_RXa, F_370 | F_390 | F_Z),
1652*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "c", IF_RXa, F_370 | F_390 | F_Z),
1653*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "a", IF_RXa, F_370 | F_390 | F_Z),
1654*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "s", IF_RXa, F_370 | F_390 | F_Z),
1655*0472e113SJosef 'Jeff' Sipek INSTR(0x5c, "m", IF_RXa, F_370 | F_390 | F_Z),
1656*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "d", IF_RXa, F_370 | F_390 | F_Z),
1657*0472e113SJosef 'Jeff' Sipek INSTR(0x5e, "al", IF_RXa, F_370 | F_390 | F_Z),
1658*0472e113SJosef 'Jeff' Sipek INSTR(0x5f, "sl", IF_RXa, F_370 | F_390 | F_Z),
1659*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "std", IF_RXa, F_370 | F_390 | F_Z),
1660*0472e113SJosef 'Jeff' Sipek INSTR(0x67, "mxd", IF_RXa, F_370 | F_390 | F_Z),
1661*0472e113SJosef 'Jeff' Sipek INSTR(0x68, "ld", IF_RXa, F_370 | F_390 | F_Z),
1662*0472e113SJosef 'Jeff' Sipek INSTR(0x69, "cd", IF_RXa, F_370 | F_390 | F_Z),
1663*0472e113SJosef 'Jeff' Sipek INSTR(0x6a, "ad", IF_RXa, F_370 | F_390 | F_Z),
1664*0472e113SJosef 'Jeff' Sipek INSTR(0x6b, "sd", IF_RXa, F_370 | F_390 | F_Z),
1665*0472e113SJosef 'Jeff' Sipek INSTR(0x6c, "md", IF_RXa, F_370 | F_390 | F_Z),
1666*0472e113SJosef 'Jeff' Sipek INSTR(0x6d, "dd", IF_RXa, F_370 | F_390 | F_Z),
1667*0472e113SJosef 'Jeff' Sipek INSTR(0x6e, "aw", IF_RXa, F_370 | F_390 | F_Z),
1668*0472e113SJosef 'Jeff' Sipek INSTR(0x6f, "sw", IF_RXa, F_370 | F_390 | F_Z),
1669*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "ste", IF_RXa, F_370 | F_390 | F_Z),
1670*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "ms", IF_RXa, F_390 | F_Z),
1671*0472e113SJosef 'Jeff' Sipek INSTR(0x78, "le", IF_RXa, F_370 | F_390 | F_Z),
1672*0472e113SJosef 'Jeff' Sipek INSTR(0x79, "ce", IF_RXa, F_370 | F_390 | F_Z),
1673*0472e113SJosef 'Jeff' Sipek INSTR(0x7a, "ae", IF_RXa, F_370 | F_390 | F_Z),
1674*0472e113SJosef 'Jeff' Sipek INSTR(0x7b, "se", IF_RXa, F_370 | F_390 | F_Z),
1675*0472e113SJosef 'Jeff' Sipek MULTI(0x7c, tbl_7c),
1676*0472e113SJosef 'Jeff' Sipek INSTR(0x7d, "de", IF_RXa, F_370 | F_390 | F_Z),
1677*0472e113SJosef 'Jeff' Sipek INSTR(0x7e, "au", IF_RXa, F_370 | F_390 | F_Z),
1678*0472e113SJosef 'Jeff' Sipek INSTR(0x7f, "su", IF_RXa, F_370 | F_390 | F_Z),
1679*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "ssm", IF_S, F_370 | F_390 | F_Z),
1680*0472e113SJosef 'Jeff' Sipek INSTR(0x82, "lpsw", IF_S, F_370 | F_390 | F_Z),
1681*0472e113SJosef 'Jeff' Sipek INSTR(0x83, "diag", IF_DIAG, F_370 | F_390 | F_Z),
1682*0472e113SJosef 'Jeff' Sipek MULTI(0x84, tbl_84),
1683*0472e113SJosef 'Jeff' Sipek MULTI(0x85, tbl_85),
1684*0472e113SJosef 'Jeff' Sipek INSTR(0x86, "bxh", IF_RSa, F_370 | F_390 | F_Z),
1685*0472e113SJosef 'Jeff' Sipek INSTR(0x87, "bxle", IF_RSa, F_370 | F_390 | F_Z),
1686*0472e113SJosef 'Jeff' Sipek INSTR(0x88, "srl", IF_RSa, F_370 | F_390 | F_Z),
1687*0472e113SJosef 'Jeff' Sipek INSTR(0x89, "sll", IF_RSa, F_370 | F_390 | F_Z),
1688*0472e113SJosef 'Jeff' Sipek INSTR(0x8a, "sra", IF_RSa, F_370 | F_390 | F_Z),
1689*0472e113SJosef 'Jeff' Sipek INSTR(0x8b, "sla", IF_RSa, F_370 | F_390 | F_Z),
1690*0472e113SJosef 'Jeff' Sipek INSTR(0x8c, "srdl", IF_RSa, F_370 | F_390 | F_Z),
1691*0472e113SJosef 'Jeff' Sipek INSTR(0x8d, "sldl", IF_RSa, F_370 | F_390 | F_Z),
1692*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "srda", IF_RSa, F_370 | F_390 | F_Z),
1693*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "slda", IF_RSa, F_370 | F_390 | F_Z),
1694*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "stm", IF_RSa, F_370 | F_390 | F_Z),
1695*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "tm", IF_SI, F_370 | F_390 | F_Z),
1696*0472e113SJosef 'Jeff' Sipek INSTR(0x92, "mvi", IF_SI, F_370 | F_390 | F_Z),
1697*0472e113SJosef 'Jeff' Sipek INSTR(0x93, "ts", IF_S, F_370 | F_390 | F_Z),
1698*0472e113SJosef 'Jeff' Sipek INSTR(0x94, "ni", IF_SI, F_370 | F_390 | F_Z),
1699*0472e113SJosef 'Jeff' Sipek INSTR(0x95, "cli", IF_SI, F_370 | F_390 | F_Z),
1700*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "oi", IF_SI, F_370 | F_390 | F_Z),
1701*0472e113SJosef 'Jeff' Sipek INSTR(0x97, "xi", IF_SI, F_370 | F_390 | F_Z),
1702*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "lm", IF_RSa, F_370 | F_390 | F_Z),
1703*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "trace", IF_RSa, F_390 | F_Z),
1704*0472e113SJosef 'Jeff' Sipek INSTR(0x9a, "lam", IF_RSa, F_390 | F_Z),
1705*0472e113SJosef 'Jeff' Sipek INSTR(0x9b, "stam", IF_RSa, F_390 | F_Z),
1706*0472e113SJosef 'Jeff' Sipek TABLE(0xa5, tbl_a5x, 1, 0, 0x0f),
1707*0472e113SJosef 'Jeff' Sipek TABLE(0xa7, tbl_a7x, 1, 0, 0x0f),
1708*0472e113SJosef 'Jeff' Sipek INSTR(0xa8, "mvcle", IF_RSa, F_390 | F_Z),
1709*0472e113SJosef 'Jeff' Sipek INSTR(0xa9, "clcle", IF_RSa, F_390 | F_Z),
1710*0472e113SJosef 'Jeff' Sipek INSTR(0xac, "stnsm", IF_SI, F_370 | F_390 | F_Z),
1711*0472e113SJosef 'Jeff' Sipek INSTR(0xad, "stosm", IF_SI, F_370 | F_390 | F_Z),
1712*0472e113SJosef 'Jeff' Sipek INSTR(0xae, "sigp", IF_RSa, F_370 | F_390 | F_Z),
1713*0472e113SJosef 'Jeff' Sipek INSTR(0xaf, "mc", IF_SI, F_370 | F_390 | F_Z),
1714*0472e113SJosef 'Jeff' Sipek INSTR(0xb1, "lra", IF_RXa, F_370 | F_390 | F_Z),
1715*0472e113SJosef 'Jeff' Sipek TABLE(0xb2, tbl_b2xx, 1, 0, 0xff),
1716*0472e113SJosef 'Jeff' Sipek TABLE(0xb3, tbl_b3xx, 1, 0, 0xff),
1717*0472e113SJosef 'Jeff' Sipek INSTR(0xb6, "stctl", IF_RSa, F_370 | F_390 | F_Z | F_CTL_REG),
1718*0472e113SJosef 'Jeff' Sipek INSTR(0xb7, "lctl", IF_RSa, F_370 | F_390 | F_Z | F_CTL_REG),
1719*0472e113SJosef 'Jeff' Sipek TABLE(0xb9, tbl_b9xx, 1, 0, 0xff),
1720*0472e113SJosef 'Jeff' Sipek INSTR(0xba, "cs", IF_RSa, F_370 | F_390 | F_Z),
1721*0472e113SJosef 'Jeff' Sipek INSTR(0xbb, "cds", IF_RSa, F_370 | F_390 | F_Z),
1722*0472e113SJosef 'Jeff' Sipek INSTR(0xbd, "clm", IF_RSb, F_370 | F_390 | F_Z),
1723*0472e113SJosef 'Jeff' Sipek INSTR(0xbe, "stcm", IF_RSb, F_370 | F_390 | F_Z),
1724*0472e113SJosef 'Jeff' Sipek INSTR(0xbf, "icm", IF_RSb, F_370 | F_390 | F_Z),
1725*0472e113SJosef 'Jeff' Sipek TABLE(0xc0, tbl_c0x, 1, 0, 0x0f),
1726*0472e113SJosef 'Jeff' Sipek TABLE(0xc2, tbl_c2x, 1, 0, 0x0f),
1727*0472e113SJosef 'Jeff' Sipek TABLE(0xc4, tbl_c4x, 1, 0, 0x0f),
1728*0472e113SJosef 'Jeff' Sipek INSTR(0xc5, "bprp", IF_MII, F_Z),
1729*0472e113SJosef 'Jeff' Sipek TABLE(0xc6, tbl_c6x, 1, 0, 0x0f),
1730*0472e113SJosef 'Jeff' Sipek INSTR(0xc7, "bpp", IF_SMI, F_Z),
1731*0472e113SJosef 'Jeff' Sipek TABLE(0xc8, tbl_c8x, 1, 0, 0x0f),
1732*0472e113SJosef 'Jeff' Sipek TABLE(0xcc, tbl_ccx, 1, 0, 0x0f),
1733*0472e113SJosef 'Jeff' Sipek INSTR(0xd0, "trtr", IF_SSa, F_Z),
1734*0472e113SJosef 'Jeff' Sipek INSTR(0xd1, "mvn", IF_SSa, F_370 | F_390 | F_Z),
1735*0472e113SJosef 'Jeff' Sipek INSTR(0xd2, "mvc", IF_SSa, F_370 | F_390 | F_Z),
1736*0472e113SJosef 'Jeff' Sipek INSTR(0xd3, "mvz", IF_SSa, F_370 | F_390 | F_Z),
1737*0472e113SJosef 'Jeff' Sipek INSTR(0xd4, "nc", IF_SSa, F_370 | F_390 | F_Z),
1738*0472e113SJosef 'Jeff' Sipek INSTR(0xd5, "clc", IF_SSa, F_370 | F_390 | F_Z),
1739*0472e113SJosef 'Jeff' Sipek INSTR(0xd6, "oc", IF_SSa, F_370 | F_390 | F_Z),
1740*0472e113SJosef 'Jeff' Sipek INSTR(0xd7, "xc", IF_SSa, F_370 | F_390 | F_Z),
1741*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "mvck", IF_SSd, F_390 | F_Z),
1742*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "mvcp", IF_SSd, F_390 | F_Z),
1743*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "mvcs", IF_SSd, F_390 | F_Z),
1744*0472e113SJosef 'Jeff' Sipek INSTR(0xdc, "tr", IF_SSa, F_370 | F_390 | F_Z),
1745*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "trt", IF_SSa, F_370 | F_390 | F_Z),
1746*0472e113SJosef 'Jeff' Sipek INSTR(0xde, "ed", IF_SSa, F_370 | F_390 | F_Z),
1747*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "edmk", IF_SSa, F_370 | F_390 | F_Z),
1748*0472e113SJosef 'Jeff' Sipek INSTR(0xe1, "pku", IF_SSf, F_390 | F_Z),
1749*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "unpku", IF_SSa, F_390 | F_Z),
1750*0472e113SJosef 'Jeff' Sipek TABLE(0xe3, tbl_e3xx, 5, 0, 0xff),
1751*0472e113SJosef 'Jeff' Sipek TABLE(0xe5, tbl_e5xx, 1, 0, 0xff),
1752*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "mvcin", IF_SSa, F_390 | F_Z),
1753*0472e113SJosef 'Jeff' Sipek INSTR(0xe9, "pka", IF_SSf, F_390 | F_Z),
1754*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "unpka", IF_SSa, F_390 | F_Z),
1755*0472e113SJosef 'Jeff' Sipek TABLE(0xeb, tbl_ebxx, 5, 0, 0xff),
1756*0472e113SJosef 'Jeff' Sipek TABLE(0xec, tbl_ecxx, 5, 0, 0xff),
1757*0472e113SJosef 'Jeff' Sipek TABLE(0xed, tbl_edxx, 5, 0, 0xff),
1758*0472e113SJosef 'Jeff' Sipek INSTR(0xee, "plo", IF_SSe, F_390 | F_Z),
1759*0472e113SJosef 'Jeff' Sipek INSTR(0xef, "lmd", IF_SSe, F_Z),
1760*0472e113SJosef 'Jeff' Sipek INSTR(0xf0, "srp", IF_SSc, F_370 | F_390 | F_Z),
1761*0472e113SJosef 'Jeff' Sipek INSTR(0xf1, "mvo", IF_SSb, F_370 | F_390 | F_Z),
1762*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "pack", IF_SSb, F_370 | F_390 | F_Z),
1763*0472e113SJosef 'Jeff' Sipek INSTR(0xf3, "unpk", IF_SSb, F_370 | F_390 | F_Z),
1764*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "zap", IF_SSb, F_370 | F_390 | F_Z),
1765*0472e113SJosef 'Jeff' Sipek INSTR(0xf9, "cp", IF_SSb, F_370 | F_390 | F_Z),
1766*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "ap", IF_SSb, F_370 | F_390 | F_Z),
1767*0472e113SJosef 'Jeff' Sipek INSTR(0xfb, "sp", IF_SSb, F_370 | F_390 | F_Z),
1768*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "mp", IF_SSb, F_370 | F_390 | F_Z),
1769*0472e113SJosef 'Jeff' Sipek INSTR(0xfd, "dp", IF_SSb, F_370 | F_390 | F_Z),
1770*0472e113SJosef 'Jeff' Sipek };
1771*0472e113SJosef 'Jeff' Sipek /* END CSTYLED */
1772*0472e113SJosef 'Jeff' Sipek
1773*0472e113SJosef 'Jeff' Sipek /* how masks are printed */
1774*0472e113SJosef 'Jeff' Sipek static const char *M[16] = {
1775*0472e113SJosef 'Jeff' Sipek "0", "1", "2", "3", "4", "5", "6", "7",
1776*0472e113SJosef 'Jeff' Sipek "8", "9", "10", "11", "12", "13", "14", "15",
1777*0472e113SJosef 'Jeff' Sipek };
1778*0472e113SJosef 'Jeff' Sipek
1779*0472e113SJosef 'Jeff' Sipek /* how general purpose regs are printed */
1780*0472e113SJosef 'Jeff' Sipek static const char *R[16] = {
1781*0472e113SJosef 'Jeff' Sipek "%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7",
1782*0472e113SJosef 'Jeff' Sipek "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15",
1783*0472e113SJosef 'Jeff' Sipek };
1784*0472e113SJosef 'Jeff' Sipek
1785*0472e113SJosef 'Jeff' Sipek /* how control regs are printed */
1786*0472e113SJosef 'Jeff' Sipek static const char *C[16] = {
1787*0472e113SJosef 'Jeff' Sipek "%c0", "%c1", "%c2", "%c3", "%c4", "%c5", "%c6", "%c7",
1788*0472e113SJosef 'Jeff' Sipek "%c8", "%c9", "%c10", "%c11", "%c12", "%c13", "%c14", "%c15",
1789*0472e113SJosef 'Jeff' Sipek };
1790*0472e113SJosef 'Jeff' Sipek
1791*0472e113SJosef 'Jeff' Sipek /* B and X registers are still registers - print them the same way */
1792*0472e113SJosef 'Jeff' Sipek #define B R
1793*0472e113SJosef 'Jeff' Sipek #define X R
1794*0472e113SJosef 'Jeff' Sipek
1795*0472e113SJosef 'Jeff' Sipek static inline uint32_t
val_8_4_8(uint32_t hi,uint32_t mid,uint32_t lo)1796*0472e113SJosef 'Jeff' Sipek val_8_4_8(uint32_t hi, uint32_t mid, uint32_t lo)
1797*0472e113SJosef 'Jeff' Sipek {
1798*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xff);
1799*0472e113SJosef 'Jeff' Sipek ASSERT0(mid & ~0xf);
1800*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xff);
1801*0472e113SJosef 'Jeff' Sipek return ((hi << 12) | (mid << 8) | lo);
1802*0472e113SJosef 'Jeff' Sipek }
1803*0472e113SJosef 'Jeff' Sipek
1804*0472e113SJosef 'Jeff' Sipek static inline uint32_t
val_16_16(uint32_t hi,uint32_t lo)1805*0472e113SJosef 'Jeff' Sipek val_16_16(uint32_t hi, uint32_t lo)
1806*0472e113SJosef 'Jeff' Sipek {
1807*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xffff);
1808*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xffff);
1809*0472e113SJosef 'Jeff' Sipek return ((BE_16(hi) << 16) | BE_16(lo));
1810*0472e113SJosef 'Jeff' Sipek }
1811*0472e113SJosef 'Jeff' Sipek
1812*0472e113SJosef 'Jeff' Sipek static inline int32_t
sval_16_16(uint32_t hi,uint32_t lo)1813*0472e113SJosef 'Jeff' Sipek sval_16_16(uint32_t hi, uint32_t lo)
1814*0472e113SJosef 'Jeff' Sipek {
1815*0472e113SJosef 'Jeff' Sipek return (val_16_16(hi, lo));
1816*0472e113SJosef 'Jeff' Sipek }
1817*0472e113SJosef 'Jeff' Sipek
1818*0472e113SJosef 'Jeff' Sipek static inline uint32_t
val_8_16(uint32_t hi,uint32_t lo)1819*0472e113SJosef 'Jeff' Sipek val_8_16(uint32_t hi, uint32_t lo)
1820*0472e113SJosef 'Jeff' Sipek {
1821*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xff);
1822*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xffff);
1823*0472e113SJosef 'Jeff' Sipek return ((hi << 16) | BE_16(lo));
1824*0472e113SJosef 'Jeff' Sipek }
1825*0472e113SJosef 'Jeff' Sipek
1826*0472e113SJosef 'Jeff' Sipek static inline int32_t
sval_8_16(uint32_t hi,uint32_t lo)1827*0472e113SJosef 'Jeff' Sipek sval_8_16(uint32_t hi, uint32_t lo)
1828*0472e113SJosef 'Jeff' Sipek {
1829*0472e113SJosef 'Jeff' Sipek int32_t tmp = val_8_16(hi, lo);
1830*0472e113SJosef 'Jeff' Sipek
1831*0472e113SJosef 'Jeff' Sipek /* sign extend */
1832*0472e113SJosef 'Jeff' Sipek if (tmp & 0x00800000)
1833*0472e113SJosef 'Jeff' Sipek return (0xff000000 | tmp);
1834*0472e113SJosef 'Jeff' Sipek return (tmp);
1835*0472e113SJosef 'Jeff' Sipek }
1836*0472e113SJosef 'Jeff' Sipek
1837*0472e113SJosef 'Jeff' Sipek static inline uint32_t
val_4_8(uint32_t hi,uint32_t lo)1838*0472e113SJosef 'Jeff' Sipek val_4_8(uint32_t hi, uint32_t lo)
1839*0472e113SJosef 'Jeff' Sipek {
1840*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xf);
1841*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xff);
1842*0472e113SJosef 'Jeff' Sipek return ((hi << 8) | lo);
1843*0472e113SJosef 'Jeff' Sipek }
1844*0472e113SJosef 'Jeff' Sipek
1845*0472e113SJosef 'Jeff' Sipek static inline int32_t
sval_4_8(uint32_t hi,uint32_t lo)1846*0472e113SJosef 'Jeff' Sipek sval_4_8(uint32_t hi, uint32_t lo)
1847*0472e113SJosef 'Jeff' Sipek {
1848*0472e113SJosef 'Jeff' Sipek uint32_t tmp = val_4_8(hi, lo);
1849*0472e113SJosef 'Jeff' Sipek
1850*0472e113SJosef 'Jeff' Sipek /* sign extend */
1851*0472e113SJosef 'Jeff' Sipek if (tmp & 0x800)
1852*0472e113SJosef 'Jeff' Sipek return (0xfffff000 | tmp);
1853*0472e113SJosef 'Jeff' Sipek return (tmp);
1854*0472e113SJosef 'Jeff' Sipek }
1855*0472e113SJosef 'Jeff' Sipek
1856*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1857*0472e113SJosef 'Jeff' Sipek static void
fmt_zero(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1858*0472e113SJosef 'Jeff' Sipek fmt_zero(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1859*0472e113SJosef 'Jeff' Sipek {
1860*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "0x00, 0x00");
1861*0472e113SJosef 'Jeff' Sipek }
1862*0472e113SJosef 'Jeff' Sipek
1863*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1864*0472e113SJosef 'Jeff' Sipek static void
fmt_diag(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1865*0472e113SJosef 'Jeff' Sipek fmt_diag(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1866*0472e113SJosef 'Jeff' Sipek {
1867*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%#x",
1868*0472e113SJosef 'Jeff' Sipek val_8_16(inst->diag.par1, inst->diag.par2));
1869*0472e113SJosef 'Jeff' Sipek }
1870*0472e113SJosef 'Jeff' Sipek
1871*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1872*0472e113SJosef 'Jeff' Sipek static void
fmt_e(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1873*0472e113SJosef 'Jeff' Sipek fmt_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1874*0472e113SJosef 'Jeff' Sipek {
1875*0472e113SJosef 'Jeff' Sipek /* nothing to do */
1876*0472e113SJosef 'Jeff' Sipek }
1877*0472e113SJosef 'Jeff' Sipek
1878*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1879*0472e113SJosef 'Jeff' Sipek static void
fmt_i(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1880*0472e113SJosef 'Jeff' Sipek fmt_i(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1881*0472e113SJosef 'Jeff' Sipek {
1882*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%#x", inst->i.i);
1883*0472e113SJosef 'Jeff' Sipek }
1884*0472e113SJosef 'Jeff' Sipek
1885*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1886*0472e113SJosef 'Jeff' Sipek static void
fmt_ie(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1887*0472e113SJosef 'Jeff' Sipek fmt_ie(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1888*0472e113SJosef 'Jeff' Sipek {
1889*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u,%u", inst->ie.i1, inst->ie.i2);
1890*0472e113SJosef 'Jeff' Sipek }
1891*0472e113SJosef 'Jeff' Sipek
1892*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1893*0472e113SJosef 'Jeff' Sipek static void
fmt_mii(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1894*0472e113SJosef 'Jeff' Sipek fmt_mii(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1895*0472e113SJosef 'Jeff' Sipek {
1896*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * sval_4_8(inst->mii.ri2h, inst->mii.ri2l);
1897*0472e113SJosef 'Jeff' Sipek uint64_t ri3 = addr + 2 * sval_8_16(inst->mii.ri3h, inst->mii.ri3l);
1898*0472e113SJosef 'Jeff' Sipek
1899*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x,%#x", M[inst->mii.m1], ri2, ri3);
1900*0472e113SJosef 'Jeff' Sipek }
1901*0472e113SJosef 'Jeff' Sipek
1902*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1903*0472e113SJosef 'Jeff' Sipek static void
fmt_ril_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1904*0472e113SJosef 'Jeff' Sipek fmt_ril_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1905*0472e113SJosef 'Jeff' Sipek {
1906*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u", R[inst->ril_a.r1],
1907*0472e113SJosef 'Jeff' Sipek val_16_16(inst->ril_a.i2h, inst->ril_a.i2l));
1908*0472e113SJosef 'Jeff' Sipek }
1909*0472e113SJosef 'Jeff' Sipek
1910*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1911*0472e113SJosef 'Jeff' Sipek static void
fmt_ril_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1912*0472e113SJosef 'Jeff' Sipek fmt_ril_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1913*0472e113SJosef 'Jeff' Sipek {
1914*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 *
1915*0472e113SJosef 'Jeff' Sipek sval_16_16(inst->ril_b.ri2h, inst->ril_b.ri2l);
1916*0472e113SJosef 'Jeff' Sipek
1917*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", R[inst->ril_b.r1], ri2);
1918*0472e113SJosef 'Jeff' Sipek }
1919*0472e113SJosef 'Jeff' Sipek
1920*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1921*0472e113SJosef 'Jeff' Sipek static void
fmt_ril_c(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1922*0472e113SJosef 'Jeff' Sipek fmt_ril_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1923*0472e113SJosef 'Jeff' Sipek {
1924*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 *
1925*0472e113SJosef 'Jeff' Sipek sval_16_16(inst->ril_c.ri2h, inst->ril_c.ri2l);
1926*0472e113SJosef 'Jeff' Sipek
1927*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", M[inst->ril_c.m1], ri2);
1928*0472e113SJosef 'Jeff' Sipek }
1929*0472e113SJosef 'Jeff' Sipek
1930*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1931*0472e113SJosef 'Jeff' Sipek static void
fmt_ris(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1932*0472e113SJosef 'Jeff' Sipek fmt_ris(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1933*0472e113SJosef 'Jeff' Sipek {
1934*0472e113SJosef 'Jeff' Sipek uint32_t d4 = val_4_8(inst->ris.d4h, inst->ris.d4l);
1935*0472e113SJosef 'Jeff' Sipek
1936*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u,%s,%u(%s)",
1937*0472e113SJosef 'Jeff' Sipek R[inst->ris.r1], inst->ris.i2, M[inst->ris.m3], d4,
1938*0472e113SJosef 'Jeff' Sipek B[inst->ris.b4]);
1939*0472e113SJosef 'Jeff' Sipek }
1940*0472e113SJosef 'Jeff' Sipek
1941*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1942*0472e113SJosef 'Jeff' Sipek static void
fmt_ri_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1943*0472e113SJosef 'Jeff' Sipek fmt_ri_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1944*0472e113SJosef 'Jeff' Sipek {
1945*0472e113SJosef 'Jeff' Sipek uint16_t i2 = BE_16(inst->ri_a.i2);
1946*0472e113SJosef 'Jeff' Sipek
1947*0472e113SJosef 'Jeff' Sipek if (flags & F_SIGNED_IMM)
1948*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%d", R[inst->ri_a.r1],
1949*0472e113SJosef 'Jeff' Sipek (int16_t)i2);
1950*0472e113SJosef 'Jeff' Sipek else
1951*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u", R[inst->ri_a.r1],
1952*0472e113SJosef 'Jeff' Sipek i2);
1953*0472e113SJosef 'Jeff' Sipek }
1954*0472e113SJosef 'Jeff' Sipek
1955*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1956*0472e113SJosef 'Jeff' Sipek static void
fmt_ri_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1957*0472e113SJosef 'Jeff' Sipek fmt_ri_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1958*0472e113SJosef 'Jeff' Sipek {
1959*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->ri_b.ri2);
1960*0472e113SJosef 'Jeff' Sipek
1961*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", R[inst->ri_b.r1], ri2);
1962*0472e113SJosef 'Jeff' Sipek }
1963*0472e113SJosef 'Jeff' Sipek
1964*0472e113SJosef 'Jeff' Sipek static void
fmt_ri_c(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1965*0472e113SJosef 'Jeff' Sipek fmt_ri_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1966*0472e113SJosef 'Jeff' Sipek {
1967*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->ri_c.ri2);
1968*0472e113SJosef 'Jeff' Sipek
1969*0472e113SJosef 'Jeff' Sipek if (flags & F_HIDE_MASK)
1970*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%#x", ri2);
1971*0472e113SJosef 'Jeff' Sipek else
1972*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", M[inst->ri_c.m1], ri2);
1973*0472e113SJosef 'Jeff' Sipek }
1974*0472e113SJosef 'Jeff' Sipek
1975*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1976*0472e113SJosef 'Jeff' Sipek static void
fmt_rie_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1977*0472e113SJosef 'Jeff' Sipek fmt_rie_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1978*0472e113SJosef 'Jeff' Sipek {
1979*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u,%s", R[inst->rie_a.r1],
1980*0472e113SJosef 'Jeff' Sipek BE_16(inst->rie_a.i2), M[inst->rie_a.m3]);
1981*0472e113SJosef 'Jeff' Sipek }
1982*0472e113SJosef 'Jeff' Sipek
1983*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1984*0472e113SJosef 'Jeff' Sipek static void
fmt_rie_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1985*0472e113SJosef 'Jeff' Sipek fmt_rie_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1986*0472e113SJosef 'Jeff' Sipek {
1987*0472e113SJosef 'Jeff' Sipek uint64_t ri4 = addr + 2 * (int16_t)BE_16(inst->rie_b.ri4);
1988*0472e113SJosef 'Jeff' Sipek
1989*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s,%#x", R[inst->rie_b.r1],
1990*0472e113SJosef 'Jeff' Sipek R[inst->rie_b.r2], M[inst->rie_b.m3], ri4);
1991*0472e113SJosef 'Jeff' Sipek }
1992*0472e113SJosef 'Jeff' Sipek
1993*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
1994*0472e113SJosef 'Jeff' Sipek static void
fmt_rie_c(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)1995*0472e113SJosef 'Jeff' Sipek fmt_rie_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
1996*0472e113SJosef 'Jeff' Sipek {
1997*0472e113SJosef 'Jeff' Sipek uint64_t ri4 = addr + 2 * (int16_t)BE_16(inst->rie_c.ri4);
1998*0472e113SJosef 'Jeff' Sipek
1999*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u,%s,%#x", R[inst->rie_c.r1],
2000*0472e113SJosef 'Jeff' Sipek inst->rie_c.i2, M[inst->rie_c.m3], ri4);
2001*0472e113SJosef 'Jeff' Sipek }
2002*0472e113SJosef 'Jeff' Sipek
2003*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2004*0472e113SJosef 'Jeff' Sipek static void
fmt_rie_d(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2005*0472e113SJosef 'Jeff' Sipek fmt_rie_d(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2006*0472e113SJosef 'Jeff' Sipek {
2007*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u", R[inst->rie_d.r1],
2008*0472e113SJosef 'Jeff' Sipek R[inst->rie_d.r3], BE_16(inst->rie_d.i2));
2009*0472e113SJosef 'Jeff' Sipek }
2010*0472e113SJosef 'Jeff' Sipek
2011*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2012*0472e113SJosef 'Jeff' Sipek static void
fmt_rie_e(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2013*0472e113SJosef 'Jeff' Sipek fmt_rie_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2014*0472e113SJosef 'Jeff' Sipek {
2015*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->rie_e.ri2);
2016*0472e113SJosef 'Jeff' Sipek
2017*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%#x", R[inst->rie_e.r1],
2018*0472e113SJosef 'Jeff' Sipek R[inst->rie_e.r3], ri2);
2019*0472e113SJosef 'Jeff' Sipek }
2020*0472e113SJosef 'Jeff' Sipek
2021*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2022*0472e113SJosef 'Jeff' Sipek static void
fmt_rie_f(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2023*0472e113SJosef 'Jeff' Sipek fmt_rie_f(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2024*0472e113SJosef 'Jeff' Sipek {
2025*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u,%u,%u", R[inst->rie_f.r1],
2026*0472e113SJosef 'Jeff' Sipek R[inst->rie_f.r2], inst->rie_f.i3, inst->rie_f.i4,
2027*0472e113SJosef 'Jeff' Sipek inst->rie_f.i5);
2028*0472e113SJosef 'Jeff' Sipek }
2029*0472e113SJosef 'Jeff' Sipek
2030*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2031*0472e113SJosef 'Jeff' Sipek static void
fmt_rre(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2032*0472e113SJosef 'Jeff' Sipek fmt_rre(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2033*0472e113SJosef 'Jeff' Sipek {
2034*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s", R[inst->rre.r1], R[inst->rre.r2]);
2035*0472e113SJosef 'Jeff' Sipek }
2036*0472e113SJosef 'Jeff' Sipek
2037*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2038*0472e113SJosef 'Jeff' Sipek static void
fmt_rrf_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2039*0472e113SJosef 'Jeff' Sipek fmt_rrf_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2040*0472e113SJosef 'Jeff' Sipek {
2041*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s",
2042*0472e113SJosef 'Jeff' Sipek R[inst->rrf_ab.r1], R[inst->rrf_ab.r2], R[inst->rrf_ab.r3]);
2043*0472e113SJosef 'Jeff' Sipek }
2044*0472e113SJosef 'Jeff' Sipek
2045*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2046*0472e113SJosef 'Jeff' Sipek static void
fmt_rrf_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2047*0472e113SJosef 'Jeff' Sipek fmt_rrf_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2048*0472e113SJosef 'Jeff' Sipek {
2049*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s",
2050*0472e113SJosef 'Jeff' Sipek R[inst->rrf_ab.r1], R[inst->rrf_ab.r3], R[inst->rrf_ab.r2]);
2051*0472e113SJosef 'Jeff' Sipek }
2052*0472e113SJosef 'Jeff' Sipek
2053*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2054*0472e113SJosef 'Jeff' Sipek static void
fmt_rrf_c(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2055*0472e113SJosef 'Jeff' Sipek fmt_rrf_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2056*0472e113SJosef 'Jeff' Sipek {
2057*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s",
2058*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r1], R[inst->rrf_cde.r2], M[inst->rrf_cde.m3]);
2059*0472e113SJosef 'Jeff' Sipek }
2060*0472e113SJosef 'Jeff' Sipek
2061*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2062*0472e113SJosef 'Jeff' Sipek static void
fmt_rrf_d(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2063*0472e113SJosef 'Jeff' Sipek fmt_rrf_d(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2064*0472e113SJosef 'Jeff' Sipek {
2065*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s",
2066*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r1], R[inst->rrf_cde.r2], M[inst->rrf_cde.m4]);
2067*0472e113SJosef 'Jeff' Sipek }
2068*0472e113SJosef 'Jeff' Sipek
2069*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2070*0472e113SJosef 'Jeff' Sipek static void
fmt_rrf_e(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2071*0472e113SJosef 'Jeff' Sipek fmt_rrf_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2072*0472e113SJosef 'Jeff' Sipek {
2073*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s,%s",
2074*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r1], M[inst->rrf_cde.m3],
2075*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r2], M[inst->rrf_cde.m4]);
2076*0472e113SJosef 'Jeff' Sipek }
2077*0472e113SJosef 'Jeff' Sipek
2078*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2079*0472e113SJosef 'Jeff' Sipek static void
fmt_rrs(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2080*0472e113SJosef 'Jeff' Sipek fmt_rrs(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2081*0472e113SJosef 'Jeff' Sipek {
2082*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s,%u(%s)", R[inst->rrs.r1],
2083*0472e113SJosef 'Jeff' Sipek R[inst->rrs.r2], M[inst->rrs.m3],
2084*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rrs.d4h, inst->rrs.d4l), B[inst->rrs.b4]);
2085*0472e113SJosef 'Jeff' Sipek }
2086*0472e113SJosef 'Jeff' Sipek
2087*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2088*0472e113SJosef 'Jeff' Sipek static void
fmt_rr(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2089*0472e113SJosef 'Jeff' Sipek fmt_rr(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2090*0472e113SJosef 'Jeff' Sipek {
2091*0472e113SJosef 'Jeff' Sipek /* a branch uses r1 as a mask */
2092*0472e113SJosef 'Jeff' Sipek if (flags & F_HIDE_MASK)
2093*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s", R[inst->rr.r2]);
2094*0472e113SJosef 'Jeff' Sipek else if (flags & F_R1_IS_MASK)
2095*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s", M[inst->rr.r1],
2096*0472e113SJosef 'Jeff' Sipek R[inst->rr.r2]);
2097*0472e113SJosef 'Jeff' Sipek else
2098*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s", R[inst->rr.r1],
2099*0472e113SJosef 'Jeff' Sipek R[inst->rr.r2]);
2100*0472e113SJosef 'Jeff' Sipek }
2101*0472e113SJosef 'Jeff' Sipek
2102*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2103*0472e113SJosef 'Jeff' Sipek static void
fmt_rrd(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2104*0472e113SJosef 'Jeff' Sipek fmt_rrd(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2105*0472e113SJosef 'Jeff' Sipek {
2106*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s", R[inst->rrd.r1],
2107*0472e113SJosef 'Jeff' Sipek R[inst->rrd.r3], R[inst->rrd.r2]);
2108*0472e113SJosef 'Jeff' Sipek }
2109*0472e113SJosef 'Jeff' Sipek
2110*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2111*0472e113SJosef 'Jeff' Sipek static void
fmt_rx_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2112*0472e113SJosef 'Jeff' Sipek fmt_rx_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2113*0472e113SJosef 'Jeff' Sipek {
2114*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rx_a.d2h, inst->rx_b.d2l);
2115*0472e113SJosef 'Jeff' Sipek
2116*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", R[inst->rx_a.r1],
2117*0472e113SJosef 'Jeff' Sipek d2, X[inst->rx_a.x2], B[inst->rx_a.b2]);
2118*0472e113SJosef 'Jeff' Sipek }
2119*0472e113SJosef 'Jeff' Sipek
2120*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2121*0472e113SJosef 'Jeff' Sipek static void
fmt_rx_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2122*0472e113SJosef 'Jeff' Sipek fmt_rx_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2123*0472e113SJosef 'Jeff' Sipek {
2124*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rx_b.d2h, inst->rx_b.d2l);
2125*0472e113SJosef 'Jeff' Sipek
2126*0472e113SJosef 'Jeff' Sipek if (flags & F_HIDE_MASK)
2127*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s,%s)",
2128*0472e113SJosef 'Jeff' Sipek d2, X[inst->rx_b.x2], B[inst->rx_b.b2]);
2129*0472e113SJosef 'Jeff' Sipek else
2130*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", M[inst->rx_b.m1],
2131*0472e113SJosef 'Jeff' Sipek d2, X[inst->rx_b.x2], B[inst->rx_b.b2]);
2132*0472e113SJosef 'Jeff' Sipek }
2133*0472e113SJosef 'Jeff' Sipek
2134*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2135*0472e113SJosef 'Jeff' Sipek static void
fmt_rxe(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2136*0472e113SJosef 'Jeff' Sipek fmt_rxe(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2137*0472e113SJosef 'Jeff' Sipek {
2138*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rxe.d2h, inst->rxe.d2l);
2139*0472e113SJosef 'Jeff' Sipek
2140*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)",
2141*0472e113SJosef 'Jeff' Sipek R[inst->rxe.r1], d2, X[inst->rxe.x2], B[inst->rxe.b2]);
2142*0472e113SJosef 'Jeff' Sipek }
2143*0472e113SJosef 'Jeff' Sipek
2144*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2145*0472e113SJosef 'Jeff' Sipek static void
fmt_rxf(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2146*0472e113SJosef 'Jeff' Sipek fmt_rxf(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2147*0472e113SJosef 'Jeff' Sipek {
2148*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rxf.d2h, inst->rxf.d2l);
2149*0472e113SJosef 'Jeff' Sipek
2150*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s,%s)",
2151*0472e113SJosef 'Jeff' Sipek R[inst->rxf.r1], R[inst->rxf.r3], d2, X[inst->rxf.x2],
2152*0472e113SJosef 'Jeff' Sipek B[inst->rxf.b2]);
2153*0472e113SJosef 'Jeff' Sipek }
2154*0472e113SJosef 'Jeff' Sipek
2155*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2156*0472e113SJosef 'Jeff' Sipek static void
fmt_rxy_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2157*0472e113SJosef 'Jeff' Sipek fmt_rxy_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2158*0472e113SJosef 'Jeff' Sipek {
2159*0472e113SJosef 'Jeff' Sipek uint32_t d2;
2160*0472e113SJosef 'Jeff' Sipek
2161*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rxy_a.dh2, inst->rxy_a.dl2h, inst->rxy_a.dl2l);
2162*0472e113SJosef 'Jeff' Sipek
2163*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)",
2164*0472e113SJosef 'Jeff' Sipek R[inst->rxy_a.r1], d2, X[inst->rxy_a.x2], B[inst->rxy_a.b2]);
2165*0472e113SJosef 'Jeff' Sipek }
2166*0472e113SJosef 'Jeff' Sipek
2167*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2168*0472e113SJosef 'Jeff' Sipek static void
fmt_rxy_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2169*0472e113SJosef 'Jeff' Sipek fmt_rxy_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2170*0472e113SJosef 'Jeff' Sipek {
2171*0472e113SJosef 'Jeff' Sipek uint32_t d2;
2172*0472e113SJosef 'Jeff' Sipek
2173*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rxy_b.dh2, inst->rxy_b.dl2h, inst->rxy_b.dl2l);
2174*0472e113SJosef 'Jeff' Sipek
2175*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)",
2176*0472e113SJosef 'Jeff' Sipek M[inst->rxy_b.m1], d2, X[inst->rxy_b.x2], B[inst->rxy_b.b2]);
2177*0472e113SJosef 'Jeff' Sipek }
2178*0472e113SJosef 'Jeff' Sipek
2179*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2180*0472e113SJosef 'Jeff' Sipek static void
fmt_rs_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2181*0472e113SJosef 'Jeff' Sipek fmt_rs_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2182*0472e113SJosef 'Jeff' Sipek {
2183*0472e113SJosef 'Jeff' Sipek const char *r1, *r3;
2184*0472e113SJosef 'Jeff' Sipek
2185*0472e113SJosef 'Jeff' Sipek if (flags & F_CTL_REG) {
2186*0472e113SJosef 'Jeff' Sipek r1 = C[inst->rs_a.r1];
2187*0472e113SJosef 'Jeff' Sipek r3 = C[inst->rs_a.r3];
2188*0472e113SJosef 'Jeff' Sipek } else {
2189*0472e113SJosef 'Jeff' Sipek r1 = R[inst->rs_a.r1];
2190*0472e113SJosef 'Jeff' Sipek r3 = R[inst->rs_a.r3];
2191*0472e113SJosef 'Jeff' Sipek }
2192*0472e113SJosef 'Jeff' Sipek
2193*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", r1, r3,
2194*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rs_a.d2h, inst->rs_a.d2l), B[inst->rs_a.b2]);
2195*0472e113SJosef 'Jeff' Sipek }
2196*0472e113SJosef 'Jeff' Sipek
2197*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2198*0472e113SJosef 'Jeff' Sipek static void
fmt_rs_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2199*0472e113SJosef 'Jeff' Sipek fmt_rs_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2200*0472e113SJosef 'Jeff' Sipek {
2201*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", R[inst->rs_b.r1],
2202*0472e113SJosef 'Jeff' Sipek M[inst->rs_b.m3], val_4_8(inst->rs_b.d2h, inst->rs_b.d2l),
2203*0472e113SJosef 'Jeff' Sipek B[inst->rs_b.b2]);
2204*0472e113SJosef 'Jeff' Sipek }
2205*0472e113SJosef 'Jeff' Sipek
2206*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2207*0472e113SJosef 'Jeff' Sipek static void
fmt_rsl_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2208*0472e113SJosef 'Jeff' Sipek fmt_rsl_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2209*0472e113SJosef 'Jeff' Sipek {
2210*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s)",
2211*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rsl_a.d1h, inst->rsl_a.d1l), inst->rsl_a.l1,
2212*0472e113SJosef 'Jeff' Sipek B[inst->rsl_a.b1]);
2213*0472e113SJosef 'Jeff' Sipek }
2214*0472e113SJosef 'Jeff' Sipek
2215*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2216*0472e113SJosef 'Jeff' Sipek static void
fmt_rsl_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2217*0472e113SJosef 'Jeff' Sipek fmt_rsl_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2218*0472e113SJosef 'Jeff' Sipek {
2219*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%u,%s),%s",
2220*0472e113SJosef 'Jeff' Sipek R[inst->rsl_b.r1],
2221*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rsl_b.d2h, inst->rsl_b.d2l), inst->rsl_b.l2,
2222*0472e113SJosef 'Jeff' Sipek B[inst->rsl_b.b2], M[inst->rsl_b.m3]);
2223*0472e113SJosef 'Jeff' Sipek }
2224*0472e113SJosef 'Jeff' Sipek
2225*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2226*0472e113SJosef 'Jeff' Sipek static void
fmt_rsy_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2227*0472e113SJosef 'Jeff' Sipek fmt_rsy_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2228*0472e113SJosef 'Jeff' Sipek {
2229*0472e113SJosef 'Jeff' Sipek const char *r1, *r3;
2230*0472e113SJosef 'Jeff' Sipek uint32_t d2;
2231*0472e113SJosef 'Jeff' Sipek
2232*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rsy_a.dh2, inst->rsy_a.dl2h, inst->rsy_a.dl2l);
2233*0472e113SJosef 'Jeff' Sipek
2234*0472e113SJosef 'Jeff' Sipek if (flags & F_CTL_REG) {
2235*0472e113SJosef 'Jeff' Sipek r1 = C[inst->rsy_a.r1];
2236*0472e113SJosef 'Jeff' Sipek r3 = C[inst->rsy_a.r3];
2237*0472e113SJosef 'Jeff' Sipek } else {
2238*0472e113SJosef 'Jeff' Sipek r1 = R[inst->rsy_a.r1];
2239*0472e113SJosef 'Jeff' Sipek r3 = R[inst->rsy_a.r3];
2240*0472e113SJosef 'Jeff' Sipek }
2241*0472e113SJosef 'Jeff' Sipek
2242*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", r1, r3, d2,
2243*0472e113SJosef 'Jeff' Sipek B[inst->rsy_a.b2]);
2244*0472e113SJosef 'Jeff' Sipek }
2245*0472e113SJosef 'Jeff' Sipek
2246*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2247*0472e113SJosef 'Jeff' Sipek static void
fmt_rsy_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2248*0472e113SJosef 'Jeff' Sipek fmt_rsy_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2249*0472e113SJosef 'Jeff' Sipek {
2250*0472e113SJosef 'Jeff' Sipek uint32_t d2;
2251*0472e113SJosef 'Jeff' Sipek
2252*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rsy_b.dh2, inst->rsy_b.dl2h, inst->rsy_b.dl2l);
2253*0472e113SJosef 'Jeff' Sipek
2254*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)",
2255*0472e113SJosef 'Jeff' Sipek R[inst->rsy_b.r1], M[inst->rsy_b.m3],
2256*0472e113SJosef 'Jeff' Sipek d2, B[inst->rsy_b.b2]);
2257*0472e113SJosef 'Jeff' Sipek }
2258*0472e113SJosef 'Jeff' Sipek
2259*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2260*0472e113SJosef 'Jeff' Sipek static void
fmt_rsi(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2261*0472e113SJosef 'Jeff' Sipek fmt_rsi(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2262*0472e113SJosef 'Jeff' Sipek {
2263*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->rsi.ri2);
2264*0472e113SJosef 'Jeff' Sipek
2265*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%#x", R[inst->rsi.r1],
2266*0472e113SJosef 'Jeff' Sipek R[inst->rsi.r3], ri2);
2267*0472e113SJosef 'Jeff' Sipek }
2268*0472e113SJosef 'Jeff' Sipek
2269*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2270*0472e113SJosef 'Jeff' Sipek static void
fmt_si(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2271*0472e113SJosef 'Jeff' Sipek fmt_si(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2272*0472e113SJosef 'Jeff' Sipek {
2273*0472e113SJosef 'Jeff' Sipek uint32_t d1 = val_4_8(inst->si.d1h, inst->si.d1l);
2274*0472e113SJosef 'Jeff' Sipek
2275*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u", d1, B[inst->si.b1],
2276*0472e113SJosef 'Jeff' Sipek inst->si.i2);
2277*0472e113SJosef 'Jeff' Sipek }
2278*0472e113SJosef 'Jeff' Sipek
2279*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2280*0472e113SJosef 'Jeff' Sipek static void
fmt_sil(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2281*0472e113SJosef 'Jeff' Sipek fmt_sil(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2282*0472e113SJosef 'Jeff' Sipek {
2283*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u",
2284*0472e113SJosef 'Jeff' Sipek val_4_8(inst->sil.d1h, inst->sil.d1l), B[inst->sil.b1],
2285*0472e113SJosef 'Jeff' Sipek BE_16(inst->sil.i2));
2286*0472e113SJosef 'Jeff' Sipek }
2287*0472e113SJosef 'Jeff' Sipek
2288*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2289*0472e113SJosef 'Jeff' Sipek static void
fmt_siy(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2290*0472e113SJosef 'Jeff' Sipek fmt_siy(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2291*0472e113SJosef 'Jeff' Sipek {
2292*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u",
2293*0472e113SJosef 'Jeff' Sipek val_8_4_8(inst->siy.dh1, inst->siy.dl1h, inst->siy.dl1l),
2294*0472e113SJosef 'Jeff' Sipek B[inst->siy.b1], inst->siy.i2);
2295*0472e113SJosef 'Jeff' Sipek }
2296*0472e113SJosef 'Jeff' Sipek
2297*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2298*0472e113SJosef 'Jeff' Sipek static void
fmt_smi(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2299*0472e113SJosef 'Jeff' Sipek fmt_smi(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2300*0472e113SJosef 'Jeff' Sipek {
2301*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->smi.ri2);
2302*0472e113SJosef 'Jeff' Sipek
2303*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x,%u(%s)", M[inst->smi.m1], ri2,
2304*0472e113SJosef 'Jeff' Sipek val_4_8(inst->smi.d3h, inst->smi.d3l), B[inst->smi.b3]);
2305*0472e113SJosef 'Jeff' Sipek }
2306*0472e113SJosef 'Jeff' Sipek
2307*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2308*0472e113SJosef 'Jeff' Sipek static void
fmt_s(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2309*0472e113SJosef 'Jeff' Sipek fmt_s(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2310*0472e113SJosef 'Jeff' Sipek {
2311*0472e113SJosef 'Jeff' Sipek uint32_t d = val_4_8(inst->s.d2h, inst->s.d2l);
2312*0472e113SJosef 'Jeff' Sipek
2313*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s)", d, B[inst->s.b2]);
2314*0472e113SJosef 'Jeff' Sipek }
2315*0472e113SJosef 'Jeff' Sipek
2316*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2317*0472e113SJosef 'Jeff' Sipek static void
fmt_ss_a(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2318*0472e113SJosef 'Jeff' Sipek fmt_ss_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2319*0472e113SJosef 'Jeff' Sipek {
2320*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2;
2321*0472e113SJosef 'Jeff' Sipek
2322*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_a.d1h, inst->ss_a.d1l);
2323*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_a.d2h, inst->ss_a.d2l);
2324*0472e113SJosef 'Jeff' Sipek
2325*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s),%u(%s)",
2326*0472e113SJosef 'Jeff' Sipek d1, inst->ss_a.l + 1, B[inst->ss_a.b1],
2327*0472e113SJosef 'Jeff' Sipek d2, B[inst->ss_a.b2]);
2328*0472e113SJosef 'Jeff' Sipek }
2329*0472e113SJosef 'Jeff' Sipek
2330*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2331*0472e113SJosef 'Jeff' Sipek static void
fmt_ss_b(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2332*0472e113SJosef 'Jeff' Sipek fmt_ss_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2333*0472e113SJosef 'Jeff' Sipek {
2334*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2;
2335*0472e113SJosef 'Jeff' Sipek
2336*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_b.d1h, inst->ss_b.d1l);
2337*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_b.d2h, inst->ss_b.d2l);
2338*0472e113SJosef 'Jeff' Sipek
2339*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s),%u(%u,%s)",
2340*0472e113SJosef 'Jeff' Sipek d1, inst->ss_b.l1 + 1, B[inst->ss_b.b1],
2341*0472e113SJosef 'Jeff' Sipek d2, inst->ss_b.l2 + 1, B[inst->ss_b.b2]);
2342*0472e113SJosef 'Jeff' Sipek }
2343*0472e113SJosef 'Jeff' Sipek
2344*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2345*0472e113SJosef 'Jeff' Sipek static void
fmt_ss_c(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2346*0472e113SJosef 'Jeff' Sipek fmt_ss_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2347*0472e113SJosef 'Jeff' Sipek {
2348*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2;
2349*0472e113SJosef 'Jeff' Sipek
2350*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_c.d1h, inst->ss_c.d1l);
2351*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_c.d2h, inst->ss_c.d2l);
2352*0472e113SJosef 'Jeff' Sipek
2353*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s),%u(%s),%u",
2354*0472e113SJosef 'Jeff' Sipek d1, inst->ss_c.l1, B[inst->ss_c.b1],
2355*0472e113SJosef 'Jeff' Sipek d2, B[inst->ss_c.b2], inst->ss_c.i3);
2356*0472e113SJosef 'Jeff' Sipek }
2357*0472e113SJosef 'Jeff' Sipek
2358*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2359*0472e113SJosef 'Jeff' Sipek static void
fmt_ss_d(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2360*0472e113SJosef 'Jeff' Sipek fmt_ss_d(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2361*0472e113SJosef 'Jeff' Sipek {
2362*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2;
2363*0472e113SJosef 'Jeff' Sipek
2364*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_d.d1h, inst->ss_d.d1l);
2365*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_d.d2h, inst->ss_d.d2l);
2366*0472e113SJosef 'Jeff' Sipek
2367*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s,%s),%u(%s),%s",
2368*0472e113SJosef 'Jeff' Sipek d1, R[inst->ss_d.r1], B[inst->ss_d.b1],
2369*0472e113SJosef 'Jeff' Sipek d2, B[inst->ss_d.b2], R[inst->ss_d.r3]);
2370*0472e113SJosef 'Jeff' Sipek }
2371*0472e113SJosef 'Jeff' Sipek
2372*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2373*0472e113SJosef 'Jeff' Sipek static void
fmt_ss_e(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2374*0472e113SJosef 'Jeff' Sipek fmt_ss_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2375*0472e113SJosef 'Jeff' Sipek {
2376*0472e113SJosef 'Jeff' Sipek uint32_t d2, d4;
2377*0472e113SJosef 'Jeff' Sipek
2378*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_e.d2h, inst->ss_e.d2l);
2379*0472e113SJosef 'Jeff' Sipek d4 = val_4_8(inst->ss_e.d4h, inst->ss_e.d4l);
2380*0472e113SJosef 'Jeff' Sipek
2381*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s),%s,%u(%s)",
2382*0472e113SJosef 'Jeff' Sipek R[inst->ss_e.r1], d2, B[inst->ss_e.b2],
2383*0472e113SJosef 'Jeff' Sipek R[inst->ss_e.r3], d4, B[inst->ss_e.b4]);
2384*0472e113SJosef 'Jeff' Sipek }
2385*0472e113SJosef 'Jeff' Sipek
2386*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2387*0472e113SJosef 'Jeff' Sipek static void
fmt_ss_f(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2388*0472e113SJosef 'Jeff' Sipek fmt_ss_f(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2389*0472e113SJosef 'Jeff' Sipek {
2390*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2;
2391*0472e113SJosef 'Jeff' Sipek
2392*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_f.d1h, inst->ss_f.d1l);
2393*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_f.d2h, inst->ss_f.d2l);
2394*0472e113SJosef 'Jeff' Sipek
2395*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u(%u,%s)",
2396*0472e113SJosef 'Jeff' Sipek d1, B[inst->ss_f.b1], d2, inst->ss_f.l2,
2397*0472e113SJosef 'Jeff' Sipek B[inst->ss_f.b2]);
2398*0472e113SJosef 'Jeff' Sipek }
2399*0472e113SJosef 'Jeff' Sipek
2400*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2401*0472e113SJosef 'Jeff' Sipek static void
fmt_sse(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2402*0472e113SJosef 'Jeff' Sipek fmt_sse(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2403*0472e113SJosef 'Jeff' Sipek {
2404*0472e113SJosef 'Jeff' Sipek uint32_t d1 = val_4_8(inst->sse.d1h, inst->sse.d1l);
2405*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->sse.d2h, inst->sse.d2l);
2406*0472e113SJosef 'Jeff' Sipek
2407*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u(%s)",
2408*0472e113SJosef 'Jeff' Sipek d1, B[inst->sse.b1], d2, B[inst->sse.b2]);
2409*0472e113SJosef 'Jeff' Sipek }
2410*0472e113SJosef 'Jeff' Sipek
2411*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2412*0472e113SJosef 'Jeff' Sipek static void
fmt_ssf(uint64_t addr,union inst * inst,char * buf,size_t buflen,int flags)2413*0472e113SJosef 'Jeff' Sipek fmt_ssf(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags)
2414*0472e113SJosef 'Jeff' Sipek {
2415*0472e113SJosef 'Jeff' Sipek uint32_t d1 = val_4_8(inst->ssf.d1h, inst->ssf.d1l);
2416*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->ssf.d2h, inst->ssf.d2l);
2417*0472e113SJosef 'Jeff' Sipek
2418*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u(%s),%s",
2419*0472e113SJosef 'Jeff' Sipek d1, B[inst->ssf.b1],
2420*0472e113SJosef 'Jeff' Sipek d2, B[inst->ssf.b2], R[inst->ssf.r3]);
2421*0472e113SJosef 'Jeff' Sipek }
2422*0472e113SJosef 'Jeff' Sipek
2423*0472e113SJosef 'Jeff' Sipek static void (*fmt_fxns[IF_NFMTS])(uint64_t, union inst *, char *, size_t,
2424*0472e113SJosef 'Jeff' Sipek int) = {
2425*0472e113SJosef 'Jeff' Sipek [IF_ZERO] = fmt_zero,
2426*0472e113SJosef 'Jeff' Sipek [IF_DIAG] = fmt_diag,
2427*0472e113SJosef 'Jeff' Sipek [IF_E] = fmt_e,
2428*0472e113SJosef 'Jeff' Sipek [IF_I] = fmt_i,
2429*0472e113SJosef 'Jeff' Sipek [IF_IE] = fmt_ie,
2430*0472e113SJosef 'Jeff' Sipek [IF_MII] = fmt_mii,
2431*0472e113SJosef 'Jeff' Sipek [IF_RIa] = fmt_ri_a,
2432*0472e113SJosef 'Jeff' Sipek [IF_RIb] = fmt_ri_b,
2433*0472e113SJosef 'Jeff' Sipek [IF_RIc] = fmt_ri_c,
2434*0472e113SJosef 'Jeff' Sipek [IF_RIEa] = fmt_rie_a,
2435*0472e113SJosef 'Jeff' Sipek [IF_RIEb] = fmt_rie_b,
2436*0472e113SJosef 'Jeff' Sipek [IF_RIEc] = fmt_rie_c,
2437*0472e113SJosef 'Jeff' Sipek [IF_RIEd] = fmt_rie_d,
2438*0472e113SJosef 'Jeff' Sipek [IF_RIEe] = fmt_rie_e,
2439*0472e113SJosef 'Jeff' Sipek [IF_RIEf] = fmt_rie_f,
2440*0472e113SJosef 'Jeff' Sipek [IF_RILa] = fmt_ril_a,
2441*0472e113SJosef 'Jeff' Sipek [IF_RILb] = fmt_ril_b,
2442*0472e113SJosef 'Jeff' Sipek [IF_RILc] = fmt_ril_c,
2443*0472e113SJosef 'Jeff' Sipek [IF_RIS] = fmt_ris,
2444*0472e113SJosef 'Jeff' Sipek [IF_RR] = fmt_rr,
2445*0472e113SJosef 'Jeff' Sipek [IF_RRD] = fmt_rrd,
2446*0472e113SJosef 'Jeff' Sipek [IF_RRE] = fmt_rre,
2447*0472e113SJosef 'Jeff' Sipek [IF_RRFa] = fmt_rrf_a,
2448*0472e113SJosef 'Jeff' Sipek [IF_RRFb] = fmt_rrf_b,
2449*0472e113SJosef 'Jeff' Sipek [IF_RRFc] = fmt_rrf_c,
2450*0472e113SJosef 'Jeff' Sipek [IF_RRFd] = fmt_rrf_d,
2451*0472e113SJosef 'Jeff' Sipek [IF_RRFe] = fmt_rrf_e,
2452*0472e113SJosef 'Jeff' Sipek [IF_RRS] = fmt_rrs,
2453*0472e113SJosef 'Jeff' Sipek [IF_RSa] = fmt_rs_a,
2454*0472e113SJosef 'Jeff' Sipek [IF_RSb] = fmt_rs_b,
2455*0472e113SJosef 'Jeff' Sipek [IF_RSI] = fmt_rsi,
2456*0472e113SJosef 'Jeff' Sipek [IF_RSLa] = fmt_rsl_a,
2457*0472e113SJosef 'Jeff' Sipek [IF_RSLb] = fmt_rsl_b,
2458*0472e113SJosef 'Jeff' Sipek [IF_RSYa] = fmt_rsy_a,
2459*0472e113SJosef 'Jeff' Sipek [IF_RSYb] = fmt_rsy_b,
2460*0472e113SJosef 'Jeff' Sipek [IF_RXa] = fmt_rx_a,
2461*0472e113SJosef 'Jeff' Sipek [IF_RXb] = fmt_rx_b,
2462*0472e113SJosef 'Jeff' Sipek [IF_RXE] = fmt_rxe,
2463*0472e113SJosef 'Jeff' Sipek [IF_RXF] = fmt_rxf,
2464*0472e113SJosef 'Jeff' Sipek [IF_RXYa] = fmt_rxy_a,
2465*0472e113SJosef 'Jeff' Sipek [IF_RXYb] = fmt_rxy_b,
2466*0472e113SJosef 'Jeff' Sipek [IF_S] = fmt_s,
2467*0472e113SJosef 'Jeff' Sipek [IF_SI] = fmt_si,
2468*0472e113SJosef 'Jeff' Sipek [IF_SIL] = fmt_sil,
2469*0472e113SJosef 'Jeff' Sipek [IF_SIY] = fmt_siy,
2470*0472e113SJosef 'Jeff' Sipek [IF_SMI] = fmt_smi,
2471*0472e113SJosef 'Jeff' Sipek [IF_SSa] = fmt_ss_a,
2472*0472e113SJosef 'Jeff' Sipek [IF_SSb] = fmt_ss_b,
2473*0472e113SJosef 'Jeff' Sipek [IF_SSc] = fmt_ss_c,
2474*0472e113SJosef 'Jeff' Sipek [IF_SSd] = fmt_ss_d,
2475*0472e113SJosef 'Jeff' Sipek [IF_SSe] = fmt_ss_e,
2476*0472e113SJosef 'Jeff' Sipek [IF_SSf] = fmt_ss_f,
2477*0472e113SJosef 'Jeff' Sipek [IF_SSE] = fmt_sse,
2478*0472e113SJosef 'Jeff' Sipek [IF_SSF] = fmt_ssf,
2479*0472e113SJosef 'Jeff' Sipek };
2480*0472e113SJosef 'Jeff' Sipek
2481*0472e113SJosef 'Jeff' Sipek /*
2482*0472e113SJosef 'Jeff' Sipek * Even if we don't know how to disassemble the instruction, we know how long
2483*0472e113SJosef 'Jeff' Sipek * it is, so we always succeed. That is why we can get away with returning
2484*0472e113SJosef 'Jeff' Sipek * void.
2485*0472e113SJosef 'Jeff' Sipek */
2486*0472e113SJosef 'Jeff' Sipek static void
dis_s390(uint64_t addr,union inst * inst,char * buf,size_t buflen,int mach)2487*0472e113SJosef 'Jeff' Sipek dis_s390(uint64_t addr, union inst *inst, char *buf, size_t buflen, int mach)
2488*0472e113SJosef 'Jeff' Sipek {
2489*0472e113SJosef 'Jeff' Sipek const struct inst_table *tbl = &tbl_xx[inst->raw[0]];
2490*0472e113SJosef 'Jeff' Sipek int tmp;
2491*0472e113SJosef 'Jeff' Sipek
2492*0472e113SJosef 'Jeff' Sipek /* nothing to do */
2493*0472e113SJosef 'Jeff' Sipek if (buflen == 0)
2494*0472e113SJosef 'Jeff' Sipek return;
2495*0472e113SJosef 'Jeff' Sipek
2496*0472e113SJosef 'Jeff' Sipek while (tbl->it_fmt == IF_TBL || tbl->it_fmt == IF_MULTI) {
2497*0472e113SJosef 'Jeff' Sipek if (tbl->it_fmt == IF_TBL) {
2498*0472e113SJosef 'Jeff' Sipek int idx;
2499*0472e113SJosef 'Jeff' Sipek
2500*0472e113SJosef 'Jeff' Sipek idx = inst->raw[tbl->it_u.it_table.it_off];
2501*0472e113SJosef 'Jeff' Sipek idx >>= tbl->it_u.it_table.it_shift;
2502*0472e113SJosef 'Jeff' Sipek idx &= tbl->it_u.it_table.it_mask;
2503*0472e113SJosef 'Jeff' Sipek
2504*0472e113SJosef 'Jeff' Sipek tbl = &tbl->it_u.it_table.it_ptr[idx];
2505*0472e113SJosef 'Jeff' Sipek } else if (tbl->it_fmt == IF_MULTI) {
2506*0472e113SJosef 'Jeff' Sipek tbl = &tbl->it_u.it_multi.it_ptr[mach];
2507*0472e113SJosef 'Jeff' Sipek }
2508*0472e113SJosef 'Jeff' Sipek }
2509*0472e113SJosef 'Jeff' Sipek
2510*0472e113SJosef 'Jeff' Sipek if (tbl->it_fmt == IF_INVAL)
2511*0472e113SJosef 'Jeff' Sipek goto inval;
2512*0472e113SJosef 'Jeff' Sipek
2513*0472e113SJosef 'Jeff' Sipek if ((tbl->it_u.it_inst.it_flags & mach) == 0)
2514*0472e113SJosef 'Jeff' Sipek goto inval;
2515*0472e113SJosef 'Jeff' Sipek
2516*0472e113SJosef 'Jeff' Sipek tmp = snprintf(buf, buflen, "%-7s ", tbl->it_u.it_inst.it_name);
2517*0472e113SJosef 'Jeff' Sipek if (tmp < 0)
2518*0472e113SJosef 'Jeff' Sipek return;
2519*0472e113SJosef 'Jeff' Sipek
2520*0472e113SJosef 'Jeff' Sipek fmt_fxns[tbl->it_fmt](addr, inst, buf + tmp, buflen - tmp,
2521*0472e113SJosef 'Jeff' Sipek tbl->it_u.it_inst.it_flags);
2522*0472e113SJosef 'Jeff' Sipek
2523*0472e113SJosef 'Jeff' Sipek return;
2524*0472e113SJosef 'Jeff' Sipek
2525*0472e113SJosef 'Jeff' Sipek inval:
2526*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "??");
2527*0472e113SJosef 'Jeff' Sipek }
2528*0472e113SJosef 'Jeff' Sipek
2529*0472e113SJosef 'Jeff' Sipek static int
dis_s390_supports_flags(int flags)2530*0472e113SJosef 'Jeff' Sipek dis_s390_supports_flags(int flags)
2531*0472e113SJosef 'Jeff' Sipek {
2532*0472e113SJosef 'Jeff' Sipek int archflags = flags & DIS_ARCH_MASK;
2533*0472e113SJosef 'Jeff' Sipek
2534*0472e113SJosef 'Jeff' Sipek if (archflags == DIS_S370 || archflags == DIS_S390_31 ||
2535*0472e113SJosef 'Jeff' Sipek archflags == DIS_S390_64)
2536*0472e113SJosef 'Jeff' Sipek return (1);
2537*0472e113SJosef 'Jeff' Sipek
2538*0472e113SJosef 'Jeff' Sipek return (0);
2539*0472e113SJosef 'Jeff' Sipek }
2540*0472e113SJosef 'Jeff' Sipek
2541*0472e113SJosef 'Jeff' Sipek static int
dis_s390_disassemble(dis_handle_t * dhp,uint64_t addr,char * buf,size_t buflen)2542*0472e113SJosef 'Jeff' Sipek dis_s390_disassemble(dis_handle_t *dhp, uint64_t addr, char *buf,
2543*0472e113SJosef 'Jeff' Sipek size_t buflen)
2544*0472e113SJosef 'Jeff' Sipek {
2545*0472e113SJosef 'Jeff' Sipek union inst inst;
2546*0472e113SJosef 'Jeff' Sipek int mach;
2547*0472e113SJosef 'Jeff' Sipek int len;
2548*0472e113SJosef 'Jeff' Sipek
2549*0472e113SJosef 'Jeff' Sipek if (dhp->dh_read(dhp->dh_data, addr, &inst.raw[0], 2) != 2)
2550*0472e113SJosef 'Jeff' Sipek return (-1);
2551*0472e113SJosef 'Jeff' Sipek
2552*0472e113SJosef 'Jeff' Sipek len = ILC2LEN(inst.raw[0] >> 6) - 2;
2553*0472e113SJosef 'Jeff' Sipek
2554*0472e113SJosef 'Jeff' Sipek if (len > 0 &&
2555*0472e113SJosef 'Jeff' Sipek dhp->dh_read(dhp->dh_data, addr + 2, &inst.raw[2], len) != len)
2556*0472e113SJosef 'Jeff' Sipek return (-1);
2557*0472e113SJosef 'Jeff' Sipek
2558*0472e113SJosef 'Jeff' Sipek switch (dhp->dh_flags & (DIS_S370 | DIS_S390_31 | DIS_S390_64)) {
2559*0472e113SJosef 'Jeff' Sipek case DIS_S370:
2560*0472e113SJosef 'Jeff' Sipek mach = F_370;
2561*0472e113SJosef 'Jeff' Sipek break;
2562*0472e113SJosef 'Jeff' Sipek case DIS_S390_31:
2563*0472e113SJosef 'Jeff' Sipek mach = F_390;
2564*0472e113SJosef 'Jeff' Sipek break;
2565*0472e113SJosef 'Jeff' Sipek case DIS_S390_64:
2566*0472e113SJosef 'Jeff' Sipek mach = F_Z;
2567*0472e113SJosef 'Jeff' Sipek break;
2568*0472e113SJosef 'Jeff' Sipek }
2569*0472e113SJosef 'Jeff' Sipek
2570*0472e113SJosef 'Jeff' Sipek dis_s390(addr, &inst, buf, buflen, mach);
2571*0472e113SJosef 'Jeff' Sipek
2572*0472e113SJosef 'Jeff' Sipek return (0);
2573*0472e113SJosef 'Jeff' Sipek }
2574*0472e113SJosef 'Jeff' Sipek
2575*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2576*0472e113SJosef 'Jeff' Sipek static int
dis_s390_min_instrlen(dis_handle_t * dhp)2577*0472e113SJosef 'Jeff' Sipek dis_s390_min_instrlen(dis_handle_t *dhp)
2578*0472e113SJosef 'Jeff' Sipek {
2579*0472e113SJosef 'Jeff' Sipek return (2);
2580*0472e113SJosef 'Jeff' Sipek }
2581*0472e113SJosef 'Jeff' Sipek
2582*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */
2583*0472e113SJosef 'Jeff' Sipek static int
dis_s390_max_instrlen(dis_handle_t * dhp)2584*0472e113SJosef 'Jeff' Sipek dis_s390_max_instrlen(dis_handle_t *dhp)
2585*0472e113SJosef 'Jeff' Sipek {
2586*0472e113SJosef 'Jeff' Sipek return (6);
2587*0472e113SJosef 'Jeff' Sipek }
2588*0472e113SJosef 'Jeff' Sipek
2589*0472e113SJosef 'Jeff' Sipek dis_arch_t dis_arch_s390 = {
2590*0472e113SJosef 'Jeff' Sipek .da_supports_flags = dis_s390_supports_flags,
2591*0472e113SJosef 'Jeff' Sipek .da_disassemble = dis_s390_disassemble,
2592*0472e113SJosef 'Jeff' Sipek .da_min_instrlen = dis_s390_min_instrlen,
2593*0472e113SJosef 'Jeff' Sipek .da_max_instrlen = dis_s390_max_instrlen,
2594*0472e113SJosef 'Jeff' Sipek };
2595