gas/
[deliverable/binutils-gdb.git] / opcodes / ia64-opc-b.c
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>
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, 51 Franklin Street - Fifth Floor, Boston, MA
20 02110-1301, 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)
35 #define bWhc(x) (((ia64_insn) ((x) & 0x7)) << 32)
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)
45 #define mWhc bWhc (-1)
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)
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)
71
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
76 struct ia64_opcode ia64_opcodes_b[] =
77 {
78 /* B-type instruction encodings (sorted according to major opcode) */
79
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
89
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
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},
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},
202
203 {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
204
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},
229
230 #define BRP(a,b,c) \
231 B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
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
242 {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
243 {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
244
245 #define BR(a,b) \
246 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
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
255 #define BR(a,b,c) \
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
259 {"br.cond.sptk.few", BR (0, 0, 0)},
260 {"br.cond.sptk", BRP (0, 0, 0)},
261 {"br.cond.sptk.few.clr", BR (0, 0, 1)},
262 {"br.cond.sptk.clr", BRP (0, 0, 1)},
263 {"br.cond.spnt.few", BR (0, 1, 0)},
264 {"br.cond.spnt", BRP (0, 1, 0)},
265 {"br.cond.spnt.few.clr", BR (0, 1, 1)},
266 {"br.cond.spnt.clr", BRP (0, 1, 1)},
267 {"br.cond.dptk.few", BR (0, 2, 0)},
268 {"br.cond.dptk", BRP (0, 2, 0)},
269 {"br.cond.dptk.few.clr", BR (0, 2, 1)},
270 {"br.cond.dptk.clr", BRP (0, 2, 1)},
271 {"br.cond.dpnt.few", BR (0, 3, 0)},
272 {"br.cond.dpnt", BRP (0, 3, 0)},
273 {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
274 {"br.cond.dpnt.clr", BRP (0, 3, 1)},
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)},
284 {"br.sptk", BRP (0, 0, 0)},
285 {"br.sptk.few.clr", BR (0, 0, 1)},
286 {"br.sptk.clr", BRP (0, 0, 1)},
287 {"br.spnt.few", BR (0, 1, 0)},
288 {"br.spnt", BRP (0, 1, 0)},
289 {"br.spnt.few.clr", BR (0, 1, 1)},
290 {"br.spnt.clr", BRP (0, 1, 1)},
291 {"br.dptk.few", BR (0, 2, 0)},
292 {"br.dptk", BRP (0, 2, 0)},
293 {"br.dptk.few.clr", BR (0, 2, 1)},
294 {"br.dptk.clr", BRP (0, 2, 1)},
295 {"br.dpnt.few", BR (0, 3, 0)},
296 {"br.dpnt", BRP (0, 3, 0)},
297 {"br.dpnt.few.clr", BR (0, 3, 1)},
298 {"br.dpnt.clr", BRP (0, 3, 1)},
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
308 #undef BRP
309
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)},
360
361 #undef BR
362 #define BR(a,b,c,d) \
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
366 {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
367 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
368 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
369 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
370 {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
371 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
372 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
373 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
374 {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
375 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
376 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
377 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
378 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
379 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
380 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
381 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
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)},
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)},
438 #undef BR
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},
465
466 /* Branch predict. */
467 #define BRP(a,b) \
468 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
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
479 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
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
491 #undef bWhc
492 #undef bX6
493 #undef mBtype
494 #undef mD
495 #undef mIh
496 #undef mPa
497 #undef mPr
498 #undef mWha
499 #undef mWhb
500 #undef mWhc
501 #undef mX6
502 #undef OpX6
503 #undef OpPaWhaD
504 #undef OpPaWhcD
505 #undef OpBtypePaWhaD
506 #undef OpBtypePaWhaDPr
507 #undef OpX6BtypePaWhaD
508 #undef OpX6BtypePaWhaDPr
509 #undef OpIhWhb
510 #undef OpX6IhWhb
511 #undef EMPTY
This page took 0.061618 seconds and 5 git commands to generate.