Update the address and phone number of the FSF
[deliverable/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
f4321104
NC
19 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20 02110-1301, USA. */
800eeca4
JW
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
c10d9d8f 192
bde78a07
NC
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},
c10d9d8f 241 {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
800eeca4
JW
242
243#define BR(a,b) \
bde78a07 244 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
800eeca4
JW
245 {"br.few", BR (0, 0)},
246 {"br", BR (0, 0)},
247 {"br.few.clr", BR (0, 1)},
248 {"br.clr", BR (0, 1)},
249 {"br.many", BR (1, 0)},
250 {"br.many.clr", BR (1, 1)},
251#undef BR
252
aa170a07 253#define BR(a,b,c) \
bde78a07
NC
254 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
255#define BRP(a,b,c) \
256 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
aa170a07 257 {"br.cond.sptk.few", BR (0, 0, 0)},
bde78a07 258 {"br.cond.sptk", BRP (0, 0, 0)},
aa170a07 259 {"br.cond.sptk.few.clr", BR (0, 0, 1)},
bde78a07 260 {"br.cond.sptk.clr", BRP (0, 0, 1)},
aa170a07 261 {"br.cond.spnt.few", BR (0, 1, 0)},
bde78a07 262 {"br.cond.spnt", BRP (0, 1, 0)},
aa170a07 263 {"br.cond.spnt.few.clr", BR (0, 1, 1)},
bde78a07 264 {"br.cond.spnt.clr", BRP (0, 1, 1)},
aa170a07 265 {"br.cond.dptk.few", BR (0, 2, 0)},
bde78a07 266 {"br.cond.dptk", BRP (0, 2, 0)},
aa170a07 267 {"br.cond.dptk.few.clr", BR (0, 2, 1)},
bde78a07 268 {"br.cond.dptk.clr", BRP (0, 2, 1)},
aa170a07 269 {"br.cond.dpnt.few", BR (0, 3, 0)},
bde78a07 270 {"br.cond.dpnt", BRP (0, 3, 0)},
aa170a07 271 {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 272 {"br.cond.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
273 {"br.cond.sptk.many", BR (1, 0, 0)},
274 {"br.cond.sptk.many.clr", BR (1, 0, 1)},
275 {"br.cond.spnt.many", BR (1, 1, 0)},
276 {"br.cond.spnt.many.clr", BR (1, 1, 1)},
277 {"br.cond.dptk.many", BR (1, 2, 0)},
278 {"br.cond.dptk.many.clr", BR (1, 2, 1)},
279 {"br.cond.dpnt.many", BR (1, 3, 0)},
280 {"br.cond.dpnt.many.clr", BR (1, 3, 1)},
281 {"br.sptk.few", BR (0, 0, 0)},
bde78a07 282 {"br.sptk", BRP (0, 0, 0)},
aa170a07 283 {"br.sptk.few.clr", BR (0, 0, 1)},
bde78a07 284 {"br.sptk.clr", BRP (0, 0, 1)},
aa170a07 285 {"br.spnt.few", BR (0, 1, 0)},
bde78a07 286 {"br.spnt", BRP (0, 1, 0)},
aa170a07 287 {"br.spnt.few.clr", BR (0, 1, 1)},
bde78a07 288 {"br.spnt.clr", BRP (0, 1, 1)},
aa170a07 289 {"br.dptk.few", BR (0, 2, 0)},
bde78a07 290 {"br.dptk", BRP (0, 2, 0)},
aa170a07 291 {"br.dptk.few.clr", BR (0, 2, 1)},
bde78a07 292 {"br.dptk.clr", BRP (0, 2, 1)},
aa170a07 293 {"br.dpnt.few", BR (0, 3, 0)},
bde78a07 294 {"br.dpnt", BRP (0, 3, 0)},
aa170a07 295 {"br.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 296 {"br.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
297 {"br.sptk.many", BR (1, 0, 0)},
298 {"br.sptk.many.clr", BR (1, 0, 1)},
299 {"br.spnt.many", BR (1, 1, 0)},
300 {"br.spnt.many.clr", BR (1, 1, 1)},
301 {"br.dptk.many", BR (1, 2, 0)},
302 {"br.dptk.many.clr", BR (1, 2, 1)},
303 {"br.dpnt.many", BR (1, 3, 0)},
304 {"br.dpnt.many.clr", BR (1, 3, 1)},
305#undef BR
bde78a07 306#undef BRP
800eeca4 307
bde78a07
NC
308#define BR(a,b,c,d, e) \
309 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
310 {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)},
311 {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
312 {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)},
313 {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
314 {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)},
315 {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
316 {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)},
317 {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
318 {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)},
319 {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
320 {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)},
321 {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
322 {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)},
323 {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
324 {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)},
325 {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
326 {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)},
327 {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
328 {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)},
329 {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
330 {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)},
331 {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
332 {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)},
333 {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
334 {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)},
335 {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
336 {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)},
337 {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
338 {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)},
339 {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
340 {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)},
341 {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
342 {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)},
343 {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
344 {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)},
345 {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
346 {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)},
347 {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
348 {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)},
349 {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
350 {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)},
351 {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)},
352 {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)},
353 {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)},
354 {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)},
355 {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)},
356 {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)},
357 {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)},
800eeca4
JW
358
359#undef BR
360#define BR(a,b,c,d) \
bde78a07
NC
361 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
362#define BRT(a,b,c,d,e) \
363 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
800eeca4 364 {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
bde78a07 365 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
800eeca4 366 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
bde78a07 367 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
800eeca4 368 {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
bde78a07 369 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
800eeca4 370 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
bde78a07 371 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
800eeca4 372 {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
bde78a07 373 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
800eeca4 374 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
bde78a07 375 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
800eeca4 376 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
bde78a07 377 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
800eeca4 378 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
bde78a07 379 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
800eeca4
JW
380 {"br.cloop.sptk.many", BR (5, 1, 0, 0)},
381 {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
382 {"br.cloop.spnt.many", BR (5, 1, 1, 0)},
383 {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
384 {"br.cloop.dptk.many", BR (5, 1, 2, 0)},
385 {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
386 {"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
387 {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
bde78a07
NC
388 {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)},
389 {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
390 {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)},
391 {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
392 {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)},
393 {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
394 {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)},
395 {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
396 {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)},
397 {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
398 {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)},
399 {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
400 {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)},
401 {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
402 {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)},
403 {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
404 {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)},
405 {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
406 {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)},
407 {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
408 {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)},
409 {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
410 {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)},
411 {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
412 {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)},
413 {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
414 {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)},
415 {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
416 {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)},
417 {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
418 {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)},
419 {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
420 {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)},
421 {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
422 {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)},
423 {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
424 {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)},
425 {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
426 {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)},
427 {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
428 {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)},
429 {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)},
430 {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)},
431 {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)},
432 {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)},
433 {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)},
434 {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)},
435 {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)},
800eeca4 436#undef BR
bde78a07
NC
437#undef BRT
438
439 {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
440 {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
441 {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
442 {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
443 {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
444 {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
445 {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
446 {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
447 {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
448 {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
449 {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
450 {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
451 {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
452 {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
453 {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
454 {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
455 {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
456 {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
457 {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
458 {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
459 {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
460 {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
461 {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
462 {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
800eeca4 463
bde78a07 464 /* Branch predict. */
800eeca4 465#define BRP(a,b) \
bde78a07 466 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
467 {"brp.sptk", BRP (0, 0)},
468 {"brp.loop", BRP (0, 1)},
469 {"brp.dptk", BRP (0, 2)},
470 {"brp.exit", BRP (0, 3)},
471 {"brp.sptk.imp", BRP (1, 0)},
472 {"brp.loop.imp", BRP (1, 1)},
473 {"brp.dptk.imp", BRP (1, 2)},
474 {"brp.exit.imp", BRP (1, 3)},
475#undef BRP
476
bde78a07 477 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
800eeca4
JW
478 };
479
480#undef B0
481#undef B
482#undef bBtype
483#undef bD
484#undef bIh
485#undef bPa
486#undef bPr
487#undef bWha
488#undef bWhb
ae66e5d7 489#undef bWhc
800eeca4
JW
490#undef bX6
491#undef mBtype
492#undef mD
493#undef mIh
494#undef mPa
495#undef mPr
496#undef mWha
497#undef mWhb
ae66e5d7 498#undef mWhc
800eeca4
JW
499#undef mX6
500#undef OpX6
501#undef OpPaWhaD
ae66e5d7 502#undef OpPaWhcD
800eeca4
JW
503#undef OpBtypePaWhaD
504#undef OpBtypePaWhaDPr
505#undef OpX6BtypePaWhaD
506#undef OpX6BtypePaWhaDPr
507#undef OpIhWhb
508#undef OpX6IhWhb
bde78a07 509#undef EMPTY
This page took 0.291325 seconds and 4 git commands to generate.