Commit | Line | Data |
---|---|---|
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 |
76 | struct 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 |