]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - opcodes/ia64-opc-b.c
2002-12-04 Andrew Cagney <ac131313@redhat.com>
[thirdparty/binutils-gdb.git] / opcodes / ia64-opc-b.c
CommitLineData
800eeca4 1/* ia64-opc-b.c -- IA-64 `B' opcode table.
bde78a07 2 Copyright 1998, 1999, 2000, 2002 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
bde78a07
NC
72/* Used to initialise unused fields in ia64_opcode struct,
73 in order to stop gcc from complaining. */
74#define EMPTY 0,0,NULL
75
800eeca4
JW
76struct ia64_opcode ia64_opcodes_b[] =
77 {
78 /* B-type instruction encodings (sorted according to major opcode) */
79
80#define BR(a,b) \
bde78a07 81 B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
800eeca4
JW
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
89
bde78a07
NC
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
800eeca4 93 {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)},
bde78a07 94 {"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)},
800eeca4 95 {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
bde78a07 96 {"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
800eeca4 97 {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)},
bde78a07 98 {"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)},
800eeca4 99 {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
bde78a07 100 {"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
800eeca4 101 {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)},
bde78a07 102 {"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)},
800eeca4 103 {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
bde78a07 104 {"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
800eeca4 105 {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)},
bde78a07 106 {"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)},
800eeca4 107 {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
bde78a07 108 {"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
800eeca4
JW
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)},
bde78a07 118 {"br.sptk", BRP (0x20, 0, 0, 0, 0)},
800eeca4 119 {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
bde78a07 120 {"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
800eeca4 121 {"br.spnt.few", BR (0x20, 0, 0, 1, 0)},
bde78a07 122 {"br.spnt", BRP (0x20, 0, 0, 1, 0)},
800eeca4 123 {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
bde78a07 124 {"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
800eeca4 125 {"br.dptk.few", BR (0x20, 0, 0, 2, 0)},
bde78a07 126 {"br.dptk", BRP (0x20, 0, 0, 2, 0)},
800eeca4 127 {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
bde78a07 128 {"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
800eeca4 129 {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)},
bde78a07 130 {"br.dpnt", BRP (0x20, 0, 0, 3, 0)},
800eeca4 131 {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
bde78a07 132 {"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
800eeca4
JW
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)},
bde78a07 142 {"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)},
800eeca4 143 {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)},
bde78a07 144 {"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)},
800eeca4 145 {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)},
bde78a07 146 {"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)},
800eeca4 147 {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)},
bde78a07 148 {"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)},
800eeca4 149 {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)},
bde78a07 150 {"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)},
800eeca4 151 {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)},
bde78a07 152 {"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)},
800eeca4 153 {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)},
bde78a07 154 {"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)},
800eeca4 155 {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)},
bde78a07 156 {"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)},
800eeca4
JW
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)},
bde78a07
NC
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)},
800eeca4 189#undef BR
bde78a07
NC
190#undef BRP
191#undef BRT
192
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},
800eeca4 200
bde78a07 201 {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
800eeca4 202
bde78a07
NC
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},
800eeca4
JW
227
228#define BRP(a,b,c) \
bde78a07 229 B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
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
239
bde78a07 240 {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
800eeca4
JW
241
242#define BR(a,b) \
bde78a07 243 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
800eeca4
JW
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
251
aa170a07 252#define BR(a,b,c) \
bde78a07
NC
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
aa170a07 256 {"br.cond.sptk.few", BR (0, 0, 0)},
bde78a07 257 {"br.cond.sptk", BRP (0, 0, 0)},
aa170a07 258 {"br.cond.sptk.few.clr", BR (0, 0, 1)},
bde78a07 259 {"br.cond.sptk.clr", BRP (0, 0, 1)},
aa170a07 260 {"br.cond.spnt.few", BR (0, 1, 0)},
bde78a07 261 {"br.cond.spnt", BRP (0, 1, 0)},
aa170a07 262 {"br.cond.spnt.few.clr", BR (0, 1, 1)},
bde78a07 263 {"br.cond.spnt.clr", BRP (0, 1, 1)},
aa170a07 264 {"br.cond.dptk.few", BR (0, 2, 0)},
bde78a07 265 {"br.cond.dptk", BRP (0, 2, 0)},
aa170a07 266 {"br.cond.dptk.few.clr", BR (0, 2, 1)},
bde78a07 267 {"br.cond.dptk.clr", BRP (0, 2, 1)},
aa170a07 268 {"br.cond.dpnt.few", BR (0, 3, 0)},
bde78a07 269 {"br.cond.dpnt", BRP (0, 3, 0)},
aa170a07 270 {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 271 {"br.cond.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
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)},
bde78a07 281 {"br.sptk", BRP (0, 0, 0)},
aa170a07 282 {"br.sptk.few.clr", BR (0, 0, 1)},
bde78a07 283 {"br.sptk.clr", BRP (0, 0, 1)},
aa170a07 284 {"br.spnt.few", BR (0, 1, 0)},
bde78a07 285 {"br.spnt", BRP (0, 1, 0)},
aa170a07 286 {"br.spnt.few.clr", BR (0, 1, 1)},
bde78a07 287 {"br.spnt.clr", BRP (0, 1, 1)},
aa170a07 288 {"br.dptk.few", BR (0, 2, 0)},
bde78a07 289 {"br.dptk", BRP (0, 2, 0)},
aa170a07 290 {"br.dptk.few.clr", BR (0, 2, 1)},
bde78a07 291 {"br.dptk.clr", BRP (0, 2, 1)},
aa170a07 292 {"br.dpnt.few", BR (0, 3, 0)},
bde78a07 293 {"br.dpnt", BRP (0, 3, 0)},
aa170a07 294 {"br.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 295 {"br.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
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
bde78a07 305#undef BRP
800eeca4 306
bde78a07
NC
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)},
800eeca4
JW
357
358#undef BR
359#define BR(a,b,c,d) \
bde78a07
NC
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
800eeca4 363 {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
bde78a07 364 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
800eeca4 365 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
bde78a07 366 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
800eeca4 367 {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
bde78a07 368 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
800eeca4 369 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
bde78a07 370 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
800eeca4 371 {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
bde78a07 372 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
800eeca4 373 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
bde78a07 374 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
800eeca4 375 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
bde78a07 376 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
800eeca4 377 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
bde78a07 378 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
800eeca4
JW
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)},
bde78a07
NC
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)},
800eeca4 435#undef BR
bde78a07
NC
436#undef BRT
437
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},
800eeca4 462
bde78a07 463 /* Branch predict. */
800eeca4 464#define BRP(a,b) \
bde78a07 465 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
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
475
bde78a07 476 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
800eeca4
JW
477 };
478
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
ae66e5d7 488#undef bWhc
800eeca4
JW
489#undef bX6
490#undef mBtype
491#undef mD
492#undef mIh
493#undef mPa
494#undef mPr
495#undef mWha
496#undef mWhb
ae66e5d7 497#undef mWhc
800eeca4
JW
498#undef mX6
499#undef OpX6
500#undef OpPaWhaD
ae66e5d7 501#undef OpPaWhcD
800eeca4
JW
502#undef OpBtypePaWhaD
503#undef OpBtypePaWhaDPr
504#undef OpX6BtypePaWhaD
505#undef OpX6BtypePaWhaDPr
506#undef OpIhWhb
507#undef OpX6IhWhb
bde78a07 508#undef EMPTY