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