]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - opcodes/ia64-opc-b.c
Automatic date update in version.in
[thirdparty/binutils-gdb.git] / opcodes / ia64-opc-b.c
CommitLineData
800eeca4 1/* ia64-opc-b.c -- IA-64 `B' opcode table.
fd67aa11 2 Copyright (C) 1998-2024 Free Software Foundation, Inc.
800eeca4
JW
3 Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
4
9b201bb5 5 This file is part of the GNU opcodes library.
800eeca4 6
9b201bb5
NC
7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
800eeca4 11
9b201bb5
NC
12 It is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
800eeca4
JW
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
9b201bb5
NC
19 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20 MA 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},
7f3dfb9c
L
200 {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
201 {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
800eeca4 202
bde78a07 203 {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
800eeca4 204
bde78a07
NC
205 {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
206 {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
207 {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
208 {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
209 {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
210 {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
211 {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
212 {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
213 {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
214 {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
215 {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
216 {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
217 {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
218 {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
219 {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
220 {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
221 {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
222 {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
223 {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
224 {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
225 {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
226 {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
227 {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
228 {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
800eeca4
JW
229
230#define BRP(a,b,c) \
bde78a07 231 B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
232 {"brp.sptk", BRP (0x10, 0, 0)},
233 {"brp.dptk", BRP (0x10, 0, 2)},
234 {"brp.sptk.imp", BRP (0x10, 1, 0)},
235 {"brp.dptk.imp", BRP (0x10, 1, 2)},
236 {"brp.ret.sptk", BRP (0x11, 0, 0)},
237 {"brp.ret.dptk", BRP (0x11, 0, 2)},
238 {"brp.ret.sptk.imp", BRP (0x11, 1, 0)},
239 {"brp.ret.dptk.imp", BRP (0x11, 1, 2)},
240#undef BRP
241
bde78a07 242 {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
c10d9d8f 243 {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
800eeca4
JW
244
245#define BR(a,b) \
bde78a07 246 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
800eeca4
JW
247 {"br.few", BR (0, 0)},
248 {"br", BR (0, 0)},
249 {"br.few.clr", BR (0, 1)},
250 {"br.clr", BR (0, 1)},
251 {"br.many", BR (1, 0)},
252 {"br.many.clr", BR (1, 1)},
253#undef BR
254
aa170a07 255#define BR(a,b,c) \
bde78a07
NC
256 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
257#define BRP(a,b,c) \
258 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
aa170a07 259 {"br.cond.sptk.few", BR (0, 0, 0)},
bde78a07 260 {"br.cond.sptk", BRP (0, 0, 0)},
aa170a07 261 {"br.cond.sptk.few.clr", BR (0, 0, 1)},
bde78a07 262 {"br.cond.sptk.clr", BRP (0, 0, 1)},
aa170a07 263 {"br.cond.spnt.few", BR (0, 1, 0)},
bde78a07 264 {"br.cond.spnt", BRP (0, 1, 0)},
aa170a07 265 {"br.cond.spnt.few.clr", BR (0, 1, 1)},
bde78a07 266 {"br.cond.spnt.clr", BRP (0, 1, 1)},
aa170a07 267 {"br.cond.dptk.few", BR (0, 2, 0)},
bde78a07 268 {"br.cond.dptk", BRP (0, 2, 0)},
aa170a07 269 {"br.cond.dptk.few.clr", BR (0, 2, 1)},
bde78a07 270 {"br.cond.dptk.clr", BRP (0, 2, 1)},
aa170a07 271 {"br.cond.dpnt.few", BR (0, 3, 0)},
bde78a07 272 {"br.cond.dpnt", BRP (0, 3, 0)},
aa170a07 273 {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 274 {"br.cond.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
275 {"br.cond.sptk.many", BR (1, 0, 0)},
276 {"br.cond.sptk.many.clr", BR (1, 0, 1)},
277 {"br.cond.spnt.many", BR (1, 1, 0)},
278 {"br.cond.spnt.many.clr", BR (1, 1, 1)},
279 {"br.cond.dptk.many", BR (1, 2, 0)},
280 {"br.cond.dptk.many.clr", BR (1, 2, 1)},
281 {"br.cond.dpnt.many", BR (1, 3, 0)},
282 {"br.cond.dpnt.many.clr", BR (1, 3, 1)},
283 {"br.sptk.few", BR (0, 0, 0)},
bde78a07 284 {"br.sptk", BRP (0, 0, 0)},
aa170a07 285 {"br.sptk.few.clr", BR (0, 0, 1)},
bde78a07 286 {"br.sptk.clr", BRP (0, 0, 1)},
aa170a07 287 {"br.spnt.few", BR (0, 1, 0)},
bde78a07 288 {"br.spnt", BRP (0, 1, 0)},
aa170a07 289 {"br.spnt.few.clr", BR (0, 1, 1)},
bde78a07 290 {"br.spnt.clr", BRP (0, 1, 1)},
aa170a07 291 {"br.dptk.few", BR (0, 2, 0)},
bde78a07 292 {"br.dptk", BRP (0, 2, 0)},
aa170a07 293 {"br.dptk.few.clr", BR (0, 2, 1)},
bde78a07 294 {"br.dptk.clr", BRP (0, 2, 1)},
aa170a07 295 {"br.dpnt.few", BR (0, 3, 0)},
bde78a07 296 {"br.dpnt", BRP (0, 3, 0)},
aa170a07 297 {"br.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 298 {"br.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
299 {"br.sptk.many", BR (1, 0, 0)},
300 {"br.sptk.many.clr", BR (1, 0, 1)},
301 {"br.spnt.many", BR (1, 1, 0)},
302 {"br.spnt.many.clr", BR (1, 1, 1)},
303 {"br.dptk.many", BR (1, 2, 0)},
304 {"br.dptk.many.clr", BR (1, 2, 1)},
305 {"br.dpnt.many", BR (1, 3, 0)},
306 {"br.dpnt.many.clr", BR (1, 3, 1)},
307#undef BR
bde78a07 308#undef BRP
800eeca4 309
bde78a07
NC
310#define BR(a,b,c,d, e) \
311 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
312 {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)},
313 {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
314 {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)},
315 {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
316 {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)},
317 {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
318 {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)},
319 {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
320 {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)},
321 {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
322 {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)},
323 {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
324 {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)},
325 {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
326 {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)},
327 {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
328 {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)},
329 {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
330 {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)},
331 {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
332 {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)},
333 {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
334 {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)},
335 {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
336 {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)},
337 {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
338 {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)},
339 {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
340 {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)},
341 {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
342 {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)},
343 {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
344 {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)},
345 {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
346 {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)},
347 {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
348 {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)},
349 {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
350 {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)},
351 {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
352 {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)},
353 {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)},
354 {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)},
355 {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)},
356 {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)},
357 {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)},
358 {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)},
359 {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)},
800eeca4
JW
360
361#undef BR
362#define BR(a,b,c,d) \
bde78a07
NC
363 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
364#define BRT(a,b,c,d,e) \
365 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
800eeca4 366 {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
bde78a07 367 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
800eeca4 368 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
bde78a07 369 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
800eeca4 370 {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
bde78a07 371 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
800eeca4 372 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
bde78a07 373 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
800eeca4 374 {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
bde78a07 375 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
800eeca4 376 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
bde78a07 377 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
800eeca4 378 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
bde78a07 379 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
800eeca4 380 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
bde78a07 381 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
800eeca4
JW
382 {"br.cloop.sptk.many", BR (5, 1, 0, 0)},
383 {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
384 {"br.cloop.spnt.many", BR (5, 1, 1, 0)},
385 {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
386 {"br.cloop.dptk.many", BR (5, 1, 2, 0)},
387 {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
388 {"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
389 {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
bde78a07
NC
390 {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)},
391 {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
392 {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)},
393 {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
394 {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)},
395 {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
396 {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)},
397 {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
398 {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)},
399 {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
400 {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)},
401 {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
402 {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)},
403 {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
404 {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)},
405 {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
406 {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)},
407 {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
408 {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)},
409 {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
410 {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)},
411 {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
412 {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)},
413 {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
414 {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)},
415 {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
416 {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)},
417 {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
418 {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)},
419 {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
420 {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)},
421 {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
422 {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)},
423 {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
424 {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)},
425 {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
426 {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)},
427 {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
428 {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)},
429 {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
430 {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)},
431 {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)},
432 {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)},
433 {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)},
434 {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)},
435 {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)},
436 {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)},
437 {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)},
800eeca4 438#undef BR
bde78a07
NC
439#undef BRT
440
441 {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
442 {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
443 {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
444 {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
445 {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
446 {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
447 {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
448 {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
449 {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
450 {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
451 {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
452 {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
453 {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
454 {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
455 {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
456 {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
457 {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
458 {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
459 {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
460 {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
461 {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
462 {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
463 {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
464 {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
800eeca4 465
bde78a07 466 /* Branch predict. */
800eeca4 467#define BRP(a,b) \
bde78a07 468 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
469 {"brp.sptk", BRP (0, 0)},
470 {"brp.loop", BRP (0, 1)},
471 {"brp.dptk", BRP (0, 2)},
472 {"brp.exit", BRP (0, 3)},
473 {"brp.sptk.imp", BRP (1, 0)},
474 {"brp.loop.imp", BRP (1, 1)},
475 {"brp.dptk.imp", BRP (1, 2)},
476 {"brp.exit.imp", BRP (1, 3)},
477#undef BRP
478
bde78a07 479 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
800eeca4
JW
480 };
481
482#undef B0
483#undef B
484#undef bBtype
485#undef bD
486#undef bIh
487#undef bPa
488#undef bPr
489#undef bWha
490#undef bWhb
ae66e5d7 491#undef bWhc
800eeca4
JW
492#undef bX6
493#undef mBtype
494#undef mD
495#undef mIh
496#undef mPa
497#undef mPr
498#undef mWha
499#undef mWhb
ae66e5d7 500#undef mWhc
800eeca4
JW
501#undef mX6
502#undef OpX6
503#undef OpPaWhaD
ae66e5d7 504#undef OpPaWhcD
800eeca4
JW
505#undef OpBtypePaWhaD
506#undef OpBtypePaWhaDPr
507#undef OpX6BtypePaWhaD
508#undef OpX6BtypePaWhaDPr
509#undef OpIhWhb
510#undef OpX6IhWhb
bde78a07 511#undef EMPTY