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, 59 Temple Place - Suite 330, Boston, MA
|
---|
20 | 02111-1307, 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 |
|
---|
201 | {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
|
---|
202 |
|
---|
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},
|
---|
227 |
|
---|
228 | #define BRP(a,b,c) \
|
---|
229 | B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
|
---|
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 |
|
---|
240 | {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
|
---|
241 | {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
|
---|
242 |
|
---|
243 | #define BR(a,b) \
|
---|
244 | B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
|
---|
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 |
|
---|
253 | #define BR(a,b,c) \
|
---|
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
|
---|
257 | {"br.cond.sptk.few", BR (0, 0, 0)},
|
---|
258 | {"br.cond.sptk", BRP (0, 0, 0)},
|
---|
259 | {"br.cond.sptk.few.clr", BR (0, 0, 1)},
|
---|
260 | {"br.cond.sptk.clr", BRP (0, 0, 1)},
|
---|
261 | {"br.cond.spnt.few", BR (0, 1, 0)},
|
---|
262 | {"br.cond.spnt", BRP (0, 1, 0)},
|
---|
263 | {"br.cond.spnt.few.clr", BR (0, 1, 1)},
|
---|
264 | {"br.cond.spnt.clr", BRP (0, 1, 1)},
|
---|
265 | {"br.cond.dptk.few", BR (0, 2, 0)},
|
---|
266 | {"br.cond.dptk", BRP (0, 2, 0)},
|
---|
267 | {"br.cond.dptk.few.clr", BR (0, 2, 1)},
|
---|
268 | {"br.cond.dptk.clr", BRP (0, 2, 1)},
|
---|
269 | {"br.cond.dpnt.few", BR (0, 3, 0)},
|
---|
270 | {"br.cond.dpnt", BRP (0, 3, 0)},
|
---|
271 | {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
|
---|
272 | {"br.cond.dpnt.clr", BRP (0, 3, 1)},
|
---|
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)},
|
---|
282 | {"br.sptk", BRP (0, 0, 0)},
|
---|
283 | {"br.sptk.few.clr", BR (0, 0, 1)},
|
---|
284 | {"br.sptk.clr", BRP (0, 0, 1)},
|
---|
285 | {"br.spnt.few", BR (0, 1, 0)},
|
---|
286 | {"br.spnt", BRP (0, 1, 0)},
|
---|
287 | {"br.spnt.few.clr", BR (0, 1, 1)},
|
---|
288 | {"br.spnt.clr", BRP (0, 1, 1)},
|
---|
289 | {"br.dptk.few", BR (0, 2, 0)},
|
---|
290 | {"br.dptk", BRP (0, 2, 0)},
|
---|
291 | {"br.dptk.few.clr", BR (0, 2, 1)},
|
---|
292 | {"br.dptk.clr", BRP (0, 2, 1)},
|
---|
293 | {"br.dpnt.few", BR (0, 3, 0)},
|
---|
294 | {"br.dpnt", BRP (0, 3, 0)},
|
---|
295 | {"br.dpnt.few.clr", BR (0, 3, 1)},
|
---|
296 | {"br.dpnt.clr", BRP (0, 3, 1)},
|
---|
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
|
---|
306 | #undef BRP
|
---|
307 |
|
---|
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)},
|
---|
358 |
|
---|
359 | #undef BR
|
---|
360 | #define BR(a,b,c,d) \
|
---|
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
|
---|
364 | {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
|
---|
365 | {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
|
---|
366 | {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
|
---|
367 | {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
|
---|
368 | {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
|
---|
369 | {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
|
---|
370 | {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
|
---|
371 | {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
|
---|
372 | {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
|
---|
373 | {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
|
---|
374 | {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
|
---|
375 | {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
|
---|
376 | {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
|
---|
377 | {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
|
---|
378 | {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
|
---|
379 | {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
|
---|
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)},
|
---|
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)},
|
---|
436 | #undef BR
|
---|
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},
|
---|
463 |
|
---|
464 | /* Branch predict. */
|
---|
465 | #define BRP(a,b) \
|
---|
466 | B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
|
---|
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 |
|
---|
477 | {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
|
---|
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
|
---|
489 | #undef bWhc
|
---|
490 | #undef bX6
|
---|
491 | #undef mBtype
|
---|
492 | #undef mD
|
---|
493 | #undef mIh
|
---|
494 | #undef mPa
|
---|
495 | #undef mPr
|
---|
496 | #undef mWha
|
---|
497 | #undef mWhb
|
---|
498 | #undef mWhc
|
---|
499 | #undef mX6
|
---|
500 | #undef OpX6
|
---|
501 | #undef OpPaWhaD
|
---|
502 | #undef OpPaWhcD
|
---|
503 | #undef OpBtypePaWhaD
|
---|
504 | #undef OpBtypePaWhaDPr
|
---|
505 | #undef OpX6BtypePaWhaD
|
---|
506 | #undef OpX6BtypePaWhaDPr
|
---|
507 | #undef OpIhWhb
|
---|
508 | #undef OpX6IhWhb
|
---|
509 | #undef EMPTY
|
---|