OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [opcodes/] [s390-opc.c] - Blame information for rev 1769

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* s390-opc.c -- S390 opcode list
2
   Copyright 2000, 2001 Free Software Foundation, Inc.
3
   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
4
 
5
   This file is part of GDB, GAS, and the GNU binutils.
6
 
7
   This program is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 2 of the License, or
10
   (at your option) any later version.
11
 
12
   This program is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with this program; if not, write to the Free Software
19
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20
   02111-1307, USA.  */
21
 
22
#include <stdio.h>
23
#include "ansidecl.h"
24
#include "opcode/s390.h"
25
 
26
/* This file holds the S390 opcode table.  The opcode table
27
   includes almost all of the extended instruction mnemonics.  This
28
   permits the disassembler to use them, and simplifies the assembler
29
   logic, at the cost of increasing the table size.  The table is
30
   strictly constant data, so the compiler should be able to put it in
31
   the .text section.
32
 
33
   This file also holds the operand table.  All knowledge about
34
   inserting operands into instructions and vice-versa is kept in this
35
   file.  */
36
 
37
/* The operands table.
38
   The fields are bits, shift, insert, extract, flags.  */
39
 
40
const struct s390_operand s390_operands[] =
41
{
42
#define UNUSED 0
43
  { 0, 0, 0 },                    /* Indicates the end of the operand list */
44
 
45
#define R_8    1                  /* GPR starting at position 8 */
46
  { 4, 8, S390_OPERAND_GPR },
47
#define R_12   2                  /* GPR starting at position 12 */
48
  { 4, 12, S390_OPERAND_GPR },
49
#define R_16   3                  /* GPR starting at position 16 */
50
  { 4, 16, S390_OPERAND_GPR },
51
#define R_20   4                  /* GPR starting at position 20 */
52
  { 4, 20, S390_OPERAND_GPR },
53
#define R_24   5                  /* GPR starting at position 24 */
54
  { 4, 24, S390_OPERAND_GPR },
55
#define R_28   6                  /* GPR starting at position 28 */
56
  { 4, 28, S390_OPERAND_GPR },
57
#define R_32   7                  /* GPR starting at position 32 */
58
  { 4, 32, S390_OPERAND_GPR },
59
 
60
#define F_8    8                  /* FPR starting at position 8 */
61
  { 4, 8, S390_OPERAND_FPR },
62
#define F_12   9                  /* FPR starting at position 12 */
63
  { 4, 12, S390_OPERAND_FPR },
64
#define F_16   10                 /* FPR starting at position 16 */
65
  { 4, 16, S390_OPERAND_FPR },
66
#define F_20   11                 /* FPR starting at position 16 */
67
  { 4, 16, S390_OPERAND_FPR },
68
#define F_24   12                 /* FPR starting at position 24 */
69
  { 4, 24, S390_OPERAND_FPR },
70
#define F_28   13                 /* FPR starting at position 28 */
71
  { 4, 28, S390_OPERAND_FPR },
72
#define F_32   14                 /* FPR starting at position 32 */
73
  { 4, 32, S390_OPERAND_FPR },
74
 
75
#define A_8    15                 /* Access reg. starting at position 8 */
76
  { 4, 8, S390_OPERAND_AR },
77
#define A_12   16                 /* Access reg. starting at position 12 */
78
  { 4, 12, S390_OPERAND_AR },
79
#define A_24   17                 /* Access reg. starting at position 24 */
80
  { 4, 24, S390_OPERAND_AR },
81
#define A_28   18                 /* Access reg. starting at position 28 */
82
  { 4, 28, S390_OPERAND_AR },
83
 
84
#define C_8    19                 /* Control reg. starting at position 8 */
85
  { 4, 8, S390_OPERAND_CR },
86
#define C_12   20                 /* Control reg. starting at position 12 */
87
  { 4, 12, S390_OPERAND_CR },
88
 
89
#define B_16   21                 /* Base register starting at position 16 */
90
  { 4, 16, S390_OPERAND_BASE|S390_OPERAND_GPR },
91
#define B_32   22                 /* Base register starting at position 32 */
92
  { 4, 32, S390_OPERAND_BASE|S390_OPERAND_GPR },
93
 
94
#define X_12   23                 /* Index register starting at position 12 */
95
  { 4, 12, S390_OPERAND_INDEX|S390_OPERAND_GPR },
96
 
97
#define D_20   24                 /* Displacement starting at position 20 */
98
  { 12, 20, S390_OPERAND_DISP },
99
#define D_36   25                 /* Displacement starting at position 36 */
100
  { 12, 36, S390_OPERAND_DISP },
101
 
102
#define L4_8   26                 /* 4 bit length starting at position 8 */
103
  { 4, 8, S390_OPERAND_LENGTH },
104
#define L4_12  27                 /* 4 bit length starting at position 12 */
105
  { 4, 12, S390_OPERAND_LENGTH },
106
#define L8_8   28                 /* 8 bit length starting at position 8 */
107
  { 8, 8, S390_OPERAND_LENGTH },
108
 
109
#define U4_8   29                 /* 4 bit unsigned value starting at 8 */
110
  { 4, 8, 0 },
111
#define U4_12  30                 /* 4 bit unsigned value starting at 12 */
112
  { 4, 12, 0 },
113
#define U4_16  31                 /* 4 bit unsigned value starting at 16 */
114
  { 4, 16, 0 },
115
#define U4_20  32                 /* 4 bit unsigned value starting at 20 */
116
  { 4, 20, 0 },
117
#define U8_8   33                 /* 8 bit unsigned value starting at 8 */
118
  { 8, 8, 0 },
119
#define U8_16  34                 /* 8 bit unsigned value starting at 16 */
120
  { 8, 16, 0 },
121
#define I16_16 35                 /* 16 bit signed value starting at 16 */
122
  { 16, 16, S390_OPERAND_SIGNED },
123
#define U16_16 36                 /* 16 bit unsigned value starting at 16 */
124
  { 16, 16, 0 },
125
#define J16_16 37                 /* PC relative jump offset at 16 */
126
  { 16, 16, S390_OPERAND_PCREL },
127
#define J32_16 38                 /* PC relative long offset at 16 */
128
  { 32, 16, S390_OPERAND_PCREL }
129
};
130
 
131
 
132
/* Macros used to form opcodes.  */
133
 
134
/* 8/16/48 bit opcodes */
135
#define OP8(x) { x, 0x00, 0x00, 0x00, 0x00, 0x00 }
136
#define OP16(x) { x >> 8, x & 255, 0x00, 0x00, 0x00, 0x00 }
137
#define OP48(x) { x >> 40, (x >> 32) & 255, (x >> 24) & 255, \
138
                  (x >> 16) & 255, (x >> 8) & 255, x & 255}
139
 
140
#define INSTR_E      2, { 0,0,0,0,0,0 }                  /* e.g. pr   */
141
#define INSTR_RR     2, { R_8,R_12,0,0,0,0 }             /* e.g. lr   */
142
#define INSTR_RR_M   2, { U4_8,R_12,0,0,0,0 }            /* e.g. bcr  */
143
#define INSTR_RR_B   2, { R_12, 0,0,0,0,0 }              /* e.g. br   */
144
#define INSTR_RR_I   2, { U8_8, 0,0,0,0,0 }              /* e.g. svc  */
145
#define INSTR_RR_R   2, { R_8, 0,0,0,0,0 }               /* e.g. spm  */
146
#define INSTR_RR_E   2, { R_8,R_12,0,0,0,0 }             /* e.g. aer  */
147
#define INSTR_RR_D   2, { F_8,F_12,0,0,0,0 }             /* e.g. adr  */
148
#define INSTR_RR_X   2, { R_8,R_12,0,0,0,0 }             /* e.g. mxr  */
149
#define INSTR_RR_ED  2, { F_8,F_12,0,0,0,0 }             /* e.g. mer  */
150
#define INSTR_RR_DE  2, { F_8,F_12,0,0,0,0 }             /* e.g. lrer */
151
#define INSTR_RR_DX  2, { F_8,F_12,0,0,0,0 }             /* e.g. mxdr */
152
#define INSTR_RR_XD  2, { F_8,F_12,0,0,0,0 }             /* e.g. lrdr */
153
#define INSTR_RRE    4, { R_24,R_28,0,0,0,0 }            /* e.g. lura */
154
#define INSTR_RRE_A  4, { A_24,A_28,0,0,0,0 }            /* e.g. cpya */
155
#define INSTR_RRE_F  4, { F_24,F_28,0,0,0,0 }            /* e.g. debr */
156
#define INSTR_RRE_O  4, { 0,0,0,0,0,0 }                  /* e.g. palb */
157
#define INSTR_RRE_R  4, { R_24,0,0,0,0,0 }               /* e.g. ipm  */
158
#define INSTR_RRE_R2 4, { R_28,0,0,0,0,0 }               /* e.g. tb   */
159
#define INSTR_RRE_E  4, { F_24,0,0,0,0,0 }               /* e.g. sqer */
160
#define INSTR_RRE_D  4, { F_24,0,0,0,0,0 }               /* e.g. sqdr */
161
#define INSTR_RRE_X  4, { F_24,0,0,0,0,0 }               /* e.g. dxr  */
162
#define INSTR_RRE_AR 4, { A_24,R_28,0,0,0,0 }            /* e.g. sar  */
163
#define INSTR_RRE_RA 4, { R_24,A_28,0,0,0,0 }            /* e.g. ear  */
164
#define INSTR_RRF_M  4, { R_24,U4_16,R_28,0,0,0 }        /* e.g. cfxbr*/
165
#define INSTR_RRF_RM 4, { R_24,R_16,R_28,U4_20,0,0 }     /* e.g. didbr*/
166
#define INSTR_RRF_R  4, { R_16,R_24,R_28,0,0,0 }         /* e.g. madbr*/
167
#define INSTR_RRF_F  4, { F_16,F_24,F_28,0,0,0 }         /* e.g. madbr*/
168
#define INSTR_RS     4, { R_8,R_12,D_20,B_16,0,0 }       /* e.g. cs   */
169
#define INSTR_RS_A   4, { A_8,A_12,D_20,B_16,0,0 }       /* e.g. lam  */
170
#define INSTR_RS_C   4, { C_8,C_12,D_20,B_16,0,0 }       /* e.g. lctl */
171
#define INSTR_RS_M   4, { R_8,U4_12,D_20,B_16,0,0 }      /* e.g. icm  */
172
#define INSTR_RS_S   4, { R_8,D_20,B_16,0,0,0 }          /* e.g. sll  */
173
#define INSTR_RS_D   4, { R_8,D_20,B_16,0,0,0 }          /* e.g. sldl */
174
#define INSTR_RX     4, { R_8,D_20,X_12,B_16,0,0 }       /* e.g. l    */
175
#define INSTR_RX_M   4, { U4_8,D_20,X_12,B_16,0,0 }      /* e.g. bc   */
176
#define INSTR_RX_B   4, { D_20,X_12,B_16,0,0,0 }         /* e.g. b    */
177
#define INSTR_RX_E   4, { F_8,D_20,X_12,B_16,0,0 }       /* e.g. ae   */
178
#define INSTR_RX_D   4, { F_8,D_20,X_12,B_16,0,0 }       /* e.g. ad   */
179
#define INSTR_RX_ED  4, { F_8,D_20,X_12,B_16,0,0 }       /* e.g. me   */
180
#define INSTR_RX_DX  4, { F_8,D_20,X_12,B_16,0,0 }       /* e.g. mxd  */
181
#define INSTR_RXE    6, { R_8,D_20,X_12,B_16,0,0 }       /* e.g. agr  */
182
#define INSTR_RXE_F  6, { F_8,D_20,X_12,B_16,0,0 }       /* e.g. axbr */
183
#define INSTR_RXF    6, { F_32,D_20,X_12,B_16,F_8,0 }    /* e.g. madb */
184
#define INSTR_S      4, { D_20,B_16,0,0,0,0 }            /* e.g. lpsw */
185
#define INSTR_S_O    4, { 0,0,0,0,0,0 }                  /* e.g. hsch */
186
#define INSTR_SI     4, { D_20,B_16,U8_8,0,0,0 }         /* e.g. cli  */
187
#define INSTR_SS_RR  6, { D_20,R_8,B_16,D_36,B_32,R_12 } /* e.g. mvck */
188
#define INSTR_SS_LL  6, { D_20,L4_8,B_16,D_36,L4_12,B_32 } /* e.g. pack */
189
#define INSTR_SS_LI  6, { D_20,L4_8,B_16,D_36,B_32,U4_12 } /* e.g. srp  */
190
#define INSTR_SS_L   6, { D_20,L8_8,B_16,D_36,B_32,0 }   /* e.g. mvc  */
191
#define INSTR_SS_LMD 6, { R_8,R_12,D_20,B_16,D_36,B_32 } /* e.g. lmd  */
192
#define INSTR_SS_PLO 6, { R_8,D_20,B_16,R_12,D_36,B_32 } /* e.g. plo  */
193
#define INSTR_SSE    6, { D_20,B_16,D_36,B_32,0,0 }      /* e.g. mvsdk */
194
#define INSTR_RI     4, { R_8,I16_16,0,0,0,0 }           /* e.g. ahi  */
195
#define INSTR_RI_U   4, { R_8,U16_16,0,0,0,0 }           /* e.g. tml  */
196
#define INSTR_RI_A   4, { R_8,J16_16,0,0,0,0 }           /* e.g. brct */
197
#define INSTR_RI_MA  4, { U4_8,J16_16,0,0,0 }            /* e.g. brc  */
198
#define INSTR_RI_B   4, { J16_16,0,0,0,0 }               /* e.g. j    */
199
#define INSTR_RSI_A  4, { R_8,R_12,J16_16,0,0,0 }        /* e.g. brxh */
200
#define INSTR_RSE    6, { R_8,D_20,B_16,R_12,0,0 }       /* e.g. lmg  */
201
#define INSTR_RSE_M  6, { R_8,U4_12,D_20,B_16,0,0 }      /* e.g. icmh */
202
#define INSTR_RSE_R  6, { R_8,R_12,D_20,B_16,0,0 }       /* e.g. lmh  */
203
#define INSTR_RIE_A  6, { R_8,J16_16,R_12,0,0,0 }        /* e.g. brxhg */
204
#define INSTR_RIL_A  6, { R_8,J32_16,0,0,0,0 }           /* e.g. brasl */
205
#define INSTR_RIL_B  6, { J32_16,0,0,0,0,0 }             /* e.g. jg   */
206
#define INSTR_RIL_MA 6, { R_8,J32_16,0,0,0,0 }           /* e.g. brcl */
207
 
