1
/* ia64-opc-b.c -- IA-64 `B' opcode table.
2
Copyright 1998, 1999, 2000, 2002, 2005, 2006
3
Free Software Foundation, Inc.
4
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
6
This file is part of GDB, GAS, and the GNU binutils.
8
GDB, GAS, and the GNU binutils are free software; you can redistribute
9
them and/or modify them under the terms of the GNU General Public
10
License as published by the Free Software Foundation; either version
11
2, or (at your option) any later version.
13
GDB, GAS, and the GNU binutils are distributed in the hope that they
14
will be useful, but WITHOUT ANY WARRANTY; without even the implied
15
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
16
the GNU General Public License for more details.
18
You should have received a copy of the GNU General Public License
19
along with this file; see the file COPYING. If not, write to the
20
Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
25
#define B0 IA64_TYPE_B, 0
26
#define B IA64_TYPE_B, 1
28
/* instruction bit fields: */
29
#define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6)
30
#define bD(x) (((ia64_insn) ((x) & 0x1)) << 35)
31
#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 35)
32
#define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12)
33
#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0)
34
#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33)
35
#define bWhb(x) (((ia64_insn) ((x) & 0x3)) << 3)
36
#define bWhc(x) (((ia64_insn) ((x) & 0x7)) << 32)
37
#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
39
#define mBtype bBtype (-1)
44
#define mWha bWha (-1)
45
#define mWhb bWhb (-1)
46
#define mWhc bWhc (-1)
49
#define OpX6(a,b) (bOp (a) | bX6 (b)), (mOp | mX6)
50
#define OpPaWhaD(a,b,c,d) \
51
(bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
52
#define OpPaWhcD(a,b,c,d) \
53
(bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD)
54
#define OpBtypePaWhaD(a,b,c,d,e) \
55
(bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
56
(mOp | mBtype | mPa | mWha | mD)
57
#define OpBtypePaWhaDPr(a,b,c,d,e,f) \
58
(bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
59
(mOp | mBtype | mPa | mWha | mD | mPr)
60
#define OpX6BtypePaWhaD(a,b,c,d,e,f) \
61
(bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
62
(mOp | mX6 | mBtype | mPa | mWha | mD)
63
#define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
64
(bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
65
(mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
66
#define OpIhWhb(a,b,c) \
67
(bOp (a) | bIh (b) | bWhb (c)), \
69
#define OpX6IhWhb(a,b,c,d) \
70
(bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
71
(mOp | mX6 | mIh | mWhb)
73
/* Used to initialise unused fields in ia64_opcode struct,
74
in order to stop gcc from complaining. */
75
#define EMPTY 0,0,NULL
77
struct ia64_opcode ia64_opcodes_b[] =
79
/* B-type instruction encodings (sorted according to major opcode) */
82
B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
83
{"br.few", BR (0, 0)},
85
{"br.few.clr", BR (0, 1)},
86
{"br.clr", BR (0, 1)},
87
{"br.many", BR (1, 0)},
88
{"br.many.clr", BR (1, 1)},
91
#define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
92
#define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
93
#define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
94
{"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)},
95
{"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)},
96
{"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
97
{"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
98
{"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)},
99
{"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)},
100
{"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
101
{"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
102
{"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)},
103
{"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)},
104
{"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
105
{"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
106
{"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)},
107
{"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)},
108
{"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
109
{"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
110
{"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)},
111
{"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
112
{"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)},
113
{"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
114
{"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)},
115
{"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
116
{"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)},
117
{"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
118
{"br.sptk.few", BR (0x20, 0, 0, 0, 0)},
119
{"br.sptk", BRP (0x20, 0, 0, 0, 0)},
120
{"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
121
{"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
122
{"br.spnt.few", BR (0x20, 0, 0, 1, 0)},
123
{"br.spnt", BRP (0x20, 0, 0, 1, 0)},
124
{"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
125
{"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
126
{"br.dptk.few", BR (0x20, 0, 0, 2, 0)},
127
{"br.dptk", BRP (0x20, 0, 0, 2, 0)},
128
{"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
129
{"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
130
{"br.dpnt.few", BR (0x20, 0, 0, 3, 0)},
131
{"br.dpnt", BRP (0x20, 0, 0, 3, 0)},
132
{"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
133
{"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
134
{"br.sptk.many", BR (0x20, 0, 1, 0, 0)},
135
{"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
136
{"br.spnt.many", BR (0x20, 0, 1, 1, 0)},
137
{"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
138
{"br.dptk.many", BR (0x20, 0, 1, 2, 0)},
139
{"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
140
{"br.dpnt.many", BR (0x20, 0, 1, 3, 0)},
141
{"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
142
{"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)},
143
{"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)},
144
{"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)},
145
{"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)},
146
{"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)},
147
{"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)},
148
{"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)},
149
{"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)},
150
{"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)},
151
{"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)},
152
{"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)},
153
{"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)},
154
{"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)},
155
{"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)},
156
{"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)},
157
{"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)},
158
{"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)},
159
{"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)},
160
{"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)},
161
{"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)},
162
{"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)},
163
{"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)},
164
{"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)},
165
{"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)},
166
{"br.ret.sptk.few", BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
167
{"br.ret.sptk", BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
168
{"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
169
{"br.ret.sptk.clr", BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
170
{"br.ret.spnt.few", BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
171
{"br.ret.spnt", BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
172
{"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
173
{"br.ret.spnt.clr", BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
174
{"br.ret.dptk.few", BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
175
{"br.ret.dptk", BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
176
{"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
177
{"br.ret.dptk.clr", BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
178
{"br.ret.dpnt.few", BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
179
{"br.ret.dpnt", BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
180
{"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
181
{"br.ret.dpnt.clr", BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
182
{"br.ret.sptk.many", BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
183
{"br.ret.sptk.many.clr", BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
184
{"br.ret.spnt.many", BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
185
{"br.ret.spnt.many.clr", BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
186
{"br.ret.dptk.many", BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
187
{"br.ret.dptk.many.clr", BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
188
{"br.ret.dpnt.many", BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
189
{"br.ret.dpnt.many.clr", BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
194
{"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
195
{"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
196
{"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
197
{"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
198
{"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
199
{"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
200
{"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
201
{"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
202
{"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
204
{"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
206
{"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
207
{"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
208
{"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
209
{"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
210
{"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
211
{"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
212
{"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
213
{"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
214
{"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
215
{"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
216
{"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
217
{"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
218
{"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
219
{"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
220
{"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
221
{"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
222
{"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
223
{"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
224
{"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
225
{"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
226
{"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
227
{"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
228
{"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
229
{"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
232
B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
233
{"brp.sptk", BRP (0x10, 0, 0)},
234
{"brp.dptk", BRP (0x10, 0, 2)},
235
{"brp.sptk.imp", BRP (0x10, 1, 0)},
236
{"brp.dptk.imp", BRP (0x10, 1, 2)},
237
{"brp.ret.sptk", BRP (0x11, 0, 0)},
238
{"brp.ret.dptk", BRP (0x11, 0, 2)},
239
{"brp.ret.sptk.imp", BRP (0x11, 1, 0)},
240
{"brp.ret.dptk.imp", BRP (0x11, 1, 2)},
243
{"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
244
{"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
247
B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
248
{"br.few", BR (0, 0)},
250
{"br.few.clr", BR (0, 1)},
251
{"br.clr", BR (0, 1)},
252
{"br.many", BR (1, 0)},
253
{"br.many.clr", BR (1, 1)},
257
B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
259
B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
260
{"br.cond.sptk.few", BR (0, 0, 0)},
261
{"br.cond.sptk", BRP (0, 0, 0)},
262
{"br.cond.sptk.few.clr", BR (0, 0, 1)},
263
{"br.cond.sptk.clr", BRP (0, 0, 1)},
264
{"br.cond.spnt.few", BR (0, 1, 0)},
265
{"br.cond.spnt", BRP (0, 1, 0)},
266
{"br.cond.spnt.few.clr", BR (0, 1, 1)},
267
{"br.cond.spnt.clr", BRP (0, 1, 1)},
268
{"br.cond.dptk.few", BR (0, 2, 0)},
269
{"br.cond.dptk", BRP (0, 2, 0)},
270
{"br.cond.dptk.few.clr", BR (0, 2, 1)},
271
{"br.cond.dptk.clr", BRP (0, 2, 1)},
272
{"br.cond.dpnt.few", BR (0, 3, 0)},
273
{"br.cond.dpnt", BRP (0, 3, 0)},
274
{"br.cond.dpnt.few.clr", BR (0, 3, 1)},
275
{"br.cond.dpnt.clr", BRP (0, 3, 1)},
276
{"br.cond.sptk.many", BR (1, 0, 0)},
277
{"br.cond.sptk.many.clr", BR (1, 0, 1)},
278
{"br.cond.spnt.many", BR (1, 1, 0)},
279
{"br.cond.spnt.many.clr", BR (1, 1, 1)},
280
{"br.cond.dptk.many", BR (1, 2, 0)},
281
{"br.cond.dptk.many.clr", BR (1, 2, 1)},
282
{"br.cond.dpnt.many", BR (1, 3, 0)},
283
{"br.cond.dpnt.many.clr", BR (1, 3, 1)},
284
{"br.sptk.few", BR (0, 0, 0)},
285
{"br.sptk", BRP (0, 0, 0)},
286
{"br.sptk.few.clr", BR (0, 0, 1)},
287
{"br.sptk.clr", BRP (0, 0, 1)},
288
{"br.spnt.few", BR (0, 1, 0)},
289
{"br.spnt", BRP (0, 1, 0)},
290
{"br.spnt.few.clr", BR (0, 1, 1)},
291
{"br.spnt.clr", BRP (0, 1, 1)},
292
{"br.dptk.few", BR (0, 2, 0)},
293
{"br.dptk", BRP (0, 2, 0)},
294
{"br.dptk.few.clr", BR (0, 2, 1)},
295
{"br.dptk.clr", BRP (0, 2, 1)},
296
{"br.dpnt.few", BR (0, 3, 0)},
297
{"br.dpnt", BRP (0, 3, 0)},
298
{"br.dpnt.few.clr", BR (0, 3, 1)},
299
{"br.dpnt.clr", BRP (0, 3, 1)},
300
{"br.sptk.many", BR (1, 0, 0)},
301
{"br.sptk.many.clr", BR (1, 0, 1)},
302
{"br.spnt.many", BR (1, 1, 0)},
303
{"br.spnt.many.clr", BR (1, 1, 1)},
304
{"br.dptk.many", BR (1, 2, 0)},
305
{"br.dptk.many.clr", BR (1, 2, 1)},
306
{"br.dpnt.many", BR (1, 3, 0)},
307
{"br.dpnt.many.clr", BR (1, 3, 1)},
311
#define BR(a,b,c,d, e) \
312
B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
313
{"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)},
314
{"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
315
{"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)},
316
{"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
317
{"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)},
318
{"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
319
{"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)},
320
{"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
321
{"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)},
322
{"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
323
{"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)},
324
{"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
325
{"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)},
326
{"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
327
{"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)},
328
{"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
329
{"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)},
330
{"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
331
{"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)},
332
{"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
333
{"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)},
334
{"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
335
{"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)},
336
{"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
337
{"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)},
338
{"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
339
{"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)},
340
{"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
341
{"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)},
342
{"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
343
{"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)},
344
{"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
345
{"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)},
346
{"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
347
{"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)},
348
{"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
349
{"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)},
350
{"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
351
{"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)},
352
{"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
353
{"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)},
354
{"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)},
355
{"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)},
356
{"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)},
357
{"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)},
358
{"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)},
359
{"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)},
360
{"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)},
363
#define BR(a,b,c,d) \
364
B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
365
#define BRT(a,b,c,d,e) \
366
B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
367
{"br.cloop.sptk.few", BR (5, 0, 0, 0)},
368
{"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
369
{"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
370
{"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
371
{"br.cloop.spnt.few", BR (5, 0, 1, 0)},
372
{"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
373
{"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
374
{"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
375
{"br.cloop.dptk.few", BR (5, 0, 2, 0)},
376
{"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
377
{"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
378
{"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
379
{"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
380
{"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
381
{"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
382
{"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
383
{"br.cloop.sptk.many", BR (5, 1, 0, 0)},
384
{"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
385
{"br.cloop.spnt.many", BR (5, 1, 1, 0)},
386
{"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
387
{"br.cloop.dptk.many", BR (5, 1, 2, 0)},
388
{"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
389
{"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
390
{"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
391
{"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)},
392
{"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
393
{"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)},
394
{"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
395
{"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)},
396
{"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
397
{"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)},
398
{"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
399
{"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)},
400
{"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
401
{"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)},
402
{"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
403
{"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)},
404
{"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
405
{"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)},
406
{"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
407
{"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)},
408
{"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
409
{"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)},
410
{"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
411
{"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)},
412
{"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
413
{"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)},
414
{"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
415
{"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)},
416
{"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
417
{"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)},
418
{"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
419
{"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)},
420
{"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
421
{"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)},
422
{"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
423
{"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)},
424
{"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
425
{"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)},
426
{"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
427
{"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)},
428
{"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
429
{"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)},
430
{"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
431
{"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)},
432
{"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)},
433
{"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)},
434
{"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)},
435
{"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)},
436
{"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)},
437
{"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)},
438
{"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)},
442
{"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
443
{"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
444
{"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
445
{"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
446
{"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
447
{"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
448
{"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
449
{"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
450
{"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
451
{"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
452
{"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
453
{"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
454
{"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
455
{"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
456
{"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
457
{"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
458
{"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
459
{"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
460
{"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
461
{"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
462
{"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
463
{"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
464
{"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
465
{"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
467
/* Branch predict. */
469
B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
470
{"brp.sptk", BRP (0, 0)},
471
{"brp.loop", BRP (0, 1)},
472
{"brp.dptk", BRP (0, 2)},
473
{"brp.exit", BRP (0, 3)},
474
{"brp.sptk.imp", BRP (1, 0)},
475
{"brp.loop.imp", BRP (1, 1)},
476
{"brp.dptk.imp", BRP (1, 2)},
477
{"brp.exit.imp", BRP (1, 3)},
480
{NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
507
#undef OpBtypePaWhaDPr
508
#undef OpX6BtypePaWhaD
509
#undef OpX6BtypePaWhaDPr