Commit | Line | Data |
---|---|---|
800eeca4 | 1 | /* ia64-opc-b.c -- IA-64 `B' opcode table. |
060d22b0 | 2 | Copyright 1998, 1999, 2000 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 | |
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) | |
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 | ||
72 | struct ia64_opcode ia64_opcodes_b[] = | |
73 | { | |
74 | /* B-type instruction encodings (sorted according to major opcode) */ | |
75 | ||
76 | #define BR(a,b) \ | |
77 | B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO | |
78 | {"br.few", BR (0, 0)}, | |
79 | {"br", BR (0, 0)}, | |
80 | {"br.few.clr", BR (0, 1)}, | |
81 | {"br.clr", BR (0, 1)}, | |
82 | {"br.many", BR (1, 0)}, | |
83 | {"br.many.clr", BR (1, 1)}, | |
84 | #undef BR | |
85 | ||
86 | #define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2} | |
87 | {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)}, | |
88 | {"br.cond.sptk", BR (0x20, 0, 0, 0, 0), PSEUDO}, | |
89 | {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)}, | |
90 | {"br.cond.sptk.clr", BR (0x20, 0, 0, 0, 1), PSEUDO}, | |
91 | {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)}, | |
92 | {"br.cond.spnt", BR (0x20, 0, 0, 1, 0), PSEUDO}, | |
93 | {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)}, | |
94 | {"br.cond.spnt.clr", BR (0x20, 0, 0, 1, 1), PSEUDO}, | |
95 | {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)}, | |
96 | {"br.cond.dptk", BR (0x20, 0, 0, 2, 0), PSEUDO}, | |
97 | {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)}, | |
98 | {"br.cond.dptk.clr", BR (0x20, 0, 0, 2, 1), PSEUDO}, | |
99 | {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)}, | |
100 | {"br.cond.dpnt", BR (0x20, 0, 0, 3, 0), PSEUDO}, | |
101 | {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)}, | |
102 | {"br.cond.dpnt.clr", BR (0x20, 0, 0, 3, 1), PSEUDO}, | |
103 | {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)}, | |
104 | {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)}, | |
105 | {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)}, | |
106 | {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)}, | |
107 | {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)}, | |
108 | {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)}, | |
109 | {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)}, | |
110 | {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)}, | |
111 | {"br.sptk.few", BR (0x20, 0, 0, 0, 0)}, | |
112 | {"br.sptk", BR (0x20, 0, 0, 0, 0), PSEUDO}, | |
113 | {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)}, | |
114 | {"br.sptk.clr", BR (0x20, 0, 0, 0, 1), PSEUDO}, | |
115 | {"br.spnt.few", BR (0x20, 0, 0, 1, 0)}, | |
116 | {"br.spnt", BR (0x20, 0, 0, 1, 0), PSEUDO}, | |
117 | {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)}, | |
118 | {"br.spnt.clr", BR (0x20, 0, 0, 1, 1), PSEUDO}, | |
119 | {"br.dptk.few", BR (0x20, 0, 0, 2, 0)}, | |
120 | {"br.dptk", BR (0x20, 0, 0, 2, 0), PSEUDO}, | |
121 | {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)}, | |
122 | {"br.dptk.clr", BR (0x20, 0, 0, 2, 1), PSEUDO}, | |
123 | {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)}, | |
124 | {"br.dpnt", BR (0x20, 0, 0, 3, 0), PSEUDO}, | |
125 | {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)}, | |
126 | {"br.dpnt.clr", BR (0x20, 0, 0, 3, 1), PSEUDO}, | |
127 | {"br.sptk.many", BR (0x20, 0, 1, 0, 0)}, | |
128 | {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)}, | |
129 | {"br.spnt.many", BR (0x20, 0, 1, 1, 0)}, | |
130 | {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)}, | |
131 | {"br.dptk.many", BR (0x20, 0, 1, 2, 0)}, | |
132 | {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)}, | |
133 | {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)}, | |
134 | {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)}, | |
135 | {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)}, | |
136 | {"br.ia.sptk", BR (0x20, 1, 0, 0, 0), PSEUDO}, | |
137 | {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)}, | |
138 | {"br.ia.sptk.clr", BR (0x20, 1, 0, 0, 1), PSEUDO}, | |
139 | {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)}, | |
140 | {"br.ia.spnt", BR (0x20, 1, 0, 1, 0), PSEUDO}, | |
141 | {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)}, | |
142 | {"br.ia.spnt.clr", BR (0x20, 1, 0, 1, 1), PSEUDO}, | |
143 | {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)}, | |
144 | {"br.ia.dptk", BR (0x20, 1, 0, 2, 0), PSEUDO}, | |
145 | {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)}, | |
146 | {"br.ia.dptk.clr", BR (0x20, 1, 0, 2, 1), PSEUDO}, | |
147 | {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)}, | |
148 | {"br.ia.dpnt", BR (0x20, 1, 0, 3, 0), PSEUDO}, | |
149 | {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)}, | |
150 | {"br.ia.dpnt.clr", BR (0x20, 1, 0, 3, 1), PSEUDO}, | |
151 | {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)}, | |
152 | {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)}, | |
153 | {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)}, | |
154 | {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)}, | |
155 | {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)}, | |
156 | {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)}, | |
157 | {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)}, | |
158 | {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)}, | |
159 | {"br.ret.sptk.few", BR (0x21, 4, 0, 0, 0), MOD_RRBS}, | |
160 | {"br.ret.sptk", BR (0x21, 4, 0, 0, 0), PSEUDO | MOD_RRBS}, | |
161 | {"br.ret.sptk.few.clr", BR (0x21, 4, 0, 0, 1), MOD_RRBS}, | |
162 | {"br.ret.sptk.clr", BR (0x21, 4, 0, 0, 1), PSEUDO | MOD_RRBS}, | |
163 | {"br.ret.spnt.few", BR (0x21, 4, 0, 1, 0), MOD_RRBS}, | |
164 | {"br.ret.spnt", BR (0x21, 4, 0, 1, 0), PSEUDO | MOD_RRBS}, | |
165 | {"br.ret.spnt.few.clr", BR (0x21, 4, 0, 1, 1), MOD_RRBS}, | |
166 | {"br.ret.spnt.clr", BR (0x21, 4, 0, 1, 1), PSEUDO | MOD_RRBS}, | |
167 | {"br.ret.dptk.few", BR (0x21, 4, 0, 2, 0), MOD_RRBS}, | |
168 | {"br.ret.dptk", BR (0x21, 4, 0, 2, 0), PSEUDO | MOD_RRBS}, | |
169 | {"br.ret.dptk.few.clr", BR (0x21, 4, 0, 2, 1), MOD_RRBS}, | |
170 | {"br.ret.dptk.clr", BR (0x21, 4, 0, 2, 1), PSEUDO | MOD_RRBS}, | |
171 | {"br.ret.dpnt.few", BR (0x21, 4, 0, 3, 0), MOD_RRBS}, | |
172 | {"br.ret.dpnt", BR (0x21, 4, 0, 3, 0), PSEUDO | MOD_RRBS}, | |
173 | {"br.ret.dpnt.few.clr", BR (0x21, 4, 0, 3, 1), MOD_RRBS}, | |
174 | {"br.ret.dpnt.clr", BR (0x21, 4, 0, 3, 1), PSEUDO | MOD_RRBS}, | |
175 | {"br.ret.sptk.many", BR (0x21, 4, 1, 0, 0), MOD_RRBS}, | |
176 | {"br.ret.sptk.many.clr", BR (0x21, 4, 1, 0, 1), MOD_RRBS}, | |
177 | {"br.ret.spnt.many", BR (0x21, 4, 1, 1, 0), MOD_RRBS}, | |
178 | {"br.ret.spnt.many.clr", BR (0x21, 4, 1, 1, 1), MOD_RRBS}, | |
179 | {"br.ret.dptk.many", BR (0x21, 4, 1, 2, 0), MOD_RRBS}, | |
180 | {"br.ret.dptk.many.clr", BR (0x21, 4, 1, 2, 1), MOD_RRBS}, | |
181 | {"br.ret.dpnt.many", BR (0x21, 4, 1, 3, 0), MOD_RRBS}, | |
182 | {"br.ret.dpnt.many.clr", BR (0x21, 4, 1, 3, 1), MOD_RRBS}, | |
183 | #undef BR | |
184 | ||
185 | {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS}, | |
186 | {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS}, | |
187 | {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS}, | |
188 | {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS}, | |
189 | {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV}, | |
190 | {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV}, | |
191 | {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED}, | |
192 | ||
193 | {"break.b", B0, OpX6 (0, 0x00), {IMMU21}}, | |
194 | ||
ae66e5d7 L |
195 | {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}}, |
196 | {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO}, | |
197 | {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}}, | |
198 | {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO}, | |
199 | {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}}, | |
200 | {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO}, | |
201 | {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}}, | |
202 | {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO}, | |
203 | {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}}, | |
204 | {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO}, | |
205 | {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}}, | |
206 | {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO}, | |
207 | {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}}, | |
208 | {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO}, | |
209 | {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}}, | |
210 | {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO}, | |
211 | {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}}, | |
212 | {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}}, | |
213 | {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}}, | |
214 | {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}}, | |
215 | {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}}, | |
216 | {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}}, | |
217 | {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}}, | |
218 | {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}}, | |
800eeca4 JW |
219 | |
220 | #define BRP(a,b,c) \ | |
221 | B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED | |
222 | {"brp.sptk", BRP (0x10, 0, 0)}, | |
223 | {"brp.dptk", BRP (0x10, 0, 2)}, | |
224 | {"brp.sptk.imp", BRP (0x10, 1, 0)}, | |
225 | {"brp.dptk.imp", BRP (0x10, 1, 2)}, | |
226 | {"brp.ret.sptk", BRP (0x11, 0, 0)}, | |
227 | {"brp.ret.dptk", BRP (0x11, 0, 2)}, | |
228 | {"brp.ret.sptk.imp", BRP (0x11, 1, 0)}, | |
229 | {"brp.ret.dptk.imp", BRP (0x11, 1, 2)}, | |
230 | #undef BRP | |
231 | ||
232 | {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}}, | |
233 | ||
234 | #define BR(a,b) \ | |
235 | B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO | |
236 | {"br.few", BR (0, 0)}, | |
237 | {"br", BR (0, 0)}, | |
238 | {"br.few.clr", BR (0, 1)}, | |
239 | {"br.clr", BR (0, 1)}, | |
240 | {"br.many", BR (1, 0)}, | |
241 | {"br.many.clr", BR (1, 1)}, | |
242 | #undef BR | |
243 | ||
aa170a07 TW |
244 | #define BR(a,b,c) \ |
245 | B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c} | |
246 | {"br.cond.sptk.few", BR (0, 0, 0)}, | |
247 | {"br.cond.sptk", BR (0, 0, 0), PSEUDO}, | |
248 | {"br.cond.sptk.few.clr", BR (0, 0, 1)}, | |
249 | {"br.cond.sptk.clr", BR (0, 0, 1), PSEUDO}, | |
250 | {"br.cond.spnt.few", BR (0, 1, 0)}, | |
251 | {"br.cond.spnt", BR (0, 1, 0), PSEUDO}, | |
252 | {"br.cond.spnt.few.clr", BR (0, 1, 1)}, | |
253 | {"br.cond.spnt.clr", BR (0, 1, 1), PSEUDO}, | |
254 | {"br.cond.dptk.few", BR (0, 2, 0)}, | |
255 | {"br.cond.dptk", BR (0, 2, 0), PSEUDO}, | |
256 | {"br.cond.dptk.few.clr", BR (0, 2, 1)}, | |
257 | {"br.cond.dptk.clr", BR (0, 2, 1), PSEUDO}, | |
258 | {"br.cond.dpnt.few", BR (0, 3, 0)}, | |
259 | {"br.cond.dpnt", BR (0, 3, 0), PSEUDO}, | |
260 | {"br.cond.dpnt.few.clr", BR (0, 3, 1)}, | |
261 | {"br.cond.dpnt.clr", BR (0, 3, 1), PSEUDO}, | |
262 | {"br.cond.sptk.many", BR (1, 0, 0)}, | |
263 | {"br.cond.sptk.many.clr", BR (1, 0, 1)}, | |
264 | {"br.cond.spnt.many", BR (1, 1, 0)}, | |
265 | {"br.cond.spnt.many.clr", BR (1, 1, 1)}, | |
266 | {"br.cond.dptk.many", BR (1, 2, 0)}, | |
267 | {"br.cond.dptk.many.clr", BR (1, 2, 1)}, | |
268 | {"br.cond.dpnt.many", BR (1, 3, 0)}, | |
269 | {"br.cond.dpnt.many.clr", BR (1, 3, 1)}, | |
270 | {"br.sptk.few", BR (0, 0, 0)}, | |
271 | {"br.sptk", BR (0, 0, 0), PSEUDO}, | |
272 | {"br.sptk.few.clr", BR (0, 0, 1)}, | |
273 | {"br.sptk.clr", BR (0, 0, 1), PSEUDO}, | |
274 | {"br.spnt.few", BR (0, 1, 0)}, | |
275 | {"br.spnt", BR (0, 1, 0), PSEUDO}, | |
276 | {"br.spnt.few.clr", BR (0, 1, 1)}, | |
277 | {"br.spnt.clr", BR (0, 1, 1), PSEUDO}, | |
278 | {"br.dptk.few", BR (0, 2, 0)}, | |
279 | {"br.dptk", BR (0, 2, 0), PSEUDO}, | |
280 | {"br.dptk.few.clr", BR (0, 2, 1)}, | |
281 | {"br.dptk.clr", BR (0, 2, 1), PSEUDO}, | |
282 | {"br.dpnt.few", BR (0, 3, 0)}, | |
283 | {"br.dpnt", BR (0, 3, 0), PSEUDO}, | |
284 | {"br.dpnt.few.clr", BR (0, 3, 1)}, | |
285 | {"br.dpnt.clr", BR (0, 3, 1), PSEUDO}, | |
286 | {"br.sptk.many", BR (1, 0, 0)}, | |
287 | {"br.sptk.many.clr", BR (1, 0, 1)}, | |
288 | {"br.spnt.many", BR (1, 1, 0)}, | |
289 | {"br.spnt.many.clr", BR (1, 1, 1)}, | |
290 | {"br.dptk.many", BR (1, 2, 0)}, | |
291 | {"br.dptk.many.clr", BR (1, 2, 1)}, | |
292 | {"br.dpnt.many", BR (1, 3, 0)}, | |
293 | {"br.dpnt.many.clr", BR (1, 3, 1)}, | |
294 | #undef BR | |
800eeca4 JW |
295 | |
296 | #define BR(a,b,c,d) \ | |
297 | B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | |
298 | {"br.wexit.sptk.few", BR (2, 0, 0, 0) | MOD_RRBS}, | |
299 | {"br.wexit.sptk", BR (2, 0, 0, 0) | PSEUDO | MOD_RRBS}, | |
300 | {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1) | MOD_RRBS}, | |
301 | {"br.wexit.sptk.clr", BR (2, 0, 0, 1) | PSEUDO | MOD_RRBS}, | |
302 | {"br.wexit.spnt.few", BR (2, 0, 1, 0) | MOD_RRBS}, | |
303 | {"br.wexit.spnt", BR (2, 0, 1, 0) | PSEUDO | MOD_RRBS}, | |
304 | {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1) | MOD_RRBS}, | |
305 | {"br.wexit.spnt.clr", BR (2, 0, 1, 1) | PSEUDO | MOD_RRBS}, | |
306 | {"br.wexit.dptk.few", BR (2, 0, 2, 0) | MOD_RRBS}, | |
307 | {"br.wexit.dptk", BR (2, 0, 2, 0) | PSEUDO | MOD_RRBS}, | |
308 | {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1) | MOD_RRBS}, | |
309 | {"br.wexit.dptk.clr", BR (2, 0, 2, 1) | PSEUDO | MOD_RRBS}, | |
310 | {"br.wexit.dpnt.few", BR (2, 0, 3, 0) | MOD_RRBS}, | |
311 | {"br.wexit.dpnt", BR (2, 0, 3, 0) | PSEUDO | MOD_RRBS}, | |
312 | {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1) | MOD_RRBS}, | |
313 | {"br.wexit.dpnt.clr", BR (2, 0, 3, 1) | PSEUDO | MOD_RRBS}, | |
314 | {"br.wexit.sptk.many", BR (2, 1, 0, 0) | MOD_RRBS}, | |
315 | {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1) | MOD_RRBS}, | |
316 | {"br.wexit.spnt.many", BR (2, 1, 1, 0) | MOD_RRBS}, | |
317 | {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1) | MOD_RRBS}, | |
318 | {"br.wexit.dptk.many", BR (2, 1, 2, 0) | MOD_RRBS}, | |
319 | {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1) | MOD_RRBS}, | |
320 | {"br.wexit.dpnt.many", BR (2, 1, 3, 0) | MOD_RRBS}, | |
321 | {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1) | MOD_RRBS}, | |
322 | {"br.wtop.sptk.few", BR (3, 0, 0, 0) | MOD_RRBS}, | |
323 | {"br.wtop.sptk", BR (3, 0, 0, 0) | PSEUDO | MOD_RRBS}, | |
324 | {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1) | MOD_RRBS}, | |
325 | {"br.wtop.sptk.clr", BR (3, 0, 0, 1) | PSEUDO | MOD_RRBS}, | |
326 | {"br.wtop.spnt.few", BR (3, 0, 1, 0) | MOD_RRBS}, | |
327 | {"br.wtop.spnt", BR (3, 0, 1, 0) | PSEUDO | MOD_RRBS}, | |
328 | {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1) | MOD_RRBS}, | |
329 | {"br.wtop.spnt.clr", BR (3, 0, 1, 1) | PSEUDO | MOD_RRBS}, | |
330 | {"br.wtop.dptk.few", BR (3, 0, 2, 0) | MOD_RRBS}, | |
331 | {"br.wtop.dptk", BR (3, 0, 2, 0) | PSEUDO | MOD_RRBS}, | |
332 | {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1) | MOD_RRBS}, | |
333 | {"br.wtop.dptk.clr", BR (3, 0, 2, 1) | PSEUDO | MOD_RRBS}, | |
334 | {"br.wtop.dpnt.few", BR (3, 0, 3, 0) | MOD_RRBS}, | |
335 | {"br.wtop.dpnt", BR (3, 0, 3, 0) | PSEUDO | MOD_RRBS}, | |
336 | {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1) | MOD_RRBS}, | |
337 | {"br.wtop.dpnt.clr", BR (3, 0, 3, 1) | PSEUDO | MOD_RRBS}, | |
338 | {"br.wtop.sptk.many", BR (3, 1, 0, 0) | MOD_RRBS}, | |
339 | {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1) | MOD_RRBS}, | |
340 | {"br.wtop.spnt.many", BR (3, 1, 1, 0) | MOD_RRBS}, | |
341 | {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1) | MOD_RRBS}, | |
342 | {"br.wtop.dptk.many", BR (3, 1, 2, 0) | MOD_RRBS}, | |
343 | {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1) | MOD_RRBS}, | |
344 | {"br.wtop.dpnt.many", BR (3, 1, 3, 0) | MOD_RRBS}, | |
345 | {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1) | MOD_RRBS}, | |
346 | ||
347 | #undef BR | |
348 | #define BR(a,b,c,d) \ | |
349 | B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | |
350 | {"br.cloop.sptk.few", BR (5, 0, 0, 0)}, | |
351 | {"br.cloop.sptk", BR (5, 0, 0, 0) | PSEUDO}, | |
352 | {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)}, | |
353 | {"br.cloop.sptk.clr", BR (5, 0, 0, 1) | PSEUDO}, | |
354 | {"br.cloop.spnt.few", BR (5, 0, 1, 0)}, | |
355 | {"br.cloop.spnt", BR (5, 0, 1, 0) | PSEUDO}, | |
356 | {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)}, | |
357 | {"br.cloop.spnt.clr", BR (5, 0, 1, 1) | PSEUDO}, | |
358 | {"br.cloop.dptk.few", BR (5, 0, 2, 0)}, | |
359 | {"br.cloop.dptk", BR (5, 0, 2, 0) | PSEUDO}, | |
360 | {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)}, | |
361 | {"br.cloop.dptk.clr", BR (5, 0, 2, 1) | PSEUDO}, | |
362 | {"br.cloop.dpnt.few", BR (5, 0, 3, 0)}, | |
363 | {"br.cloop.dpnt", BR (5, 0, 3, 0) | PSEUDO}, | |
364 | {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)}, | |
365 | {"br.cloop.dpnt.clr", BR (5, 0, 3, 1) | PSEUDO}, | |
366 | {"br.cloop.sptk.many", BR (5, 1, 0, 0)}, | |
367 | {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)}, | |
368 | {"br.cloop.spnt.many", BR (5, 1, 1, 0)}, | |
369 | {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)}, | |
370 | {"br.cloop.dptk.many", BR (5, 1, 2, 0)}, | |
371 | {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)}, | |
372 | {"br.cloop.dpnt.many", BR (5, 1, 3, 0)}, | |
373 | {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)}, | |
374 | {"br.cexit.sptk.few", BR (6, 0, 0, 0) | MOD_RRBS}, | |
375 | {"br.cexit.sptk", BR (6, 0, 0, 0) | PSEUDO | MOD_RRBS}, | |
376 | {"br.cexit.sptk.few.clr", BR (6, 0, 0, 1) | MOD_RRBS}, | |
377 | {"br.cexit.sptk.clr", BR (6, 0, 0, 1) | PSEUDO | MOD_RRBS}, | |
378 | {"br.cexit.spnt.few", BR (6, 0, 1, 0) | MOD_RRBS}, | |
379 | {"br.cexit.spnt", BR (6, 0, 1, 0) | PSEUDO | MOD_RRBS}, | |
380 | {"br.cexit.spnt.few.clr", BR (6, 0, 1, 1) | MOD_RRBS}, | |
381 | {"br.cexit.spnt.clr", BR (6, 0, 1, 1) | PSEUDO | MOD_RRBS}, | |
382 | {"br.cexit.dptk.few", BR (6, 0, 2, 0) | MOD_RRBS}, | |
383 | {"br.cexit.dptk", BR (6, 0, 2, 0) | PSEUDO | MOD_RRBS}, | |
384 | {"br.cexit.dptk.few.clr", BR (6, 0, 2, 1) | MOD_RRBS}, | |
385 | {"br.cexit.dptk.clr", BR (6, 0, 2, 1) | PSEUDO | MOD_RRBS}, | |
386 | {"br.cexit.dpnt.few", BR (6, 0, 3, 0) | MOD_RRBS}, | |
387 | {"br.cexit.dpnt", BR (6, 0, 3, 0) | PSEUDO | MOD_RRBS}, | |
388 | {"br.cexit.dpnt.few.clr", BR (6, 0, 3, 1) | MOD_RRBS}, | |
389 | {"br.cexit.dpnt.clr", BR (6, 0, 3, 1) | PSEUDO | MOD_RRBS}, | |
390 | {"br.cexit.sptk.many", BR (6, 1, 0, 0) | MOD_RRBS}, | |
391 | {"br.cexit.sptk.many.clr", BR (6, 1, 0, 1) | MOD_RRBS}, | |
392 | {"br.cexit.spnt.many", BR (6, 1, 1, 0) | MOD_RRBS}, | |
393 | {"br.cexit.spnt.many.clr", BR (6, 1, 1, 1) | MOD_RRBS}, | |
394 | {"br.cexit.dptk.many", BR (6, 1, 2, 0) | MOD_RRBS}, | |
395 | {"br.cexit.dptk.many.clr", BR (6, 1, 2, 1) | MOD_RRBS}, | |
396 | {"br.cexit.dpnt.many", BR (6, 1, 3, 0) | MOD_RRBS}, | |
397 | {"br.cexit.dpnt.many.clr", BR (6, 1, 3, 1) | MOD_RRBS}, | |
398 | {"br.ctop.sptk.few", BR (7, 0, 0, 0) | MOD_RRBS}, | |
399 | {"br.ctop.sptk", BR (7, 0, 0, 0) | PSEUDO | MOD_RRBS}, | |
400 | {"br.ctop.sptk.few.clr", BR (7, 0, 0, 1) | MOD_RRBS}, | |
401 | {"br.ctop.sptk.clr", BR (7, 0, 0, 1) | PSEUDO | MOD_RRBS}, | |
402 | {"br.ctop.spnt.few", BR (7, 0, 1, 0) | MOD_RRBS}, | |
403 | {"br.ctop.spnt", BR (7, 0, 1, 0) | PSEUDO | MOD_RRBS}, | |
404 | {"br.ctop.spnt.few.clr", BR (7, 0, 1, 1) | MOD_RRBS}, | |
405 | {"br.ctop.spnt.clr", BR (7, 0, 1, 1) | PSEUDO | MOD_RRBS}, | |
406 | {"br.ctop.dptk.few", BR (7, 0, 2, 0) | MOD_RRBS}, | |
407 | {"br.ctop.dptk", BR (7, 0, 2, 0) | PSEUDO | MOD_RRBS}, | |
408 | {"br.ctop.dptk.few.clr", BR (7, 0, 2, 1) | MOD_RRBS}, | |
409 | {"br.ctop.dptk.clr", BR (7, 0, 2, 1) | PSEUDO | MOD_RRBS}, | |
410 | {"br.ctop.dpnt.few", BR (7, 0, 3, 0) | MOD_RRBS}, | |
411 | {"br.ctop.dpnt", BR (7, 0, 3, 0) | PSEUDO | MOD_RRBS}, | |
412 | {"br.ctop.dpnt.few.clr", BR (7, 0, 3, 1) | MOD_RRBS}, | |
413 | {"br.ctop.dpnt.clr", BR (7, 0, 3, 1) | PSEUDO | MOD_RRBS}, | |
414 | {"br.ctop.sptk.many", BR (7, 1, 0, 0) | MOD_RRBS}, | |
415 | {"br.ctop.sptk.many.clr", BR (7, 1, 0, 1) | MOD_RRBS}, | |
416 | {"br.ctop.spnt.many", BR (7, 1, 1, 0) | MOD_RRBS}, | |
417 | {"br.ctop.spnt.many.clr", BR (7, 1, 1, 1) | MOD_RRBS}, | |
418 | {"br.ctop.dptk.many", BR (7, 1, 2, 0) | MOD_RRBS}, | |
419 | {"br.ctop.dptk.many.clr", BR (7, 1, 2, 1) | MOD_RRBS}, | |
420 | {"br.ctop.dpnt.many", BR (7, 1, 3, 0) | MOD_RRBS}, | |
421 | {"br.ctop.dpnt.many.clr", BR (7, 1, 3, 1) | MOD_RRBS}, | |
422 | ||
423 | #undef BR | |
424 | #define BR(a,b,c,d) \ | |
425 | B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | |
426 | {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}}, | |
427 | {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO}, | |
428 | {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}}, | |
429 | {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO}, | |
430 | {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}}, | |
431 | {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO}, | |
432 | {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}}, | |
433 | {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO}, | |
434 | {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}}, | |
435 | {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO}, | |
436 | {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}}, | |
437 | {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO}, | |
438 | {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}}, | |
439 | {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO}, | |
440 | {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}}, | |
441 | {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO}, | |
442 | {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}}, | |
443 | {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}}, | |
444 | {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}}, | |
445 | {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}}, | |
446 | {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}}, | |
447 | {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}}, | |
448 | {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}}, | |
449 | {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}}, | |
450 | #undef BR | |
451 | ||
452 | /* branch predict */ | |
453 | #define BRP(a,b) \ | |
454 | B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED | |
455 | {"brp.sptk", BRP (0, 0)}, | |
456 | {"brp.loop", BRP (0, 1)}, | |
457 | {"brp.dptk", BRP (0, 2)}, | |
458 | {"brp.exit", BRP (0, 3)}, | |
459 | {"brp.sptk.imp", BRP (1, 0)}, | |
460 | {"brp.loop.imp", BRP (1, 1)}, | |
461 | {"brp.dptk.imp", BRP (1, 2)}, | |
462 | {"brp.exit.imp", BRP (1, 3)}, | |
463 | #undef BRP | |
464 | ||
465 | {0} | |
466 | }; | |
467 | ||
468 | #undef B0 | |
469 | #undef B | |
470 | #undef bBtype | |
471 | #undef bD | |
472 | #undef bIh | |
473 | #undef bPa | |
474 | #undef bPr | |
475 | #undef bWha | |
476 | #undef bWhb | |
ae66e5d7 | 477 | #undef bWhc |
800eeca4 JW |
478 | #undef bX6 |
479 | #undef mBtype | |
480 | #undef mD | |
481 | #undef mIh | |
482 | #undef mPa | |
483 | #undef mPr | |
484 | #undef mWha | |
485 | #undef mWhb | |
ae66e5d7 | 486 | #undef mWhc |
800eeca4 JW |
487 | #undef mX6 |
488 | #undef OpX6 | |
489 | #undef OpPaWhaD | |
ae66e5d7 | 490 | #undef OpPaWhcD |
800eeca4 JW |
491 | #undef OpBtypePaWhaD |
492 | #undef OpBtypePaWhaDPr | |
493 | #undef OpX6BtypePaWhaD | |
494 | #undef OpX6BtypePaWhaDPr | |
495 | #undef OpIhWhb | |
496 | #undef OpX6IhWhb |