208
#define MASK_E      { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
209
#define MASK_RR     { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
210
#define MASK_RR_M   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
211
#define MASK_RR_B   { 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00 }
212
#define MASK_RR_I   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
213
#define MASK_RR_R   { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
214
#define MASK_RR_E   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
215
#define MASK_RR_D   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
216
#define MASK_RR_X   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
217
#define MASK_RR_ED  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
218
#define MASK_RR_DE  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
219
#define MASK_RR_DX  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
220
#define MASK_RR_XD  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
221
#define MASK_RRE    { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
222
#define MASK_RRE_A  { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
223
#define MASK_RRE_F  { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
224
#define MASK_RRE_O  { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }
225
#define MASK_RRE_R  { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
226
#define MASK_RRE_R2 { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
227
#define MASK_RRE_E  { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
228
#define MASK_RRE_D  { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
229
#define MASK_RRE_X  { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
230
#define MASK_RRE_AR { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
231
#define MASK_RRE_RA { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
232
#define MASK_RRF_M  { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
233
#define MASK_RRF_RM { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
234
#define MASK_RRF_R  { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
235
#define MASK_RRF_F  { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
236
#define MASK_RS     { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
237
#define MASK_RS_A   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
238
#define MASK_RS_C   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
239
#define MASK_RS_M   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
240
#define MASK_RS_S   { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
241
#define MASK_RS_D   { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
242
#define MASK_RX     { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
243
#define MASK_RX_M   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
244
#define MASK_RX_B   { 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00 }
245
#define MASK_RX_E   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
246
#define MASK_RX_D   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
247
#define MASK_RX_ED  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
248
#define MASK_RX_DX  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
249
#define MASK_RXE    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
250
#define MASK_RXE_F  { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
251
#define MASK_RXF    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
252
#define MASK_S      { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
253
#define MASK_S_O    { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }
254
#define MASK_SI     { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
255
#define MASK_SS_RR  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
256
#define MASK_SS_LL  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
257
#define MASK_SS_LI  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
258
#define MASK_SS_L   { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
259
#define MASK_SS_LMD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
260
#define MASK_SS_PLO { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
261
#define MASK_SSE    { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
262
#define MASK_RI     { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
263
#define MASK_RI_U   { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
264
#define MASK_RI_A   { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
265
#define MASK_RI_MA  { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
266
#define MASK_RI_B   { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
267
#define MASK_RSI_A  { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
268
#define MASK_RSE    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
269
#define MASK_RSE_M  { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
270
#define MASK_RSE_R  { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
271
#define MASK_RIE_A  { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
272
#define MASK_RIL_A  { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
273
#define MASK_RIL_B  { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
274
#define MASK_RIL_M  { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
275
#define MASK_RIL_MA { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
276
 
277
/* The opcode formats table (blueprints for .insn pseudo mnemonic). */
278
 
279
const struct s390_opcode s390_opformats[] =
280
  {
281
  { "e",        OP8(0x00LL),    MASK_E,         INSTR_E,        3 },
282
  { "ri",       OP8(0x00LL),    MASK_RI,        INSTR_RI,       3 },
283
  { "ri_a",     OP8(0x00LL),    MASK_RI_A,      INSTR_RI_A,     3 },
284
  { "ri_b",     OP8(0x00LL),    MASK_RI_B,      INSTR_RI_B,     3 },
285
  { "ri_ma",    OP8(0x00LL),    MASK_RI_MA,     INSTR_RI_MA,    3 },
286
  { "ri_u",     OP8(0x00LL),    MASK_RI_U,      INSTR_RI_U,     3 },
287
  { "rie_a",    OP8(0x00LL),    MASK_RIE_A,     INSTR_RIE_A,    3 },
288
  { "ril_a",    OP8(0x00LL),    MASK_RIL_A,     INSTR_RIL_A,    3 },
289
  { "ril_b",    OP8(0x00LL),    MASK_RIL_B,     INSTR_RIL_B,    3 },
290
  { "ril_ma",   OP8(0x00LL),    MASK_RIL_MA,    INSTR_RIL_MA,   3 },
291
  { "rr",       OP8(0x00LL),    MASK_RR,        INSTR_RR,       3 },
292
  { "rr_b",     OP8(0x00LL),    MASK_RR_B,      INSTR_RR_B,     3 },
293
  { "rr_d",     OP8(0x00LL),    MASK_RR_D,      INSTR_RR_D,     3 },
294
  { "rr_de",    OP8(0x00LL),    MASK_RR_DE,     INSTR_RR_DE,    3 },
295
  { "rr_dx",    OP8(0x00LL),    MASK_RR_DX,     INSTR_RR_DX,    3 },
296
  { "rr_e",     OP8(0x00LL),    MASK_RR_E,      INSTR_RR_E,     3 },
297
  { "rr_ed",    OP8(0x00LL),    MASK_RR_ED,     INSTR_RR_ED,    3 },
298
  { "rr_i",     OP8(0x00LL),    MASK_RR_I,      INSTR_RR_I,     3 },
299
  { "rr_m",     OP8(0x00LL),    MASK_RR_M,      INSTR_RR_M,     3 },
300
  { "rr_r",     OP8(0x00LL),    MASK_RR_R,      INSTR_RR_R,     3 },
301
  { "rr_x",     OP8(0x00LL),    MASK_RR_X,      INSTR_RR_X,     3 },
302
  { "rr_xd",    OP8(0x00LL),    MASK_RR_XD,     INSTR_RR_XD,    3 },
303
  { "rre",      OP8(0x00LL),    MASK_RRE,       INSTR_RRE,      3 },
304
  { "rre_a",    OP8(0x00LL),    MASK_RRE_A,     INSTR_RRE_A,    3 },
305
  { "rre_ar",   OP8(0x00LL),    MASK_RRE_AR,    INSTR_RRE_AR,   3 },
306
  { "rre_d",    OP8(0x00LL),    MASK_RRE_D,     INSTR_RRE_D,    3 },
307
  { "rre_e",    OP8(0x00LL),    MASK_RRE_E,     INSTR_RRE_E,    3 },
308
  { "rre_f",    OP8(0x00LL),    MASK_RRE_F,     INSTR_RRE_F,    3 },
309
  { "rre_o",    OP8(0x00LL),    MASK_RRE_O,     INSTR_RRE_O,    3 },
310
  { "rre_r",    OP8(0x00LL),    MASK_RRE_R,     INSTR_RRE_R,    3 },
311
  { "rre_r2",   OP8(0x00LL),    MASK_RRE_R2,    INSTR_RRE_R2,   3 },
312
  { "rre_ra",   OP8(0x00LL),    MASK_RRE_RA,    INSTR_RRE_RA,   3 },
313
  { "rre_x",    OP8(0x00LL),    MASK_RRE_X,     INSTR_RRE_X,    3 },
314
  { "rrf_f",    OP8(0x00LL),    MASK_RRF_F,     INSTR_RRF_F,    3 },
315
  { "rrf_m",    OP8(0x00LL),    MASK_RRF_M,     INSTR_RRF_M,    3 },
316
  { "rrf_r",    OP8(0x00LL),    MASK_RRF_R,     INSTR_RRF_R,    3 },
317
  { "rrf_rm",   OP8(0x00LL),    MASK_RRF_RM,    INSTR_RRF_RM,   3 },
318
  { "rs",       OP8(0x00LL),    MASK_RS,        INSTR_RS,       3 },
319
  { "rs_a",     OP8(0x00LL),    MASK_RS_A,      INSTR_RS_A,     3 },
320
  { "rs_c",     OP8(0x00LL),    MASK_RS_C,      INSTR_RS_C,     3 },
321
  { "rs_d",     OP8(0x00LL),    MASK_RS_D,      INSTR_RS_D,     3 },
322
  { "rs_m",     OP8(0x00LL),    MASK_RS_M,      INSTR_RS_M,     3 },
323
  { "rs_s",     OP8(0x00LL),    MASK_RS_S,      INSTR_RS_S,     3 },
324
  { "rse",      OP8(0x00LL),    MASK_RSE,       INSTR_RSE,      3 },
325
  { "rse_m",    OP8(0x00LL),    MASK_RSE_M,     INSTR_RSE_M,    3 },
326
  { "rse_r",    OP8(0x00LL),    MASK_RSE_R,     INSTR_RSE_R,    3 },
327
  { "rsi_a",    OP8(0x00LL),    MASK_RSI_A,     INSTR_RSI_A,    3 },
328
  { "rx",       OP8(0x00LL),    MASK_RX,        INSTR_RX,       3 },
329
  { "rx_b",     OP8(0x00LL),    MASK_RX_B,      INSTR_RX_B,     3 },
330
  { "rx_d",     OP8(0x00LL),    MASK_RX_D,      INSTR_RX_D,     3 },
331
  { "rx_dx",    OP8(0x00LL),    MASK_RX_DX,     INSTR_RX_DX,    3 },
332
  { "rx_e",     OP8(0x00LL),    MASK_RX_E,      INSTR_RX_E,     3 },
333
  { "rx_ed",    OP8(0x00LL),    MASK_RX_ED,     INSTR_RX_ED,    3 },
334
  { "rx_m",     OP8(0x00LL),    MASK_RX_M,      INSTR_RX_M,     3 },
335
  { "rxe",      OP8(0x00LL),    MASK_RXE,       INSTR_RXE,      3 },
336
  { "rxe_f",    OP8(0x00LL),    MASK_RXE_F,     INSTR_RXE_F,    3 },
337
  { "rxf",      OP8(0x00LL),    MASK_RXF,       INSTR_RXF,      3 },
338
  { "s",        OP8(0x00LL),    MASK_S,         INSTR_S,        3 },
339
  { "si",       OP8(0x00LL),    MASK_SI,        INSTR_SI,       3 },
340
  { "ss_l",     OP8(0x00LL),    MASK_SS_L,      INSTR_SS_L,     3 },
341
  { "ss_li",    OP8(0x00LL),    MASK_SS_LI,     INSTR_SS_LI,    3 },
342
  { "ss_ll",    OP8(0x00LL),    MASK_SS_LL,     INSTR_SS_LL,    3 },
343
  { "ss_lmd",   OP8(0x00LL),    MASK_SS_LMD,    INSTR_SS_LMD,   3 },
344
  { "ss_plo",   OP8(0x00LL),    MASK_SS_PLO,    INSTR_SS_PLO,   3 },
345
  { "ss_rr",    OP8(0x00LL),    MASK_SS_RR,     INSTR_SS_RR,    3 },
346
  { "sse",      OP8(0x00LL),    MASK_SSE,       INSTR_SSE,      3 },
347
};
348
 
