]>
Commit | Line | Data |
---|---|---|
1 | /* ia64-opc-b.c -- IA-64 `B' opcode table. | |
2 | Copyright (C) 1998-2019 Free Software Foundation, Inc. | |
3 | Contributed by David Mosberger-Tang <davidm@hpl.hp.com> | |
4 | ||
5 | This file is part of the GNU opcodes library. | |
6 | ||
7 | This library is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3, or (at your option) | |
10 | any later version. | |
11 | ||
12 | It is distributed in the hope that it will be useful, but WITHOUT | |
13 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
14 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
15 | 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, 51 Franklin Street - Fifth Floor, Boston, | |
20 | MA 02110-1301, 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 | {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL}, | |
201 | {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL}, | |
202 | ||
203 | {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY}, | |
204 | ||
205 | {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY}, | |
206 | {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL}, | |
207 | {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY}, | |
208 | {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL}, | |
209 | {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY}, | |
210 | {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL}, | |
211 | {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY}, | |
212 | {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL}, | |
213 | {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY}, | |
214 | {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL}, | |
215 | {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY}, | |
216 | {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL}, | |
217 | {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY}, | |
218 | {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL}, | |
219 | {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY}, | |
220 | {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL}, | |
221 | {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY}, | |
222 | {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY}, | |
223 | {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY}, | |
224 | {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY}, | |
225 | {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY}, | |
226 | {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY}, | |
227 | {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY}, | |
228 | {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY}, | |
229 | ||
230 | #define BRP(a,b,c) \ | |
231 | B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL | |
232 | {"brp.sptk", BRP (0x10, 0, 0)}, | |
233 | {"brp.dptk", BRP (0x10, 0, 2)}, | |
234 | {"brp.sptk.imp", BRP (0x10, 1, 0)}, | |
235 | {"brp.dptk.imp", BRP (0x10, 1, 2)}, | |
236 | {"brp.ret.sptk", BRP (0x11, 0, 0)}, | |
237 | {"brp.ret.dptk", BRP (0x11, 0, 2)}, | |
238 | {"brp.ret.sptk.imp", BRP (0x11, 1, 0)}, | |
239 | {"brp.ret.dptk.imp", BRP (0x11, 1, 2)}, | |
240 | #undef BRP | |
241 | ||
242 | {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY}, | |
243 | {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY}, | |
244 | ||
245 | #define BR(a,b) \ | |
246 | B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL | |
247 | {"br.few", BR (0, 0)}, | |
248 | {"br", BR (0, 0)}, | |
249 | {"br.few.clr", BR (0, 1)}, | |
250 | {"br.clr", BR (0, 1)}, | |
251 | {"br.many", BR (1, 0)}, | |
252 | {"br.many.clr", BR (1, 1)}, | |
253 | #undef BR | |
254 | ||
255 | #define BR(a,b,c) \ | |
256 | B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY | |
257 | #define BRP(a,b,c) \ | |
258 | B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL | |
259 | {"br.cond.sptk.few", BR (0, 0, 0)}, | |
260 | {"br.cond.sptk", BRP (0, 0, 0)}, | |
261 | {"br.cond.sptk.few.clr", BR (0, 0, 1)}, | |
262 | {"br.cond.sptk.clr", BRP (0, 0, 1)}, | |
263 | {"br.cond.spnt.few", BR (0, 1, 0)}, | |
264 | {"br.cond.spnt", BRP (0, 1, 0)}, | |
265 | {"br.cond.spnt.few.clr", BR (0, 1, 1)}, | |
266 | {"br.cond.spnt.clr", BRP (0, 1, 1)}, | |
267 | {"br.cond.dptk.few", BR (0, 2, 0)}, | |
268 | {"br.cond.dptk", BRP (0, 2, 0)}, | |
269 | {"br.cond.dptk.few.clr", BR (0, 2, 1)}, | |
270 | {"br.cond.dptk.clr", BRP (0, 2, 1)}, | |
271 | {"br.cond.dpnt.few", BR (0, 3, 0)}, | |
272 | {"br.cond.dpnt", BRP (0, 3, 0)}, | |
273 | {"br.cond.dpnt.few.clr", BR (0, 3, 1)}, | |
274 | {"br.cond.dpnt.clr", BRP (0, 3, 1)}, | |
275 | {"br.cond.sptk.many", BR (1, 0, 0)}, | |
276 | {"br.cond.sptk.many.clr", BR (1, 0, 1)}, | |
277 | {"br.cond.spnt.many", BR (1, 1, 0)}, | |
278 | {"br.cond.spnt.many.clr", BR (1, 1, 1)}, | |
279 | {"br.cond.dptk.many", BR (1, 2, 0)}, | |
280 | {"br.cond.dptk.many.clr", BR (1, 2, 1)}, | |
281 | {"br.cond.dpnt.many", BR (1, 3, 0)}, | |
282 | {"br.cond.dpnt.many.clr", BR (1, 3, 1)}, | |
283 | {"br.sptk.few", BR (0, 0, 0)}, | |
284 | {"br.sptk", BRP (0, 0, 0)}, | |
285 | {"br.sptk.few.clr", BR (0, 0, 1)}, | |
286 | {"br.sptk.clr", BRP (0, 0, 1)}, | |
287 | {"br.spnt.few", BR (0, 1, 0)}, | |
288 | {"br.spnt", BRP (0, 1, 0)}, | |
289 | {"br.spnt.few.clr", BR (0, 1, 1)}, | |
290 | {"br.spnt.clr", BRP (0, 1, 1)}, | |
291 | {"br.dptk.few", BR (0, 2, 0)}, | |
292 | {"br.dptk", BRP (0, 2, 0)}, | |
293 | {"br.dptk.few.clr", BR (0, 2, 1)}, | |
294 | {"br.dptk.clr", BRP (0, 2, 1)}, | |
295 | {"br.dpnt.few", BR (0, 3, 0)}, | |
296 | {"br.dpnt", BRP (0, 3, 0)}, | |
297 | {"br.dpnt.few.clr", BR (0, 3, 1)}, | |
298 | {"br.dpnt.clr", BRP (0, 3, 1)}, | |
299 | {"br.sptk.many", BR (1, 0, 0)}, | |
300 | {"br.sptk.many.clr", BR (1, 0, 1)}, | |
301 | {"br.spnt.many", BR (1, 1, 0)}, | |
302 | {"br.spnt.many.clr", BR (1, 1, 1)}, | |
303 | {"br.dptk.many", BR (1, 2, 0)}, | |
304 | {"br.dptk.many.clr", BR (1, 2, 1)}, | |
305 | {"br.dpnt.many", BR (1, 3, 0)}, | |
306 | {"br.dpnt.many.clr", BR (1, 3, 1)}, | |
307 | #undef BR | |
308 | #undef BRP | |
309 | ||
310 | #define BR(a,b,c,d, e) \ | |
311 | B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL | |
312 | {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)}, | |
313 | {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)}, | |
314 | {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)}, | |
315 | {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)}, | |
316 | {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)}, | |
317 | {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)}, | |
318 | {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)}, | |
319 | {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)}, | |
320 | {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)}, | |
321 | {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)}, | |
322 | {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)}, | |
323 | {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)}, | |
324 | {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)}, | |
325 | {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)}, | |
326 | {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)}, | |
327 | {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)}, | |
328 | {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)}, | |
329 | {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)}, | |
330 | {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)}, | |
331 | {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)}, | |
332 | {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)}, | |
333 | {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)}, | |
334 | {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)}, | |
335 | {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)}, | |
336 | {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)}, | |
337 | {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)}, | |
338 | {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)}, | |
339 | {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)}, | |
340 | {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)}, | |
341 | {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)}, | |
342 | {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)}, | |
343 | {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)}, | |
344 | {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)}, | |
345 | {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)}, | |
346 | {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)}, | |
347 | {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)}, | |
348 | {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)}, | |
349 | {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)}, | |
350 | {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)}, | |
351 | {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)}, | |
352 | {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)}, | |
353 | {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)}, | |
354 | {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)}, | |
355 | {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)}, | |
356 | {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)}, | |
357 | {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)}, | |
358 | {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)}, | |
359 | {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)}, | |
360 | ||
361 | #undef BR | |
362 | #define BR(a,b,c,d) \ | |
363 | B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL | |
364 | #define BRT(a,b,c,d,e) \ | |
365 | B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL | |
366 | {"br.cloop.sptk.few", BR (5, 0, 0, 0)}, | |
367 | {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)}, | |
368 | {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)}, | |
369 | {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)}, | |
370 | {"br.cloop.spnt.few", BR (5, 0, 1, 0)}, | |
371 | {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)}, | |
372 | {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)}, | |
373 | {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)}, | |
374 | {"br.cloop.dptk.few", BR (5, 0, 2, 0)}, | |
375 | {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)}, | |
376 | {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)}, | |
377 | {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)}, | |
378 | {"br.cloop.dpnt.few", BR (5, 0, 3, 0)}, | |
379 | {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)}, | |
380 | {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)}, | |
381 | {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)}, | |
382 | {"br.cloop.sptk.many", BR (5, 1, 0, 0)}, | |
383 | {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)}, | |
384 | {"br.cloop.spnt.many", BR (5, 1, 1, 0)}, | |
385 | {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)}, | |
386 | {"br.cloop.dptk.many", BR (5, 1, 2, 0)}, | |
387 | {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)}, | |
388 | {"br.cloop.dpnt.many", BR (5, 1, 3, 0)}, | |
389 | {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)}, | |
390 | {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)}, | |
391 | {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)}, | |
392 | {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)}, | |
393 | {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)}, | |
394 | {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)}, | |
395 | {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)}, | |
396 | {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)}, | |
397 | {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)}, | |
398 | {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)}, | |
399 | {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)}, | |
400 | {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)}, | |
401 | {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)}, | |
402 | {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)}, | |
403 | {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)}, | |
404 | {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)}, | |
405 | {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)}, | |
406 | {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)}, | |
407 | {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)}, | |
408 | {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)}, | |
409 | {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)}, | |
410 | {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)}, | |
411 | {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)}, | |
412 | {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)}, | |
413 | {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)}, | |
414 | {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)}, | |
415 | {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)}, | |
416 | {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)}, | |
417 | {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)}, | |
418 | {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)}, | |
419 | {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)}, | |
420 | {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)}, | |
421 | {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)}, | |
422 | {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)}, | |
423 | {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)}, | |
424 | {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)}, | |
425 | {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)}, | |
426 | {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)}, | |
427 | {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)}, | |
428 | {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)}, | |
429 | {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)}, | |
430 | {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)}, | |
431 | {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)}, | |
432 | {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)}, | |
433 | {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)}, | |
434 | {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)}, | |
435 | {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)}, | |
436 | {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)}, | |
437 | {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)}, | |
438 | #undef BR | |
439 | #undef BRT | |
440 | ||
441 | {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY}, | |
442 | {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
443 | {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY}, | |
444 | {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
445 | {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY}, | |
446 | {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
447 | {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY}, | |
448 | {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
449 | {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY}, | |
450 | {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
451 | {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY}, | |
452 | {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
453 | {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY}, | |
454 | {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
455 | {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY}, | |
456 | {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, | |
457 | {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY}, | |
458 | {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY}, | |
459 | {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY}, | |
460 | {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY}, | |
461 | {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY}, | |
462 | {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY}, | |
463 | {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY}, | |
464 | {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY}, | |
465 | ||
466 | /* Branch predict. */ | |
467 | #define BRP(a,b) \ | |
468 | B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL | |
469 | {"brp.sptk", BRP (0, 0)}, | |
470 | {"brp.loop", BRP (0, 1)}, | |
471 | {"brp.dptk", BRP (0, 2)}, | |
472 | {"brp.exit", BRP (0, 3)}, | |
473 | {"brp.sptk.imp", BRP (1, 0)}, | |
474 | {"brp.loop.imp", BRP (1, 1)}, | |
475 | {"brp.dptk.imp", BRP (1, 2)}, | |
476 | {"brp.exit.imp", BRP (1, 3)}, | |
477 | #undef BRP | |
478 | ||
479 | {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} | |
480 | }; | |
481 | ||
482 | #undef B0 | |
483 | #undef B | |
484 | #undef bBtype | |
485 | #undef bD | |
486 | #undef bIh | |
487 | #undef bPa | |
488 | #undef bPr | |
489 | #undef bWha | |
490 | #undef bWhb | |
491 | #undef bWhc | |
492 | #undef bX6 | |
493 | #undef mBtype | |
494 | #undef mD | |
495 | #undef mIh | |
496 | #undef mPa | |
497 | #undef mPr | |
498 | #undef mWha | |
499 | #undef mWhb | |
500 | #undef mWhc | |
501 | #undef mX6 | |
502 | #undef OpX6 | |
503 | #undef OpPaWhaD | |
504 | #undef OpPaWhcD | |
505 | #undef OpBtypePaWhaD | |
506 | #undef OpBtypePaWhaDPr | |
507 | #undef OpX6BtypePaWhaD | |
508 | #undef OpX6BtypePaWhaDPr | |
509 | #undef OpIhWhb | |
510 | #undef OpX6IhWhb | |
511 | #undef EMPTY |