Adjust for branch target encoding change
[deliverable/binutils-gdb.git] / opcodes / ia64-opc-b.c
CommitLineData
800eeca4 1/* ia64-opc-b.c -- IA-64 `B' opcode table.
aa820537 2 Copyright 1998, 1999, 2000, 2002, 2005, 2006, 2007, 2009
19a7219f 3 Free Software Foundation, Inc.
800eeca4
JW
4 Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
5
9b201bb5 6 This file is part of the GNU opcodes library.
800eeca4 7
9b201bb5
NC
8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
11 any later version.
800eeca4 12
9b201bb5
NC
13 It is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
800eeca4
JW
17
18 You should have received a copy of the GNU General Public License
19 along with this file; see the file COPYING. If not, write to the
9b201bb5
NC
20 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21 MA 02110-1301, USA. */
800eeca4
JW
22
23#include "ia64-opc.h"
24
25#define B0 IA64_TYPE_B, 0
26#define B IA64_TYPE_B, 1
27
28/* instruction bit fields: */
29#define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6)
30#define bD(x) (((ia64_insn) ((x) & 0x1)) << 35)
31#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 35)
32#define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12)
33#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0)
34#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33)
35#define bWhb(x) (((ia64_insn) ((x) & 0x3)) << 3)
ae66e5d7 36#define bWhc(x) (((ia64_insn) ((x) & 0x7)) << 32)
800eeca4
JW
37#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
38
39#define mBtype bBtype (-1)
40#define mD bD (-1)
41#define mIh bIh (-1)
42#define mPa bPa (-1)
43#define mPr bPr (-1)
44#define mWha bWha (-1)
45#define mWhb bWhb (-1)
ae66e5d7 46#define mWhc bWhc (-1)
800eeca4
JW
47#define mX6 bX6 (-1)
48
49#define OpX6(a,b) (bOp (a) | bX6 (b)), (mOp | mX6)
50#define OpPaWhaD(a,b,c,d) \
51 (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
ae66e5d7
L
52#define OpPaWhcD(a,b,c,d) \
53 (bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD)
800eeca4
JW
54#define OpBtypePaWhaD(a,b,c,d,e) \
55 (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
56 (mOp | mBtype | mPa | mWha | mD)
57#define OpBtypePaWhaDPr(a,b,c,d,e,f) \
58 (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
59 (mOp | mBtype | mPa | mWha | mD | mPr)
60#define OpX6BtypePaWhaD(a,b,c,d,e,f) \
61 (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
62 (mOp | mX6 | mBtype | mPa | mWha | mD)
63#define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
64 (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
65 (mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
66#define OpIhWhb(a,b,c) \
67 (bOp (a) | bIh (b) | bWhb (c)), \
68 (mOp | mIh | mWhb)
69#define OpX6IhWhb(a,b,c,d) \
70 (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
71 (mOp | mX6 | mIh | mWhb)
72
bde78a07
NC
73/* Used to initialise unused fields in ia64_opcode struct,
74 in order to stop gcc from complaining. */
75#define EMPTY 0,0,NULL
76
800eeca4
JW
77struct ia64_opcode ia64_opcodes_b[] =
78 {
79 /* B-type instruction encodings (sorted according to major opcode) */
80
81#define BR(a,b) \
bde78a07 82 B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
800eeca4
JW
83 {"br.few", BR (0, 0)},
84 {"br", BR (0, 0)},
85 {"br.few.clr", BR (0, 1)},
86 {"br.clr", BR (0, 1)},
87 {"br.many", BR (1, 0)},
88 {"br.many.clr", BR (1, 1)},
89#undef BR
90
bde78a07
NC
91#define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
92#define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
93#define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
800eeca4 94 {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)},
bde78a07 95 {"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)},
800eeca4 96 {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
bde78a07 97 {"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
800eeca4 98 {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)},
bde78a07 99 {"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)},
800eeca4 100 {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
bde78a07 101 {"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
800eeca4 102 {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)},
bde78a07 103 {"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)},
800eeca4 104 {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
bde78a07 105 {"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
800eeca4 106 {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)},
bde78a07 107 {"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)},
800eeca4 108 {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
bde78a07 109 {"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
800eeca4
JW
110 {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)},
111 {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
112 {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)},
113 {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
114 {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)},
115 {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
116 {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)},
117 {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
118 {"br.sptk.few", BR (0x20, 0, 0, 0, 0)},
bde78a07 119 {"br.sptk", BRP (0x20, 0, 0, 0, 0)},
800eeca4 120 {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
bde78a07 121 {"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
800eeca4 122 {"br.spnt.few", BR (0x20, 0, 0, 1, 0)},
bde78a07 123 {"br.spnt", BRP (0x20, 0, 0, 1, 0)},
800eeca4 124 {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
bde78a07 125 {"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
800eeca4 126 {"br.dptk.few", BR (0x20, 0, 0, 2, 0)},
bde78a07 127 {"br.dptk", BRP (0x20, 0, 0, 2, 0)},
800eeca4 128 {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
bde78a07 129 {"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
800eeca4 130 {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)},
bde78a07 131 {"br.dpnt", BRP (0x20, 0, 0, 3, 0)},
800eeca4 132 {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
bde78a07 133 {"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
800eeca4
JW
134 {"br.sptk.many", BR (0x20, 0, 1, 0, 0)},
135 {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
136 {"br.spnt.many", BR (0x20, 0, 1, 1, 0)},
137 {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
138 {"br.dptk.many", BR (0x20, 0, 1, 2, 0)},
139 {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
140 {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)},
141 {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
142 {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)},
bde78a07 143 {"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)},
800eeca4 144 {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)},
bde78a07 145 {"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)},
800eeca4 146 {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)},
bde78a07 147 {"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)},
800eeca4 148 {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)},
bde78a07 149 {"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)},
800eeca4 150 {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)},
bde78a07 151 {"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)},
800eeca4 152 {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)},
bde78a07 153 {"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)},
800eeca4 154 {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)},
bde78a07 155 {"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)},
800eeca4 156 {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)},
bde78a07 157 {"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)},
800eeca4
JW
158 {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)},
159 {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)},
160 {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)},
161 {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)},
162 {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)},
163 {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)},
164 {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)},
165 {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)},
bde78a07
NC
166 {"br.ret.sptk.few", BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
167 {"br.ret.sptk", BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
168 {"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
169 {"br.ret.sptk.clr", BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
170 {"br.ret.spnt.few", BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
171 {"br.ret.spnt", BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
172 {"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
173 {"br.ret.spnt.clr", BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
174 {"br.ret.dptk.few", BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
175 {"br.ret.dptk", BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
176 {"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
177 {"br.ret.dptk.clr", BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
178 {"br.ret.dpnt.few", BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
179 {"br.ret.dpnt", BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
180 {"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
181 {"br.ret.dpnt.clr", BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
182 {"br.ret.sptk.many", BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
183 {"br.ret.sptk.many.clr", BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
184 {"br.ret.spnt.many", BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
185 {"br.ret.spnt.many.clr", BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
186 {"br.ret.dptk.many", BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
187 {"br.ret.dptk.many.clr", BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
188 {"br.ret.dpnt.many", BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
189 {"br.ret.dpnt.many.clr", BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
800eeca4 190#undef BR
bde78a07
NC
191#undef BRP
192#undef BRT
c10d9d8f 193
bde78a07
NC
194 {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
195 {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
196 {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
197 {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
198 {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
199 {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
200 {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
7f3dfb9c
L
201 {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
202 {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
800eeca4 203
bde78a07 204 {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
800eeca4 205
bde78a07
NC
206 {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
207 {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
208 {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
209 {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
210 {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
211 {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
212 {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
213 {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
214 {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
215 {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
216 {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
217 {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
218 {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
219 {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
220 {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
221 {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
222 {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
223 {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
224 {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
225 {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
226 {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
227 {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
228 {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
229 {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
800eeca4
JW
230
231#define BRP(a,b,c) \
bde78a07 232 B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
233 {"brp.sptk", BRP (0x10, 0, 0)},
234 {"brp.dptk", BRP (0x10, 0, 2)},
235 {"brp.sptk.imp", BRP (0x10, 1, 0)},
236 {"brp.dptk.imp", BRP (0x10, 1, 2)},
237 {"brp.ret.sptk", BRP (0x11, 0, 0)},
238 {"brp.ret.dptk", BRP (0x11, 0, 2)},
239 {"brp.ret.sptk.imp", BRP (0x11, 1, 0)},
240 {"brp.ret.dptk.imp", BRP (0x11, 1, 2)},
241#undef BRP
242
bde78a07 243 {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
c10d9d8f 244 {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
800eeca4
JW
245
246#define BR(a,b) \
bde78a07 247 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
800eeca4
JW
248 {"br.few", BR (0, 0)},
249 {"br", BR (0, 0)},
250 {"br.few.clr", BR (0, 1)},
251 {"br.clr", BR (0, 1)},
252 {"br.many", BR (1, 0)},
253 {"br.many.clr", BR (1, 1)},
254#undef BR
255
aa170a07 256#define BR(a,b,c) \
bde78a07
NC
257 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
258#define BRP(a,b,c) \
259 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
aa170a07 260 {"br.cond.sptk.few", BR (0, 0, 0)},
bde78a07 261 {"br.cond.sptk", BRP (0, 0, 0)},
aa170a07 262 {"br.cond.sptk.few.clr", BR (0, 0, 1)},
bde78a07 263 {"br.cond.sptk.clr", BRP (0, 0, 1)},
aa170a07 264 {"br.cond.spnt.few", BR (0, 1, 0)},
bde78a07 265 {"br.cond.spnt", BRP (0, 1, 0)},
aa170a07 266 {"br.cond.spnt.few.clr", BR (0, 1, 1)},
bde78a07 267 {"br.cond.spnt.clr", BRP (0, 1, 1)},
aa170a07 268 {"br.cond.dptk.few", BR (0, 2, 0)},
bde78a07 269 {"br.cond.dptk", BRP (0, 2, 0)},
aa170a07 270 {"br.cond.dptk.few.clr", BR (0, 2, 1)},
bde78a07 271 {"br.cond.dptk.clr", BRP (0, 2, 1)},
aa170a07 272 {"br.cond.dpnt.few", BR (0, 3, 0)},
bde78a07 273 {"br.cond.dpnt", BRP (0, 3, 0)},
aa170a07 274 {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 275 {"br.cond.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
276 {"br.cond.sptk.many", BR (1, 0, 0)},
277 {"br.cond.sptk.many.clr", BR (1, 0, 1)},
278 {"br.cond.spnt.many", BR (1, 1, 0)},
279 {"br.cond.spnt.many.clr", BR (1, 1, 1)},
280 {"br.cond.dptk.many", BR (1, 2, 0)},
281 {"br.cond.dptk.many.clr", BR (1, 2, 1)},
282 {"br.cond.dpnt.many", BR (1, 3, 0)},
283 {"br.cond.dpnt.many.clr", BR (1, 3, 1)},
284 {"br.sptk.few", BR (0, 0, 0)},
bde78a07 285 {"br.sptk", BRP (0, 0, 0)},
aa170a07 286 {"br.sptk.few.clr", BR (0, 0, 1)},
bde78a07 287 {"br.sptk.clr", BRP (0, 0, 1)},
aa170a07 288 {"br.spnt.few", BR (0, 1, 0)},
bde78a07 289 {"br.spnt", BRP (0, 1, 0)},
aa170a07 290 {"br.spnt.few.clr", BR (0, 1, 1)},
bde78a07 291 {"br.spnt.clr", BRP (0, 1, 1)},
aa170a07 292 {"br.dptk.few", BR (0, 2, 0)},
bde78a07 293 {"br.dptk", BRP (0, 2, 0)},
aa170a07 294 {"br.dptk.few.clr", BR (0, 2, 1)},
bde78a07 295 {"br.dptk.clr", BRP (0, 2, 1)},
aa170a07 296 {"br.dpnt.few", BR (0, 3, 0)},
bde78a07 297 {"br.dpnt", BRP (0, 3, 0)},
aa170a07 298 {"br.dpnt.few.clr", BR (0, 3, 1)},
bde78a07 299 {"br.dpnt.clr", BRP (0, 3, 1)},
aa170a07
TW
300 {"br.sptk.many", BR (1, 0, 0)},
301 {"br.sptk.many.clr", BR (1, 0, 1)},
302 {"br.spnt.many", BR (1, 1, 0)},
303 {"br.spnt.many.clr", BR (1, 1, 1)},
304 {"br.dptk.many", BR (1, 2, 0)},
305 {"br.dptk.many.clr", BR (1, 2, 1)},
306 {"br.dpnt.many", BR (1, 3, 0)},
307 {"br.dpnt.many.clr", BR (1, 3, 1)},
308#undef BR
bde78a07 309#undef BRP
800eeca4 310
bde78a07
NC
311#define BR(a,b,c,d, e) \
312 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
313 {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)},
314 {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
315 {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)},
316 {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
317 {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)},
318 {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
319 {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)},
320 {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
321 {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)},
322 {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
323 {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)},
324 {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
325 {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)},
326 {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
327 {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)},
328 {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
329 {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)},
330 {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
331 {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)},
332 {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
333 {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)},
334 {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
335 {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)},
336 {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
337 {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)},
338 {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
339 {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)},
340 {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
341 {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)},
342 {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
343 {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)},
344 {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
345 {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)},
346 {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
347 {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)},
348 {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
349 {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)},
350 {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
351 {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)},
352 {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
353 {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)},
354 {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)},
355 {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)},
356 {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)},
357 {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)},
358 {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)},
359 {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)},
360 {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)},
800eeca4
JW
361
362#undef BR
363#define BR(a,b,c,d) \
bde78a07
NC
364 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
365#define BRT(a,b,c,d,e) \
366 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
800eeca4 367 {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
bde78a07 368 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
800eeca4 369 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
bde78a07 370 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
800eeca4 371 {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
bde78a07 372 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
800eeca4 373 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
bde78a07 374 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
800eeca4 375 {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
bde78a07 376 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
800eeca4 377 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
bde78a07 378 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
800eeca4 379 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
bde78a07 380 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
800eeca4 381 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
bde78a07 382 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
800eeca4
JW
383 {"br.cloop.sptk.many", BR (5, 1, 0, 0)},
384 {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
385 {"br.cloop.spnt.many", BR (5, 1, 1, 0)},
386 {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
387 {"br.cloop.dptk.many", BR (5, 1, 2, 0)},
388 {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
389 {"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
390 {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
bde78a07
NC
391 {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)},
392 {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
393 {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)},
394 {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
395 {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)},
396 {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
397 {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)},
398 {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
399 {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)},
400 {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
401 {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)},
402 {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
403 {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)},
404 {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
405 {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)},
406 {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
407 {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)},
408 {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
409 {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)},
410 {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
411 {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)},
412 {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
413 {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)},
414 {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
415 {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)},
416 {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
417 {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)},
418 {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
419 {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)},
420 {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
421 {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)},
422 {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
423 {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)},
424 {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
425 {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)},
426 {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
427 {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)},
428 {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
429 {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)},
430 {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
431 {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)},
432 {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)},
433 {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)},
434 {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)},
435 {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)},
436 {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)},
437 {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)},
438 {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)},
800eeca4 439#undef BR
bde78a07
NC
440#undef BRT
441
442 {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
443 {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
444 {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
445 {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
446 {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
447 {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
448 {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
449 {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
450 {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
451 {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
452 {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
453 {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
454 {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
455 {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
456 {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
457 {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
458 {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
459 {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
460 {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
461 {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
462 {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
463 {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
464 {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
465 {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
800eeca4 466
bde78a07 467 /* Branch predict. */
800eeca4 468#define BRP(a,b) \
bde78a07 469 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
800eeca4
JW
470 {"brp.sptk", BRP (0, 0)},
471 {"brp.loop", BRP (0, 1)},
472 {"brp.dptk", BRP (0, 2)},
473 {"brp.exit", BRP (0, 3)},
474 {"brp.sptk.imp", BRP (1, 0)},
475 {"brp.loop.imp", BRP (1, 1)},
476 {"brp.dptk.imp", BRP (1, 2)},
477 {"brp.exit.imp", BRP (1, 3)},
478#undef BRP
479
bde78a07 480 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
800eeca4
JW
481 };
482
483#undef B0
484#undef B
485#undef bBtype
486#undef bD
487#undef bIh
488#undef bPa
489#undef bPr
490#undef bWha
491#undef bWhb
ae66e5d7 492#undef bWhc
800eeca4
JW
493#undef bX6
494#undef mBtype
495#undef mD
496#undef mIh
497#undef mPa
498#undef mPr
499#undef mWha
500#undef mWhb
ae66e5d7 501#undef mWhc
800eeca4
JW
502#undef mX6
503#undef OpX6
504#undef OpPaWhaD
ae66e5d7 505#undef OpPaWhcD
800eeca4
JW
506#undef OpBtypePaWhaD
507#undef OpBtypePaWhaDPr
508#undef OpX6BtypePaWhaD
509#undef OpX6BtypePaWhaDPr
510#undef OpIhWhb
511#undef OpX6IhWhb
bde78a07 512#undef EMPTY
This page took 0.925319 seconds and 4 git commands to generate.