349
const int s390_num_opformats =
350
  sizeof (s390_opformats) / sizeof (s390_opformats[0]);
351
 
352
/* The opcode table.
353
 
354
   The format of the opcode table is:
355
 
356
   NAME      OPCODE     MASK    OPERANDS
357
 
358
   NAME is the name of the instruction.
359
   OPCODE is the instruction opcode.
360
   MASK is the opcode mask; this is used to tell the disassembler
361
     which bits in the actual opcode must match OPCODE.
362
   OPERANDS is the list of operands.
363
 
364
   The disassembler reads the table in order and prints the first
365
   instruction which matches. */
366
 
367
const struct s390_opcode s390_opcodes[] =
368
  {
369
  { "dp",    OP8(0xfdLL), MASK_SS_LL, INSTR_SS_LL, 3},
370
  { "mp",    OP8(0xfcLL), MASK_SS_LL, INSTR_SS_LL, 3},
371
  { "sp",    OP8(0xfbLL), MASK_SS_LL, INSTR_SS_LL, 3},
372
  { "ap",    OP8(0xfaLL), MASK_SS_LL, INSTR_SS_LL, 3},
373
  { "cp",    OP8(0xf9LL), MASK_SS_LL, INSTR_SS_LL, 3},
374
  { "zap",   OP8(0xf8LL), MASK_SS_LL, INSTR_SS_LL, 3},
375
  { "unpk",  OP8(0xf3LL), MASK_SS_LL, INSTR_SS_LL, 3},
376
  { "pack",  OP8(0xf2LL), MASK_SS_LL, INSTR_SS_LL, 3},
377
  { "mvo",   OP8(0xf1LL), MASK_SS_LL, INSTR_SS_LL, 3},
378
  { "srp",   OP8(0xf0LL), MASK_SS_LI, INSTR_SS_LI, 3},
379
  { "lmd",   OP8(0xefLL), MASK_SS_LMD, INSTR_SS_LMD, 2},
380
  { "plo",   OP8(0xeeLL), MASK_SS_PLO, INSTR_SS_PLO, 3},
381
  { "msdb",  OP48(0xed000000001fLL), MASK_RXF,   INSTR_RXF,   3},
382
  { "madb",  OP48(0xed000000001eLL), MASK_RXF,   INSTR_RXF,   3},
383
  { "ddb",   OP48(0xed000000001dLL), MASK_RXE_F, INSTR_RXE_F, 3},
384
  { "mdb",   OP48(0xed000000001cLL), MASK_RXE_F, INSTR_RXE_F, 3},
385
  { "sdb",   OP48(0xed000000001bLL), MASK_RXE_F, INSTR_RXE_F, 3},
386
  { "adb",   OP48(0xed000000001aLL), MASK_RXE_F, INSTR_RXE_F, 3},
387
  { "cdb",   OP48(0xed0000000019LL), MASK_RXE_F, INSTR_RXE_F, 3},
388
  { "kdb",   OP48(0xed0000000018LL), MASK_RXE_F, INSTR_RXE_F, 3},
389
  { "meeb",  OP48(0xed0000000017LL), MASK_RXE_F, INSTR_RXE_F, 3},
390
  { "sqdb",  OP48(0xed0000000015LL), MASK_RXE_F, INSTR_RXE_F, 3},
391
  { "sqeb",  OP48(0xed0000000014LL), MASK_RXE_F, INSTR_RXE_F, 3},
392
  { "tcxb",  OP48(0xed0000000012LL), MASK_RXE_F, INSTR_RXE_F, 3},
393
  { "tcdb",  OP48(0xed0000000011LL), MASK_RXE_F, INSTR_RXE_F, 3},
394
  { "tceb",  OP48(0xed0000000010LL), MASK_RXE_F, INSTR_RXE_F, 3},
395
  { "mseb",  OP48(0xed000000000fLL), MASK_RXF,   INSTR_RXF,   3},
396
  { "maeb",  OP48(0xed000000000eLL), MASK_RXF,   INSTR_RXF,   3},
397
  { "deb",   OP48(0xed000000000dLL), MASK_RXE_F, INSTR_RXE_F, 3},
398
  { "mdeb",  OP48(0xed000000000cLL), MASK_RXE_F, INSTR_RXE_F, 3},
399
  { "seb",   OP48(0xed000000000bLL), MASK_RXE_F, INSTR_RXE_F, 3},
400
  { "aeb",   OP48(0xed000000000aLL), MASK_RXE_F, INSTR_RXE_F, 3},
401
  { "ceb",   OP48(0xed0000000009LL), MASK_RXE_F, INSTR_RXE_F, 3},
402
  { "keb",   OP48(0xed0000000008LL), MASK_RXE_F, INSTR_RXE_F, 3},
403
  { "mxdb",  OP48(0xed0000000007LL), MASK_RXE_F, INSTR_RXE_F, 3},
404
  { "lxeb",  OP48(0xed0000000006LL), MASK_RXE_F, INSTR_RXE_F, 3},
405
  { "lxdb",  OP48(0xed0000000005LL), MASK_RXE_F, INSTR_RXE_F, 3},
406
  { "ldeb",  OP48(0xed0000000004LL), MASK_RXE_F, INSTR_RXE_F, 3},
407
  { "brxlg", OP48(0xec0000000045LL), MASK_RIE_A, INSTR_RIE_A, 2},
408
  { "brxhg", OP48(0xec0000000044LL), MASK_RIE_A, INSTR_RIE_A, 2},
409
  { "lmh",   OP48(0xeb0000000096LL), MASK_RSE_R, INSTR_RSE_R, 2},
410
  { "mvclu", OP48(0xeb000000008eLL), MASK_RSE_R, INSTR_RSE_R, 2},
411
  { "icmh",  OP48(0xeb0000000080LL), MASK_RSE_M, INSTR_RSE_M, 2},
412
  { "bxleg", OP48(0xeb0000000045LL), MASK_RSE_R, INSTR_RSE_R, 2},
413
  { "bxhg",  OP48(0xeb0000000044LL), MASK_RSE_R, INSTR_RSE_R, 2},
414
  { "cdsg",  OP48(0xeb000000003eLL), MASK_RSE_R, INSTR_RSE_R, 2},
415
  { "csg",   OP48(0xeb0000000030LL), MASK_RSE_R, INSTR_RSE_R, 2},
416
  { "lctlg", OP48(0xeb000000002fLL), MASK_RSE_R, INSTR_RSE_R, 2},
417
  { "stcmh", OP48(0xeb000000002cLL), MASK_RSE_M, INSTR_RSE_M, 2},
418
  { "stmh",  OP48(0xeb0000000026LL), MASK_RSE_R, INSTR_RSE_R, 2},
419
  { "stctg", OP48(0xeb0000000025LL), MASK_RSE_R, INSTR_RSE_R, 2},
420
  { "stmg",  OP48(0xeb0000000024LL), MASK_RSE_R, INSTR_RSE_R, 2},
421
  { "clmh",  OP48(0xeb0000000020LL), MASK_RSE_M, INSTR_RSE_M, 2},
422
  { "rll",   OP48(0xeb000000001dLL), MASK_RSE_R, INSTR_RSE_R, 2},
423
  { "rllg",  OP48(0xeb000000001cLL), MASK_RSE_R, INSTR_RSE_R, 2},
424
  { "tracg", OP48(0xeb000000000fLL), MASK_RSE_R, INSTR_RSE_R, 2},
425
  { "sllg",  OP48(0xeb000000000dLL), MASK_RSE_R, INSTR_RSE_R, 2},
426
  { "srlg",  OP48(0xeb000000000cLL), MASK_RSE_R, INSTR_RSE_R, 2},
427
  { "slag",  OP48(0xeb000000000bLL), MASK_RSE_R, INSTR_RSE_R, 2},
428
  { "srag",  OP48(0xeb000000000aLL), MASK_RSE_R, INSTR_RSE_R, 2},
429
  { "lmg",   OP48(0xeb0000000004LL), MASK_RSE_R, INSTR_RSE_R, 2},
430
  { "unpka", OP8(0xeaLL),            MASK_SS_L, INSTR_SS_L, 2},
431
  { "pka",   OP8(0xe9LL),            MASK_SS_L, INSTR_SS_L, 2},
432
  { "mvcin", OP8(0xe8LL),            MASK_SS_L, INSTR_SS_L, 3},
433
  { "mvcdk", OP16(0xe50fLL),         MASK_SSE, INSTR_SSE, 3},
434
  { "mvcsk", OP16(0xe50eLL),         MASK_SSE, INSTR_SSE, 3},
435
  { "tprot", OP16(0xe501LL),         MASK_SSE, INSTR_SSE, 3},
436
  { "strag", OP48(0xe50000000002LL), MASK_SSE, INSTR_SSE, 2},
437
  { "lasp",  OP16(0xe500LL),         MASK_SSE, INSTR_SSE, 3},
438
  { "slb",   OP48(0xe30000000099LL), MASK_RXE, INSTR_RXE, 2},
439
  { "alc",   OP48(0xe30000000098LL), MASK_RXE, INSTR_RXE, 2},
440
  { "dl",    OP48(0xe30000000097LL), MASK_RXE, INSTR_RXE, 2},
441
  { "ml",    OP48(0xe30000000096LL), MASK_RXE, INSTR_RXE, 2},
442
  { "llgh",  OP48(0xe30000000091LL), MASK_RXE, INSTR_RXE, 2},
443
  { "llgc",  OP48(0xe30000000090LL), MASK_RXE, INSTR_RXE, 2},
444
  { "lpq",   OP48(0xe3000000008fLL), MASK_RXE, INSTR_RXE, 2},
445
  { "stpq",  OP48(0xe3000000008eLL), MASK_RXE, INSTR_RXE, 2},
446
  { "slbg",  OP48(0xe30000000089LL), MASK_RXE, INSTR_RXE, 2},
447
  { "alcg",  OP48(0xe30000000088LL), MASK_RXE, INSTR_RXE, 2},
448
  { "dlg",   OP48(0xe30000000087LL), MASK_RXE, INSTR_RXE, 2},
449
  { "mlg",   OP48(0xe30000000086LL), MASK_RXE, INSTR_RXE, 2},
450
  { "xg",    OP48(0xe30000000082LL), MASK_RXE, INSTR_RXE, 2},
451
  { "og",    OP48(0xe30000000081LL), MASK_RXE, INSTR_RXE, 2},
452
  { "ng",    OP48(0xe30000000080LL), MASK_RXE, INSTR_RXE, 2},
453
  { "bctg",  OP48(0xe30000000046LL), MASK_RXE, INSTR_RXE, 2},
454
  { "strvh", OP48(0xe3000000003fLL), MASK_RXE, INSTR_RXE, 2},
455
  { "strv",  OP48(0xe3000000003eLL), MASK_RXE, INSTR_RXE, 2},
456
  { "clgf",  OP48(0xe30000000031LL), MASK_RXE, INSTR_RXE, 2},
457
  { "cgf",   OP48(0xe30000000030LL), MASK_RXE, INSTR_RXE, 2},
458
  { "strvg", OP48(0xe3000000002fLL), MASK_RXE, INSTR_RXE, 2},
459
  { "cvdg",  OP48(0xe3000000002eLL), MASK_RXE, INSTR_RXE, 2},
460
  { "stg",   OP48(0xe30000000024LL), MASK_RXE, INSTR_RXE, 2},
461
  { "clg",   OP48(0xe30000000021LL), MASK_RXE, INSTR_RXE, 2},
462
  { "cg",    OP48(0xe30000000020LL), MASK_RXE, INSTR_RXE, 2},
463
  { "lrvh",  OP48(0xe3000000001fLL), MASK_RXE, INSTR_RXE, 2},
464
  { "lrv",   OP48(0xe3000000001eLL), MASK_RXE, INSTR_RXE, 2},
465
  { "dsgf",  OP48(0xe3000000001dLL), MASK_RXE, INSTR_RXE, 2},
466
  { "msgf",  OP48(0xe3000000001cLL), MASK_RXE, INSTR_RXE, 2},
467
  { "slgf",  OP48(0xe3000000001bLL), MASK_RXE, INSTR_RXE, 2},
468
  { "algf",  OP48(0xe3000000001aLL), MASK_RXE, INSTR_RXE, 2},
469
  { "sgf",   OP48(0xe30000000019LL), MASK_RXE, INSTR_RXE, 2},
470
  { "agf",   OP48(0xe30000000018LL), MASK_RXE, INSTR_RXE, 2},
471
  { "llgt",  OP48(0xe30000000017LL), MASK_RXE, INSTR_RXE, 2},
472
  { "llgf",  OP48(0xe30000000016LL), MASK_RXE, INSTR_RXE, 2},
473
  { "lgh",   OP48(0xe30000000015LL), MASK_RXE, INSTR_RXE, 2},
474
  { "lgf",   OP48(0xe30000000014LL), MASK_RXE, INSTR_RXE, 2},
475
  { "lrvg",  OP48(0xe3000000000fLL), MASK_RXE, INSTR_RXE, 2},
476
  { "cvbg",  OP48(0xe3000000000eLL), MASK_RXE, INSTR_RXE, 2},
477
  { "dsg",   OP48(0xe3000000000dLL), MASK_RXE, INSTR_RXE, 2},
478
  { "msg",   OP48(0xe3000000000cLL), MASK_RXE, INSTR_RXE, 2},
479
  { "slg",   OP48(0xe3000000000bLL), MASK_RXE, INSTR_RXE, 2},
480
  { "alg",   OP48(0xe3000000000aLL), MASK_RXE, INSTR_RXE, 2},
481
  { "sg",    OP48(0xe30000000009LL), MASK_RXE, INSTR_RXE, 2},
482
  { "ag",    OP48(0xe30000000008LL), MASK_RXE, INSTR_RXE, 2},
483
  { "lg",    OP48(0xe30000000004LL), MASK_RXE, INSTR_RXE, 2},
484
  { "lrag",  OP48(0xe30000000003LL), MASK_RXE, INSTR_RXE, 2},
485
  { "unpku", OP8(0xe2LL), MASK_SS_L, INSTR_SS_L, 2},
486
  { "pku",   OP8(0xe1LL), MASK_SS_L, INSTR_SS_L, 2},
487
  { "edmk",  OP8(0xdfLL), MASK_SS_L, INSTR_SS_L, 3},
488
  { "ed",    OP8(0xdeLL), MASK_SS_L, INSTR_SS_L, 3},
489
  { "trt",   OP8(0xddLL), MASK_SS_L, INSTR_SS_L, 3},
490
  { "tr",    OP8(0xdcLL), MASK_SS_L, INSTR_SS_L, 3},
491
  { "mvcs",  OP8(0xdbLL), MASK_SS_RR, INSTR_SS_RR, 3},
492
  { "mvcp",  OP8(0xdaLL), MASK_SS_RR, INSTR_SS_RR, 3},
493
  { "mvck",  OP8(0xd9LL), MASK_SS_RR, INSTR_SS_RR, 3},
494
  { "xc",    OP8(0xd7LL), MASK_SS_L, INSTR_SS_L, 3},
495
  { "oc",    OP8(0xd6LL), MASK_SS_L, INSTR_SS_L, 3},
496
  { "clc",   OP8(0xd5LL), MASK_SS_L, INSTR_SS_L, 3},
497
  { "nc",    OP8(0xd4LL), MASK_SS_L, INSTR_SS_L, 3},
498
  { "mvz",   OP8(0xd3LL), MASK_SS_L, INSTR_SS_L, 3},
499
  { "mvc",   OP8(0xd2LL), MASK_SS_L, INSTR_SS_L, 3},
500
  { "mvn",   OP8(0xd1LL), MASK_SS_L, INSTR_SS_L, 3},
501
  { "jg",    OP16(0xc0f4LL), MASK_RIL_B, INSTR_RIL_B, 2},
502
  { "jgno",  OP16(0xc0e4LL), MASK_RIL_B, INSTR_RIL_B, 2},
503
  { "jgnh",  OP16(0xc0d4LL), MASK_RIL_B, INSTR_RIL_B, 2},
504
  { "jgnp",  OP16(0xc0d4LL), MASK_RIL_B, INSTR_RIL_B, 2},
505
  { "jgle",  OP16(0xc0c4LL), MASK_RIL_B, INSTR_RIL_B, 2},
506
  { "jgnl",  OP16(0xc0b4LL), MASK_RIL_B, INSTR_RIL_B, 2},
507
  { "jgnm",  OP16(0xc0b4LL), MASK_RIL_B, INSTR_RIL_B, 2},
508
  { "jghe",  OP16(0xc0a4LL), MASK_RIL_B, INSTR_RIL_B, 2},
509
  { "jge",   OP16(0xc084LL), MASK_RIL_B, INSTR_RIL_B, 2},
510
  { "jgz",   OP16(0xc084LL), MASK_RIL_B, INSTR_RIL_B, 2},
511
  { "jgne",  OP16(0xc074LL), MASK_RIL_B, INSTR_RIL_B, 2},
512
  { "jgnz",  OP16(0xc074LL), MASK_RIL_B, INSTR_RIL_B, 2},
513
  { "jgnhe", OP16(0xc054LL), MASK_RIL_B, INSTR_RIL_B, 2},
514
  { "jgl",   OP16(0xc044LL), MASK_RIL_B, INSTR_RIL_B, 2},
515
  { "jgm",   OP16(0xc044LL), MASK_RIL_B, INSTR_RIL_B, 2},
516
  { "jgnle", OP16(0xc034LL), MASK_RIL_B, INSTR_RIL_B, 2},
517
  { "jgh",   OP16(0xc024LL), MASK_RIL_B, INSTR_RIL_B, 2},
518
  { "jgp",   OP16(0xc024LL), MASK_RIL_B, INSTR_RIL_B, 2},
519
  { "jgo",   OP16(0xc014LL), MASK_RIL_B, INSTR_RIL_B, 2},
520
  { "brasl", OP16(0xc005LL), MASK_RIL_A, INSTR_RIL_A, 2},
521
  { "brcl",  OP16(0xc004LL), MASK_RIL_MA, INSTR_RIL_MA, 2},
522
  { "larl",  OP16(0xc000LL), MASK_RIL_A, INSTR_RIL_A, 2},
523
  { "icm",   OP8(0xbfLL),    MASK_RS_M, INSTR_RS_M, 3},
524
  { "stcm",  OP8(0xbeLL),    MASK_RS_M, INSTR_RS_M, 3},
525
  { "clm",   OP8(0xbdLL),    MASK_RS_M, INSTR_RS_M, 3},
526
  { "cds",   OP8(0xbbLL),    MASK_RS,  INSTR_RS, 3},
527
  { "cs",    OP8(0xbaLL),    MASK_RS,  INSTR_RS, 3},
528
  { "esea",  OP16(0xb99dLL), MASK_RRE_R, INSTR_RRE_R, 2},
529
  { "slbr",  OP16(0xb999LL), MASK_RRE, INSTR_RRE, 2},
530
  { "alcr",  OP16(0xb998LL), MASK_RRE, INSTR_RRE, 2},
531
  { "dlr",   OP16(0xb997LL), MASK_RRE, INSTR_RRE, 2},
532
  { "mlr",   OP16(0xb996LL), MASK_RRE, INSTR_RRE, 2},
533
  { "epsw",  OP16(0xb98dLL), MASK_RRE, INSTR_RRE, 2},
534
  { "slbgr", OP16(0xb989LL), MASK_RRE, INSTR_RRE, 2},
535
  { "alcgr", OP16(0xb988LL), MASK_RRE, INSTR_RRE, 2},
536
  { "dlgr",  OP16(0xb987LL), MASK_RRE, INSTR_RRE, 2},
537
  { "mlgr",  OP16(0xb986LL), MASK_RRE, INSTR_RRE, 2},
538
  { "troo",  OP16(0xb993LL), MASK_RRE, INSTR_RRE, 2},
539
  { "trot",  OP16(0xb992LL), MASK_RRE, INSTR_RRE, 2},
540
  { "trto",  OP16(0xb991LL), MASK_RRE, INSTR_RRE, 2},
541
  { "trtt",  OP16(0xb990LL), MASK_RRE, INSTR_RRE, 2},
542
  { "xgr",   OP16(0xb982LL), MASK_RRE, INSTR_RRE, 2},
543
  { "ogr",   OP16(0xb981LL), MASK_RRE, INSTR_RRE, 2},
544
  { "ngr",   OP16(0xb980LL), MASK_RRE, INSTR_RRE, 2},
545
  { "bctgr", OP16(0xb946LL), MASK_RRE, INSTR_RRE, 2},
546
  { "clgfr", OP16(0xb931LL), MASK_RRE, INSTR_RRE, 2},
547
  { "cgfr",  OP16(0xb930LL), MASK_RRE, INSTR_RRE, 2},
548
  { "sturg", OP16(0xb925LL), MASK_RRE, INSTR_RRE, 2},
549
  { "clgr",  OP16(0xb921LL), MASK_RRE, INSTR_RRE, 2},
550
  { "cgr",   OP16(0xb920LL), MASK_RRE, INSTR_RRE, 2},
551
  { "lrvr",  OP16(0xb91fLL), MASK_RRE, INSTR_RRE, 2},
552
  { "dsgfr", OP16(0xb91dLL), MASK_RRE, INSTR_RRE, 2},
553
  { "msgfr", OP16(0xb91cLL), MASK_RRE, INSTR_RRE, 2},
554
  { "slgfr", OP16(0xb91bLL), MASK_RRE, INSTR_RRE, 2},
555
  { "algfr", OP16(0xb91aLL), MASK_RRE, INSTR_RRE, 2},
556
  { "sgfr",  OP16(0xb919LL), MASK_RRE, INSTR_RRE, 2},
557
  { "agfr",  OP16(0xb918LL), MASK_RRE, INSTR_RRE, 2},
558
  { "llgtr", OP16(0xb917LL), MASK_RRE, INSTR_RRE, 2},
559
  { "llgfr", OP16(0xb916LL), MASK_RRE, INSTR_RRE, 2},
560
  { "lgfr",  OP16(0xb914LL), MASK_RRE, INSTR_RRE, 2},
561
  { "lcgfr", OP16(0xb913LL), MASK_RRE, INSTR_RRE, 2},
562
  { "ltgfr", OP16(0xb912LL), MASK_RRE, INSTR_RRE, 2},
563
  { "lngfr", OP16(0xb911LL), MASK_RRE, INSTR_RRE, 2},
564
  { "lpgfr", OP16(0xb910LL), MASK_RRE, INSTR_RRE, 2},
565
  { "lrvgr", OP16(0xb90fLL), MASK_RRE, INSTR_RRE, 2},
566
  { "eregg", OP16(0xb90eLL), MASK_RRE, INSTR_RRE, 2},
567
  { "dsgr",  OP16(0xb90dLL), MASK_RRE, INSTR_RRE, 2},
568
  { "msgr",  OP16(0xb90cLL), MASK_RRE, INSTR_RRE, 2},
569
  { "slgr",  OP16(0xb90bLL), MASK_RRE, INSTR_RRE, 2},
570
  { "algr",  OP16(0xb90aLL), MASK_RRE, INSTR_RRE, 2},
571
  { "sgr",   OP16(0xb909LL), MASK_RRE, INSTR_RRE, 2},
572
  { "agr",   OP16(0xb908LL), MASK_RRE, INSTR_RRE, 2},
573
  { "lurag", OP16(0xb905LL), MASK_RRE, INSTR_RRE, 2},
574
  { "lgr",   OP16(0xb904LL), MASK_RRE, INSTR_RRE, 2},
575
  { "lcgr",  OP16(0xb903LL), MASK_RRE, INSTR_RRE, 2},
576
  { "ltgr",  OP16(0xb902LL), MASK_RRE, INSTR_RRE, 2},
577
  { "lngr",  OP16(0xb901LL), MASK_RRE, INSTR_RRE, 2},
578
  { "lpgr",  OP16(0xb900LL), MASK_RRE, INSTR_RRE, 2},
579
  { "lctl",  OP8(0xb7LL),    MASK_RS_C, INSTR_RS_C, 3},
580
  { "stctl", OP8(0xb6LL),    MASK_RS_C, INSTR_RS_C, 3},
581
  { "cgxr",  OP16(0xb3caLL), MASK_RRF_F, INSTR_RRF_F, 2},
582
  { "cgdr",  OP16(0xb3c9LL), MASK_RRF_F, INSTR_RRF_F, 2},
583
  { "cger",  OP16(0xb3c8LL), MASK_RRF_F, INSTR_RRF_F, 2},
584
  { "cxgr",  OP16(0xb3c6LL), MASK_RRE, INSTR_RRE, 2},
585
  { "cdgr",  OP16(0xb3c5LL), MASK_RRE, INSTR_RRE, 2},
586
  { "cegr",  OP16(0xb3c4LL), MASK_RRE, INSTR_RRE, 2},
587
  { "cgxbr", OP16(0xb3aaLL), MASK_RRF_M, INSTR_RRF_M, 2},
588
  { "cgdbr", OP16(0xb3a9LL), MASK_RRF_M, INSTR_RRF_M, 2},
589
  { "cgebr", OP16(0xb3a8LL), MASK_RRF_M, INSTR_RRF_M, 2},
590
  { "cxgbr", OP16(0xb3a6LL), MASK_RRE, INSTR_RRE, 2},
591
  { "cdgbr", OP16(0xb3a5LL), MASK_RRE, INSTR_RRE, 2},
592
  { "cegbr", OP16(0xb3a4LL), MASK_RRE, INSTR_RRE, 2},
593
  { "cfxbr", OP16(0xb39aLL), MASK_RRF_M, INSTR_RRF_M, 3},
594
  { "cfdbr", OP16(0xb399LL), MASK_RRF_M, INSTR_RRF_M, 3},
595
  { "cfebr", OP16(0xb398LL), MASK_RRF_M, INSTR_RRF_M, 3},
596
  { "cxfbr", OP16(0xb396LL), MASK_RRE_F, INSTR_RRE_F, 3},
597
  { "cdfbr", OP16(0xb395LL), MASK_RRE_F, INSTR_RRE_F, 3},
598
  { "cefbr", OP16(0xb394LL), MASK_RRE_F, INSTR_RRE_F, 3},
599
  { "efpc",  OP16(0xb38cLL), MASK_RRE, INSTR_RRE, 3},
600
  { "sfpc",  OP16(0xb384LL), MASK_RRE, INSTR_RRE, 3},
601
  { "lzxr",  OP16(0xb376LL), MASK_RRE_R, INSTR_RRE_R, 2},
602
  { "lzdr",  OP16(0xb375LL), MASK_RRE_R, INSTR_RRE_R, 2},
603
  { "lzer",  OP16(0xb374LL), MASK_RRE_R, INSTR_RRE_R, 2},
604
  { "fidbr", OP16(0xb35fLL), MASK_RRF_M, INSTR_RRF_M, 3},
605
  { "didbr", OP16(0xb35bLL), MASK_RRF_RM, INSTR_RRF_RM, 3},
606
  { "thdr",  OP16(0xb359LL), MASK_RRE, INSTR_RRE, 2},
607
  { "thder", OP16(0xb358LL), MASK_RRE, INSTR_RRE, 2},
608
  { "fiebr", OP16(0xb357LL), MASK_RRF_M, INSTR_RRF_M, 3},
609
  { "diebr", OP16(0xb353LL), MASK_RRF_RM, INSTR_RRF_RM, 3},
610
  { "tbdr",  OP16(0xb351LL), MASK_RRF_M, INSTR_RRF_M, 2},
611
  { "tbedr", OP16(0xb350LL), MASK_RRF_M, INSTR_RRF_M, 2},
612
  { "dxbr",  OP16(0xb34dLL), MASK_RRE_F, INSTR_RRE_F, 3},
613
  { "mxbr",  OP16(0xb34cLL), MASK_RRE_F, INSTR_RRE_F, 3},
614
  { "sxbr",  OP16(0xb34bLL), MASK_RRE_F, INSTR_RRE_F, 3},
615
  { "axbr",  OP16(0xb34aLL), MASK_RRE_F, INSTR_RRE_F, 3},
616
  { "cxbr",  OP16(0xb349LL), MASK_RRE_F, INSTR_RRE_F, 3},
617
  { "kxbr",  OP16(0xb348LL), MASK_RRE_F, INSTR_RRE_F, 3},
618
  { "fixbr", OP16(0xb347LL), MASK_RRF_M, INSTR_RRF_M, 3},
619
  { "lexbr", OP16(0xb346LL), MASK_RRE_F, INSTR_RRE_F, 3},
620
  { "ldxbr", OP16(0xb345LL), MASK_RRE_F, INSTR_RRE_F, 3},
621
  { "ledbr", OP16(0xb344LL), MASK_RRE_F, INSTR_RRE_F, 3},
622
  { "lcxbr", OP16(0xb343LL), MASK_RRE_F, INSTR_RRE_F, 3},
623
  { "ltxbr", OP16(0xb342LL), MASK_RRE_F, INSTR_RRE_F, 3},
624
  { "lnxbr", OP16(0xb341LL), MASK_RRE_F, INSTR_RRE_F, 3},
625
  { "lpxbr", OP16(0xb340LL), MASK_RRE_F, INSTR_RRE_F, 3},
626
  { "msdbr", OP16(0xb31fLL), MASK_RRF_R, INSTR_RRF_R, 3},
627
  { "madbr", OP16(0xb31eLL), MASK_RRF_R, INSTR_RRF_R, 3},
628
  { "ddbr",  OP16(0xb31dLL), MASK_RRE_F, INSTR_RRE_F, 3},
629
  { "mdbr",  OP16(0xb31cLL), MASK_RRE_F, INSTR_RRE_F, 3},
630
  { "sdbr",  OP16(0xb31bLL), MASK_RRE_F, INSTR_RRE_F, 3},
631
  { "adbr",  OP16(0xb31aLL), MASK_RRE_F, INSTR_RRE_F, 3},
632
  { "cdbr",  OP16(0xb319LL), MASK_RRE_F, INSTR_RRE_F, 3},
633
  { "kdbr",  OP16(0xb318LL), MASK_RRE_F, INSTR_RRE_F, 3},
634
  { "meebr", OP16(0xb317LL), MASK_RRE_F, INSTR_RRE_F, 3},
635
  { "sqxbr", OP16(0xb316LL), MASK_RRE_F, INSTR_RRE_F, 3},
636
  { "sqdbr", OP16(0xb315LL), MASK_RRE_F, INSTR_RRE_F, 3},
637
  { "sqebr", OP16(0xb314LL), MASK_RRE_F, INSTR_RRE_F, 3},
638
  { "lcdbr", OP16(0xb313LL), MASK_RRE_F, INSTR_RRE_F, 3},
639
  { "ltdbr", OP16(0xb312LL), MASK_RRE_F, INSTR_RRE_F, 3},
640
  { "lndbr", OP16(0xb311LL), MASK_RRE_F, INSTR_RRE_F, 3},
641
  { "lpdbr", OP16(0xb310LL), MASK_RRE_F, INSTR_RRE_F, 3},
642
  { "msebr", OP16(0xb30fLL), MASK_RRF_R, INSTR_RRF_R, 3},
643
  { "maebr", OP16(0xb30eLL), MASK_RRF_R, INSTR_RRF_R, 3},
644
  { "debr",  OP16(0xb30dLL), MASK_RRE_F, INSTR_RRE_F, 3},
645
  { "mdebr", OP16(0xb30cLL), MASK_RRE_F, INSTR_RRE_F, 3},
646
  { "sebr",  OP16(0xb30bLL), MASK_RRE_F, INSTR_RRE_F, 3},
647
  { "aebr",  OP16(0xb30aLL), MASK_RRE_F, INSTR_RRE_F, 3},
648
  { "cebr",  OP16(0xb309LL), MASK_RRE_F, INSTR_RRE_F, 3},
649
  { "kebr",  OP16(0xb308LL), MASK_RRE_F, INSTR_RRE_F, 3},
650
  { "mxdbr", OP16(0xb307LL), MASK_RRE_F, INSTR_RRE_F, 3},
651
  { "lxebr", OP16(0xb306LL), MASK_RRE_F, INSTR_RRE_F, 3},
652
  { "lxdbr", OP16(0xb305LL), MASK_RRE_F, INSTR_RRE_F, 3},
653
  { "ldebr", OP16(0xb304LL), MASK_RRE_F, INSTR_RRE_F, 3},
654
  { "lcebr", OP16(0xb303LL), MASK_RRE_F, INSTR_RRE_F, 3},
655
  { "ltebr", OP16(0xb302LL), MASK_RRE_F, INSTR_RRE_F, 3},
656
  { "lnebr", OP16(0xb301LL), MASK_RRE_F, INSTR_RRE_F, 3},
657
  { "lpebr", OP16(0xb300LL), MASK_RRE_F, INSTR_RRE_F, 3},
658
  { "trap4", OP16(0xb2ffLL), MASK_S, INSTR_S, 3},
659
  { "lpswe", OP16(0xb2b2LL), MASK_S, INSTR_S, 2},
660
  { "stfl",  OP16(0xb2b1LL), MASK_S, INSTR_S, 2},
661
  { "cutfu", OP16(0xb2a7LL), MASK_RRE, INSTR_RRE, 3},
662
  { "cuutf", OP16(0xb2a6LL), MASK_RRE, INSTR_RRE, 3},
663
  { "tre",   OP16(0xb2a5LL), MASK_RRE, INSTR_RRE, 2},
664
  { "lfpc",  OP16(0xb29dLL), MASK_S, INSTR_S, 3},
665
  { "stfpc", OP16(0xb29cLL), MASK_S, INSTR_S, 3},
666
  { "srnm",  OP16(0xb299LL), MASK_S, INSTR_S, 3},
667
  { "stsi",  OP16(0xb27dLL), MASK_S, INSTR_S, 3},
668
  { "sacf",  OP16(0xb279LL), MASK_S, INSTR_S, 3},
669
  { "stcke", OP16(0xb278LL), MASK_S, INSTR_S, 2},
670
  { "rp",    OP16(0xb277LL), MASK_S, INSTR_S, 3},
671
  { "siga",  OP16(0xb274LL), MASK_S, INSTR_S, 3},
672
  { "cmpsc", OP16(0xb263LL), MASK_RRE, INSTR_RRE, 3},
673
  { "srst",  OP16(0xb25eLL), MASK_RRE, INSTR_RRE, 3},
674
  { "clst",  OP16(0xb25dLL), MASK_RRE, INSTR_RRE, 3},
675
  { "bsa",   OP16(0xb25aLL), MASK_RRE, INSTR_RRE, 3},
676
  { "bsg",   OP16(0xb258LL), MASK_RRE, INSTR_RRE, 3},
677
  { "cuse",  OP16(0xb257LL), MASK_RRE, INSTR_RRE, 3},
678
  { "mvst",  OP16(0xb255LL), MASK_RRE, INSTR_RRE, 3},
679
  { "mvpg",  OP16(0xb254LL), MASK_RRE, INSTR_RRE, 3},
680
  { "msr",   OP16(0xb252LL), MASK_RRE, INSTR_RRE, 3},
681
  { "csp",   OP16(0xb250LL), MASK_RRE, INSTR_RRE, 3},
682
  { "ear",   OP16(0xb24fLL), MASK_RRE_RA, INSTR_RRE_RA, 3},
683
  { "sar",   OP16(0xb24eLL), MASK_RRE_AR, INSTR_RRE_AR, 3},
684
  { "cpya",  OP16(0xb24dLL), MASK_RRE_A, INSTR_RRE_A, 3},
685
  { "tar",   OP16(0xb24cLL), MASK_RRE_AR, INSTR_RRE_AR, 3},
686
  { "lura",  OP16(0xb24bLL), MASK_RRE, INSTR_RRE, 3},
687
  { "esta",  OP16(0xb24aLL), MASK_RRE, INSTR_RRE, 3},
688
  { "ereg",  OP16(0xb249LL), MASK_RRE, INSTR_RRE, 3},
689
  { "palb",  OP16(0xb248LL), MASK_RRE_O, INSTR_RRE_O, 3},
690
  { "msta",  OP16(0xb247LL), MASK_RRE_R, INSTR_RRE_R, 3},
691
  { "stura", OP16(0xb246LL), MASK_RRE, INSTR_RRE, 3},
692
  { "sqer",  OP16(0xb245LL), MASK_RRE_E, INSTR_RRE_E, 3},
693
  { "sqdr",  OP16(0xb244LL), MASK_RRE_D, INSTR_RRE_D, 3},
694
  { "cksm",  OP16(0xb241LL), MASK_RRE, INSTR_RRE, 3},
695
  { "bakr",  OP16(0xb240LL), MASK_RRE, INSTR_RRE, 3},
696
  { "schm",  OP16(0xb23cLL), MASK_S_O, INSTR_S_O, 3},
697
  { "rchp",  OP16(0xb23bLL), MASK_S_O, INSTR_S_O, 3},
698
  { "stcps", OP16(0xb23aLL), MASK_S, INSTR_S, 3},
699
  { "stcrw", OP16(0xb239LL), MASK_S, INSTR_S, 3},
700
  { "rsch",  OP16(0xb238LL), MASK_S_O, INSTR_S_O, 3},
701
  { "sal",   OP16(0xb237LL), MASK_S_O, INSTR_S_O, 3},
702
  { "tpi",   OP16(0xb236LL), MASK_S, INSTR_S, 3},
703
  { "tsch",  OP16(0xb235LL), MASK_S, INSTR_S, 3},
704
  { "stsch", OP16(0xb234LL), MASK_S, INSTR_S, 3},
705
  { "ssch",  OP16(0xb233LL), MASK_S, INSTR_S, 3},
706
  { "msch",  OP16(0xb232LL), MASK_S, INSTR_S, 3},
707
  { "hsch",  OP16(0xb231LL), MASK_S_O, INSTR_S_O, 3},
708
  { "csch",  OP16(0xb230LL), MASK_S_O, INSTR_S_O, 3},
709
  { "dxr",   OP16(0xb22dLL), MASK_RRE_X, INSTR_RRE_X, 3},
710
  { "tb",    OP16(0xb22cLL), MASK_RRE_R2, INSTR_RRE_R2, 3},
711
  { "sske",  OP16(0xb22bLL), MASK_RRE, INSTR_RRE, 3},
712
  { "rrbe",  OP16(0xb22aLL), MASK_RRE, INSTR_RRE, 3},
713
  { "iske",  OP16(0xb229LL), MASK_RRE, INSTR_RRE, 3},
714
  { "pt",    OP16(0xb228LL), MASK_RRE, INSTR_RRE, 3},
715
  { "esar",  OP16(0xb227LL), MASK_RRE_R, INSTR_RRE_R, 3},
716
  { "epar",  OP16(0xb226LL), MASK_RRE_R, INSTR_RRE_R, 3},
717
  { "ssar",  OP16(0xb225LL), MASK_RRE_R, INSTR_RRE_R, 3},
718
  { "iac",   OP16(0xb224LL), MASK_RRE_R, INSTR_RRE_R, 3},
719
  { "ivsk",  OP16(0xb223LL), MASK_RRE, INSTR_RRE, 3},
720
  { "ipm",   OP16(0xb222LL), MASK_RRE_R, INSTR_RRE_R, 3},
721
  { "ipte",  OP16(0xb221LL), MASK_RRE, INSTR_RRE, 3},
722
  { "cfc",   OP16(0xb21aLL), MASK_S, INSTR_S, 3},
723
  { "sac",   OP16(0xb219LL), MASK_S, INSTR_S, 3},
724
  { "pc",    OP16(0xb218LL), MASK_S, INSTR_S, 3},
725
  { "sie",   OP16(0xb214LL), MASK_S, INSTR_S, 3},
726
  { "stap",  OP16(0xb212LL), MASK_S, INSTR_S, 3},
727
  { "stpx",  OP16(0xb211LL), MASK_S, INSTR_S, 3},
728
  { "spx",   OP16(0xb210LL), MASK_S, INSTR_S, 3},
729
  { "ptlb",  OP16(0xb20dLL), MASK_S_O, INSTR_S_O, 3},
730
  { "ipk",   OP16(0xb20bLL), MASK_S_O, INSTR_S_O, 3},
731
  { "spka",  OP16(0xb20aLL), MASK_S, INSTR_S, 3},
732
  { "stpt",  OP16(0xb209LL), MASK_S, INSTR_S, 3},
733
  { "spt",   OP16(0xb208LL), MASK_S, INSTR_S, 3},
734
  { "stckc", OP16(0xb207LL), MASK_S, INSTR_S, 3},
735
  { "sckc",  OP16(0xb206LL), MASK_S, INSTR_S, 3},
736
  { "stck",  OP16(0xb205LL), MASK_S, INSTR_S, 3},
737
  { "sck",   OP16(0xb204LL), MASK_S, INSTR_S, 3},
738
  { "stidp", OP16(0xb202LL), MASK_S, INSTR_S, 3},
739
  { "lra",   OP8(0xb1LL),    MASK_RX, INSTR_RX, 3},
740
  { "mc",    OP8(0xafLL),    MASK_SI, INSTR_SI, 3},
741
  { "sigp",  OP8(0xaeLL),    MASK_RS, INSTR_RS, 3},
742
  { "stosm", OP8(0xadLL),    MASK_SI, INSTR_SI, 3},
743
  { "stnsm", OP8(0xacLL),    MASK_SI, INSTR_SI, 3},
744
  { "clcle", OP8(0xa9LL),    MASK_RS, INSTR_RS, 3},
745
  { "mvcle", OP8(0xa8LL),    MASK_RS, INSTR_RS, 3},
746
  { "j",     OP16(0xa7f4LL), MASK_RI_B, INSTR_RI_B, 3},
747
  { "jno",   OP16(0xa7e4LL), MASK_RI_B, INSTR_RI_B, 3},
748
  { "jnh",   OP16(0xa7d4LL), MASK_RI_B, INSTR_RI_B, 3},
749
  { "jnp",   OP16(0xa7d4LL), MASK_RI_B, INSTR_RI_B, 3},
750
  { "jle",   OP16(0xa7c4LL), MASK_RI_B, INSTR_RI_B, 3},
751
  { "jnl",   OP16(0xa7b4LL), MASK_RI_B, INSTR_RI_B, 3},
752
  { "jnm",   OP16(0xa7b4LL), MASK_RI_B, INSTR_RI_B, 3},
753
  { "jhe",   OP16(0xa7a4LL), MASK_RI_B, INSTR_RI_B, 3},
754
  { "je",    OP16(0xa784LL), MASK_RI_B, INSTR_RI_B, 3},
755
  { "jz",    OP16(0xa784LL), MASK_RI_B, INSTR_RI_B, 3},
756
  { "jne",   OP16(0xa774LL), MASK_RI_B, INSTR_RI_B, 3},
757
  { "jnz",   OP16(0xa774LL), MASK_RI_B, INSTR_RI_B, 3},
758
  { "jnhe",  OP16(0xa754LL), MASK_RI_B, INSTR_RI_B, 3},
759
  { "jl",    OP16(0xa744LL), MASK_RI_B, INSTR_RI_B, 3},
760
  { "jm",    OP16(0xa744LL), MASK_RI_B, INSTR_RI_B, 3},
761
  { "jnle",  OP16(0xa734LL), MASK_RI_B, INSTR_RI_B, 3},
762
  { "jh",    OP16(0xa724LL), MASK_RI_B, INSTR_RI_B, 3},
763
  { "jp",    OP16(0xa724LL), MASK_RI_B, INSTR_RI_B, 3},
764
  { "jo",    OP16(0xa714LL), MASK_RI_B, INSTR_RI_B, 3},
765
  { "cghi",  OP16(0xa70fLL), MASK_RI, INSTR_RI, 2},
766
  { "chi",   OP16(0xa70eLL), MASK_RI, INSTR_RI, 3},
767
  { "mghi",  OP16(0xa70dLL), MASK_RI, INSTR_RI, 2},
768
  { "mhi",   OP16(0xa70cLL), MASK_RI, INSTR_RI, 3},
769
  { "aghi",  OP16(0xa70bLL), MASK_RI, INSTR_RI, 2},
770
  { "ahi",   OP16(0xa70aLL), MASK_RI, INSTR_RI, 3},
771
  { "lghi",  OP16(0xa709LL), MASK_RI, INSTR_RI, 2},
772
  { "lhi",   OP16(0xa708LL), MASK_RI, INSTR_RI, 3},
773
  { "brctg", OP16(0xa707LL), MASK_RI_A, INSTR_RI_A, 2},
774
  { "brct",  OP16(0xa706LL), MASK_RI_A, INSTR_RI_A, 3},
775
  { "bras",  OP16(0xa705LL), MASK_RI_A, INSTR_RI_A, 3},
776
  { "brc",   OP16(0xa704LL), MASK_RI_MA, INSTR_RI_MA, 3},
777
  { "tmhl",  OP16(0xa703LL), MASK_RI_U, INSTR_RI_U, 2},
778
  { "tmhh",  OP16(0xa702LL), MASK_RI_U, INSTR_RI_U, 2},
779
  { "tml",   OP16(0xa701LL), MASK_RI_U, INSTR_RI_U, 3},
780
  { "tmll",  OP16(0xa701LL), MASK_RI_U, INSTR_RI_U, 2},
781
  { "tmh",   OP16(0xa700LL), MASK_RI_U, INSTR_RI_U, 3},
782
  { "tmlh",  OP16(0xa700LL), MASK_RI_U, INSTR_RI_U, 2},
783
  { "llill", OP16(0xa50fLL), MASK_RI_U, INSTR_RI_U, 2},
784
  { "llilh", OP16(0xa50eLL), MASK_RI_U, INSTR_RI_U, 2},
785
  { "llihl", OP16(0xa50dLL), MASK_RI_U, INSTR_RI_U, 2},
786
  { "llihh", OP16(0xa50cLL), MASK_RI_U, INSTR_RI_U, 2},
787
  { "oill",  OP16(0xa50bLL), MASK_RI_U, INSTR_RI_U, 2},
788
  { "oilh",  OP16(0xa50aLL), MASK_RI_U, INSTR_RI_U, 2},
789
  { "oihl",  OP16(0xa509LL), MASK_RI_U, INSTR_RI_U, 2},
790
  { "oihh",  OP16(0xa508LL), MASK_RI_U, INSTR_RI_U, 2},
791
  { "nill",  OP16(0xa507LL), MASK_RI_U, INSTR_RI_U, 2},
792
  { "nilh",  OP16(0xa506LL), MASK_RI_U, INSTR_RI_U, 2},
793
  { "nihl",  OP16(0xa505LL), MASK_RI_U, INSTR_RI_U, 2},
794
  { "nihh",  OP16(0xa504LL), MASK_RI_U, INSTR_RI_U, 2},
795
  { "iill",  OP16(0xa503LL), MASK_RI_U, INSTR_RI_U, 2},
796
  { "iilh",  OP16(0xa502LL), MASK_RI_U, INSTR_RI_U, 2},
797
  { "iihl",  OP16(0xa501LL), MASK_RI_U, INSTR_RI_U, 2},
798
  { "iihh",  OP16(0xa500LL), MASK_RI_U, INSTR_RI_U, 2},
799
  { "stam",  OP8(0x9bLL), MASK_RS_A, INSTR_RS_A, 3},
800
  { "lam",   OP8(0x9aLL), MASK_RS_A, INSTR_RS_A, 3},
801
  { "trace", OP8(0x99LL), MASK_RS, INSTR_RS, 3},
802
  { "lm",    OP8(0x98LL), MASK_RS, INSTR_RS, 3},
803
  { "xi",    OP8(0x97LL), MASK_SI, INSTR_SI, 3},
804
  { "oi",    OP8(0x96LL), MASK_SI, INSTR_SI, 3},
805
  { "cli",   OP8(0x95LL), MASK_SI, INSTR_SI, 3},
806
  { "ni",    OP8(0x94LL), MASK_SI, INSTR_SI, 3},
807
  { "ts",    OP8(0x93LL), MASK_S, INSTR_S, 3},
808
  { "mvi",   OP8(0x92LL), MASK_SI, INSTR_SI, 3},
809
  { "tm",    OP8(0x91LL), MASK_SI, INSTR_SI, 3},
810
  { "stm",   OP8(0x90LL), MASK_RS, INSTR_RS, 3},
811
  { "slda",  OP8(0x8fLL), MASK_RS_D, INSTR_RS_D, 3},
812
  { "srda",  OP8(0x8eLL), MASK_RS_D, INSTR_RS_D, 3},
813
  { "sldl",  OP8(0x8dLL), MASK_RS_D, INSTR_RS_D, 3},
814
  { "srdl",  OP8(0x8cLL), MASK_RS_D, INSTR_RS_D, 3},
815
  { "sla",   OP8(0x8bLL), MASK_RS_S, INSTR_RS_S, 3},
816
  { "sra",   OP8(0x8aLL), MASK_RS_S, INSTR_RS_S, 3},
817
  { "sll",   OP8(0x89LL), MASK_RS_S, INSTR_RS_S, 3},
818
  { "srl",   OP8(0x88LL), MASK_RS_S, INSTR_RS_S, 3},
819
  { "bxle",  OP8(0x87LL), MASK_RS, INSTR_RS, 3},
820
  { "bxh",   OP8(0x86LL), MASK_RS, INSTR_RS, 3},
821
  { "brxle", OP8(0x85LL), MASK_RSI_A, INSTR_RSI_A, 3},
822
  { "brxh",  OP8(0x84LL), MASK_RSI_A, INSTR_RSI_A, 3},
823
  { "diag",  OP8(0x83LL), MASK_RS, INSTR_RS, 3},
824
  { "lpsw",  OP8(0x82LL), MASK_S, INSTR_S, 3},
825
  { "ssm",   OP8(0x80LL), MASK_S, INSTR_S, 3},
826
  { "su",    OP8(0x7fLL), MASK_RX_E, INSTR_RX_E, 3},
827
  { "au",    OP8(0x7eLL), MASK_RX_E, INSTR_RX_E, 3},
828
  { "de",    OP8(0x7dLL), MASK_RX_E, INSTR_RX_E, 3},
829
  { "me",    OP8(0x7cLL), MASK_RX_ED, INSTR_RX_ED, 3},
830
  { "se",    OP8(0x7bLL), MASK_RX_E, INSTR_RX_E, 3},
831
  { "ae",    OP8(0x7aLL), MASK_RX_E, INSTR_RX_E, 3},
832
  { "ce",    OP8(0x79LL), MASK_RX_E, INSTR_RX_E, 3},
833
  { "le",    OP8(0x78LL), MASK_RX_E, INSTR_RX_E, 3},
834
  { "ms",    OP8(0x71LL), MASK_RX,   INSTR_RX,   3},
835
  { "ste",   OP8(0x70LL), MASK_RX_E, INSTR_RX_E, 3},
836
  { "sw",    OP8(0x6fLL), MASK_RX_D, INSTR_RX_D, 3},
837
  { "aw",    OP8(0x6eLL), MASK_RX_D, INSTR_RX_D, 3},
838
  { "dd",    OP8(0x6dLL), MASK_RX_D, INSTR_RX_D, 3},
839
  { "md",    OP8(0x6cLL), MASK_RX_D, INSTR_RX_D, 3},
840
  { "sd",    OP8(0x6bLL), MASK_RX_D, INSTR_RX_D, 3},
841
  { "ad",    OP8(0x6aLL), MASK_RX_D, INSTR_RX_D, 3},
842
  { "cd",    OP8(0x69LL), MASK_RX_D, INSTR_RX_D, 3},
843
  { "ld",    OP8(0x68LL), MASK_RX_D, INSTR_RX_D, 3},
844
  { "mxd",   OP8(0x67LL), MASK_RX_DX, INSTR_RX_DX, 3},
845
  { "std",   OP8(0x60LL), MASK_RX_D, INSTR_RX_D, 3},
846
  { "sl",    OP8(0x5fLL), MASK_RX, INSTR_RX, 3},
847
  { "al",    OP8(0x5eLL), MASK_RX, INSTR_RX, 3},
848
  { "d",     OP8(0x5dLL), MASK_RX, INSTR_RX, 3},
849
  { "m",     OP8(0x5cLL), MASK_RX, INSTR_RX, 3},
850
  { "s",     OP8(0x5bLL), MASK_RX, INSTR_RX, 3},
851
  { "a",     OP8(0x5aLL), MASK_RX, INSTR_RX, 3},
852
  { "c",     OP8(0x59LL), MASK_RX, INSTR_RX, 3},
853
  { "l",     OP8(0x58LL), MASK_RX, INSTR_RX, 3},
854
  { "x",     OP8(0x57LL), MASK_RX, INSTR_RX, 3},
855
  { "o",     OP8(0x56LL), MASK_RX, INSTR_RX, 3},
856
  { "cl",    OP8(0x55LL), MASK_RX, INSTR_RX, 3},
857
  { "n",     OP8(0x54LL), MASK_RX, INSTR_RX, 3},
858
  { "lae",   OP8(0x51LL), MASK_RX, INSTR_RX, 3},
859
  { "st",    OP8(0x50LL), MASK_RX, INSTR_RX, 3},
860
  { "cvb",   OP8(0x4fLL), MASK_RX, INSTR_RX, 3},
861
  { "cvd",   OP8(0x4eLL), MASK_RX, INSTR_RX, 3},
862
  { "bas",   OP8(0x4dLL), MASK_RX, INSTR_RX, 3},
863
  { "mh",    OP8(0x4cLL), MASK_RX, INSTR_RX, 3},
864
  { "sh",    OP8(0x4bLL), MASK_RX, INSTR_RX, 3},
865
  { "ah",    OP8(0x4aLL), MASK_RX, INSTR_RX, 3},
866
  { "ch",    OP8(0x49LL), MASK_RX, INSTR_RX, 3},
867
  { "lh",    OP8(0x48LL), MASK_RX, INSTR_RX, 3},
868
  { "b",     OP16(0x47f0LL), MASK_RX_B, INSTR_RX_B, 3},
869
  { "bno",   OP16(0x47e0LL), MASK_RX_B, INSTR_RX_B, 3},
870
  { "bnh",   OP16(0x47d0LL), MASK_RX_B, INSTR_RX_B, 3},
871
  { "bnp",   OP16(0x47d0LL), MASK_RX_B, INSTR_RX_B, 3},
872
  { "ble",   OP16(0x47c0LL), MASK_RX_B, INSTR_RX_B, 3},
873
  { "bnl",   OP16(0x47b0LL), MASK_RX_B, INSTR_RX_B, 3},
874
  { "bnm",   OP16(0x47b0LL), MASK_RX_B, INSTR_RX_B, 3},
875
  { "bhe",   OP16(0x47a0LL), MASK_RX_B, INSTR_RX_B, 3},
876
  { "be",    OP16(0x4780LL), MASK_RX_B, INSTR_RX_B, 3},
877
  { "bz",    OP16(0x4780LL), MASK_RX_B, INSTR_RX_B, 3},
878
  { "bne",   OP16(0x4770LL), MASK_RX_B, INSTR_RX_B, 3},
879
  { "bnz",   OP16(0x4770LL), MASK_RX_B, INSTR_RX_B, 3},
880
  { "bnhe",  OP16(0x4750LL), MASK_RX_B, INSTR_RX_B, 3},
881
  { "bl",    OP16(0x4740LL), MASK_RX_B, INSTR_RX_B, 3},
882
  { "bm",    OP16(0x4740LL), MASK_RX_B, INSTR_RX_B, 3},
883
  { "bnle",  OP16(0x4730LL), MASK_RX_B, INSTR_RX_B, 3},
884
  { "bh",    OP16(0x4720LL), MASK_RX_B, INSTR_RX_B, 3},
885
  { "bp",    OP16(0x4720LL), MASK_RX_B, INSTR_RX_B, 3},
886
  { "bo",    OP16(0x4710LL), MASK_RX_B, INSTR_RX_B, 3},
887
  { "bc",    OP8(0x47LL),    MASK_RX_M, INSTR_RX_M, 3},
888
  { "nop",   OP16(0x4700LL), MASK_RX_B, INSTR_RX_B, 3},
889
  { "bct",   OP8(0x46LL), MASK_RX, INSTR_RX, 3},
890
  { "bal",   OP8(0x45LL), MASK_RX, INSTR_RX, 3},
891
  { "ex",    OP8(0x44LL), MASK_RX, INSTR_RX, 3},
892
  { "ic",    OP8(0x43LL), MASK_RX, INSTR_RX, 3},
893
  { "stc",   OP8(0x42LL), MASK_RX, INSTR_RX, 3},
894
  { "la",    OP8(0x41LL), MASK_RX, INSTR_RX, 3},
895
  { "sth",   OP8(0x40LL), MASK_RX, INSTR_RX, 3},
896
  { "sur",   OP8(0x3fLL), MASK_RR_E, INSTR_RR_E, 3},
897
  { "aur",   OP8(0x3eLL), MASK_RR_E, INSTR_RR_E, 3},
898
  { "der",   OP8(0x3dLL), MASK_RR_E, INSTR_RR_E, 3},
899
  { "mer",   OP8(0x3cLL), MASK_RR_ED, INSTR_RR_ED, 3},
900
  { "ser",   OP8(0x3bLL), MASK_RR_E, INSTR_RR_E, 3},
901
  { "aer",   OP8(0x3aLL), MASK_RR_E, INSTR_RR_E, 3},
902
  { "cer",   OP8(0x39LL), MASK_RR_E, INSTR_RR_E, 3},
903
  { "ler",   OP8(0x38LL), MASK_RR_E, INSTR_RR_E, 3},
904
  { "sxr",   OP8(0x37LL), MASK_RR_X, INSTR_RR_X, 3},
905
  { "axr",   OP8(0x36LL), MASK_RR, INSTR_RR, 3},
906
  { "lrer",  OP8(0x35LL), MASK_RR_DE, INSTR_RR_DE, 3},
907
  { "her",   OP8(0x34LL), MASK_RR_E, INSTR_RR_E, 3},
908
  { "lcer",  OP8(0x33LL), MASK_RR_E, INSTR_RR_E, 3},
909
  { "lter",  OP8(0x32LL), MASK_RR_E, INSTR_RR_E, 3},
910
  { "lner",  OP8(0x31LL), MASK_RR_E, INSTR_RR_E, 3},
911
  { "lper",  OP8(0x30LL), MASK_RR_E, INSTR_RR_E, 3},
912
  { "swr",   OP8(0x2fLL), MASK_RR_D, INSTR_RR_D, 3},
913
  { "awr",   OP8(0x2eLL), MASK_RR_D, INSTR_RR_D, 3},
914
  { "ddr",   OP8(0x2dLL), MASK_RR_D, INSTR_RR_D, 3},
915
  { "mdr",   OP8(0x2cLL), MASK_RR_D, INSTR_RR_D, 3},
916
  { "sdr",   OP8(0x2bLL), MASK_RR_D, INSTR_RR_D, 3},
917
  { "adr",   OP8(0x2aLL), MASK_RR_D, INSTR_RR_D, 3},
918
  { "cdr",   OP8(0x29LL), MASK_RR_D, INSTR_RR_D, 3},
919
  { "ldr",   OP8(0x28LL), MASK_RR_D, INSTR_RR_D, 3},
920
  { "mxdr",  OP8(0x27LL), MASK_RR_DX, INSTR_RR_DX, 3},
921
  { "mxr",   OP8(0x26LL), MASK_RR_X, INSTR_RR_X, 3},
922
  { "lrdr",  OP8(0x25LL), MASK_RR_XD, INSTR_RR_XD, 3},
923
  { "hdr",   OP8(0x24LL), MASK_RR_D, INSTR_RR_D, 3},
924
  { "lcdr",  OP8(0x23LL), MASK_RR_D, INSTR_RR_D, 3},
925
  { "ltdr",  OP8(0x22LL), MASK_RR_D, INSTR_RR_D, 3},
926
  { "lndr",  OP8(0x21LL), MASK_RR_D, INSTR_RR_D, 3},
927
  { "lpdr",  OP8(0x20LL), MASK_RR_D, INSTR_RR_D, 3},
928
  { "slr",   OP8(0x1fLL), MASK_RR, INSTR_RR, 3},
929
  { "alr",   OP8(0x1eLL), MASK_RR, INSTR_RR, 3},
930
  { "dr",    OP8(0x1dLL), MASK_RR, INSTR_RR, 3},
931
  { "mr",    OP8(0x1cLL), MASK_RR, INSTR_RR, 3},
932
  { "sr",    OP8(0x1bLL), MASK_RR, INSTR_RR, 3},
933
  { "ar",    OP8(0x1aLL), MASK_RR, INSTR_RR, 3},
934
  { "cr",    OP8(0x19LL), MASK_RR, INSTR_RR, 3},
935
  { "lr",    OP8(0x18LL), MASK_RR, INSTR_RR, 3},
936
  { "xr",    OP8(0x17LL), MASK_RR, INSTR_RR, 3},
937
  { "or",    OP8(0x16LL), MASK_RR, INSTR_RR, 3},
938
  { "clr",   OP8(0x15LL), MASK_RR, INSTR_RR, 3},
939
  { "nr",    OP8(0x14LL), MASK_RR, INSTR_RR, 3},
940
  { "lcr",   OP8(0x13LL), MASK_RR, INSTR_RR, 3},
941
  { "ltr",   OP8(0x12LL), MASK_RR, INSTR_RR, 3},
942
  { "lnr",   OP8(0x11LL), MASK_RR, INSTR_RR, 3},
943
  { "lpr",   OP8(0x10LL), MASK_RR, INSTR_RR, 3},
944
  { "clcl",  OP8(0x0fLL), MASK_RR, INSTR_RR, 3},
945
  { "mvcl",  OP8(0x0eLL), MASK_RR, INSTR_RR, 3},
946
  { "basr",  OP8(0x0dLL), MASK_RR, INSTR_RR, 3},
947
  { "bassm", OP8(0x0cLL), MASK_RR, INSTR_RR, 3},
948
  { "bsm",   OP8(0x0bLL), MASK_RR, INSTR_RR, 3},
949
  { "svc",   OP8(0x0aLL), MASK_RR_I, INSTR_RR_I, 3},
950
  { "br",    OP16(0x07f0LL), MASK_RR_B, INSTR_RR_B, 3},
951
  { "bnor",  OP16(0x07e0LL), MASK_RR_B, INSTR_RR_B, 3},
952
  { "bnhr",  OP16(0x07d0LL), MASK_RR_B, INSTR_RR_B, 3},
953
  { "bnpr",  OP16(0x07d0LL), MASK_RR_B, INSTR_RR_B, 3},
954
  { "bler",  OP16(0x07c0LL), MASK_RR_B, INSTR_RR_B, 3},
955
  { "bnlr",  OP16(0x07b0LL), MASK_RR_B, INSTR_RR_B, 3},
956
  { "bnmr",  OP16(0x07b0LL), MASK_RR_B, INSTR_RR_B, 3},
957
  { "bher",  OP16(0x07a0LL), MASK_RR_B, INSTR_RR_B, 3},
958
  { "ber",   OP16(0x0780LL), MASK_RR_B, INSTR_RR_B, 3},
959
  { "bzr",   OP16(0x0780LL), MASK_RR_B, INSTR_RR_B, 3},
960
  { "bner",  OP16(0x0770LL), MASK_RR_B, INSTR_RR_B, 3},
961
  { "bnzr",  OP16(0x0770LL), MASK_RR_B, INSTR_RR_B, 3},
962
  { "bnher", OP16(0x0750LL), MASK_RR_B, INSTR_RR_B, 3},
963
  { "blr",   OP16(0x0740LL), MASK_RR_B, INSTR_RR_B, 3},
964
  { "bmr",   OP16(0x0740LL), MASK_RR_B, INSTR_RR_B, 3},
965
  { "bnler", OP16(0x0730LL), MASK_RR_B, INSTR_RR_B, 3},
966
  { "bhr",   OP16(0x0720LL), MASK_RR_B, INSTR_RR_B, 3},
967
  { "bpr",   OP16(0x0720LL), MASK_RR_B, INSTR_RR_B, 3},
968
  { "bor",   OP16(0x0710LL), MASK_RR_B, INSTR_RR_B, 3},
969
  { "bcr",   OP8(0x07LL),    MASK_RR_M, INSTR_RR_M, 3},
970
  { "nopr",  OP16(0x0700LL), MASK_RR_B, INSTR_RR_B, 3},
971
  { "bctr",  OP8(0x06LL),    MASK_RR,   INSTR_RR,   3},
972
  { "balr",  OP8(0x05LL),    MASK_RR,   INSTR_RR,   3},
973
  { "spm",   OP8(0x04LL),    MASK_RR_R, INSTR_RR_R, 3},
974
  { "trap2", OP16(0x01ffLL), MASK_E, INSTR_E, 3},
975
  { "sam64", OP16(0x010eLL), MASK_E, INSTR_E, 2},
976
  { "sam31", OP16(0x010dLL), MASK_E, INSTR_E, 2},
977
  { "sam24", OP16(0x010cLL), MASK_E, INSTR_E, 2},
978
  { "tam",   OP16(0x010bLL), MASK_E, INSTR_E, 2},
979
  { "sckpf", OP16(0x0107LL), MASK_E, INSTR_E, 3},
980
  { "upt",   OP16(0x0102LL), MASK_E, INSTR_E, 3},
981
  { "pr",    OP16(0x0101LL), MASK_E, INSTR_E, 3}
982
};
983
 
984
const int s390_num_opcodes =
985
  sizeof (s390_opcodes) / sizeof (s390_opcodes[0]);
986
 
987
 
988
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.