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