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