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