Annotation of src/external/gpl3/binutils/dist/opcodes/ia64-opc-b.c, Revision 1.1.1.2
1.1 skrll 1: /* ia64-opc-b.c -- IA-64 `B' opcode table.
1.1.1.2 ! christos 2: Copyright 1998, 1999, 2000, 2002, 2005, 2006, 2007, 2009
1.1 skrll 3: Free Software Foundation, Inc.
4: Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
5:
6: This file is part of the GNU opcodes library.
7:
8: This library is free software; you can redistribute it and/or modify
9: it under the terms of the GNU General Public License as published by
10: the Free Software Foundation; either version 3, or (at your option)
11: any later version.
12:
13: It is distributed in the hope that it will be useful, but WITHOUT
14: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16: License for more details.
17:
18: You should have received a copy of the GNU General Public License
19: along with this file; see the file COPYING. If not, write to the
20: Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21: MA 02110-1301, USA. */
22:
23: #include "ia64-opc.h"
24:
25: #define B0 IA64_TYPE_B, 0
26: #define B IA64_TYPE_B, 1
27:
28: /* instruction bit fields: */
29: #define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6)
30: #define bD(x) (((ia64_insn) ((x) & 0x1)) << 35)
31: #define bIh(x) (((ia64_insn) ((x) & 0x1)) << 35)
32: #define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12)
33: #define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0)
34: #define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33)
35: #define bWhb(x) (((ia64_insn) ((x) & 0x3)) << 3)
36: #define bWhc(x) (((ia64_insn) ((x) & 0x7)) << 32)
37: #define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
38:
39: #define mBtype bBtype (-1)
40: #define mD bD (-1)
41: #define mIh bIh (-1)
42: #define mPa bPa (-1)
43: #define mPr bPr (-1)
44: #define mWha bWha (-1)
45: #define mWhb bWhb (-1)
46: #define mWhc bWhc (-1)
47: #define mX6 bX6 (-1)
48:
49: #define OpX6(a,b) (bOp (a) | bX6 (b)), (mOp | mX6)
50: #define OpPaWhaD(a,b,c,d) \
51: (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
52: #define OpPaWhcD(a,b,c,d) \
53: (bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD)
54: #define OpBtypePaWhaD(a,b,c,d,e) \
55: (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
56: (mOp | mBtype | mPa | mWha | mD)
57: #define OpBtypePaWhaDPr(a,b,c,d,e,f) \
58: (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
59: (mOp | mBtype | mPa | mWha | mD | mPr)
60: #define OpX6BtypePaWhaD(a,b,c,d,e,f) \
61: (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
62: (mOp | mX6 | mBtype | mPa | mWha | mD)
63: #define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
64: (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
65: (mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
66: #define OpIhWhb(a,b,c) \
67: (bOp (a) | bIh (b) | bWhb (c)), \
68: (mOp | mIh | mWhb)
69: #define OpX6IhWhb(a,b,c,d) \
70: (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
71: (mOp | mX6 | mIh | mWhb)
72:
73: /* Used to initialise unused fields in ia64_opcode struct,
74: in order to stop gcc from complaining. */
75: #define EMPTY 0,0,NULL
76:
77: struct ia64_opcode ia64_opcodes_b[] =
78: {
79: /* B-type instruction encodings (sorted according to major opcode) */
80:
81: #define BR(a,b) \
82: B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
83: {"br.few", BR (0, 0)},
84: {"br", BR (0, 0)},
85: {"br.few.clr", BR (0, 1)},
86: {"br.clr", BR (0, 1)},
87: {"br.many", BR (1, 0)},
88: {"br.many.clr", BR (1, 1)},
89: #undef BR
90:
91: #define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
92: #define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
93: #define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
94: {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)},
95: {"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)},
96: {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
97: {"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
98: {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)},
99: {"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)},
100: {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
101: {"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
102: {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)},
103: {"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)},
104: {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
105: {"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
106: {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)},
107: {"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)},
108: {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
109: {"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
110: {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)},
111: {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
112: {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)},
113: {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
114: {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)},
115: {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
116: {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)},
117: {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
118: {"br.sptk.few", BR (0x20, 0, 0, 0, 0)},
119: {"br.sptk", BRP (0x20, 0, 0, 0, 0)},
120: {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
121: {"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
122: {"br.spnt.few", BR (0x20, 0, 0, 1, 0)},
123: {"br.spnt", BRP (0x20, 0, 0, 1, 0)},
124: {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
125: {"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
126: {"br.dptk.few", BR (0x20, 0, 0, 2, 0)},
127: {"br.dptk", BRP (0x20, 0, 0, 2, 0)},
128: {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
129: {"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
130: {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)},
131: {"br.dpnt", BRP (0x20, 0, 0, 3, 0)},
132: {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
133: {"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
134: {"br.sptk.many", BR (0x20, 0, 1, 0, 0)},
135: {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
136: {"br.spnt.many", BR (0x20, 0, 1, 1, 0)},
137: {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
138: {"br.dptk.many", BR (0x20, 0, 1, 2, 0)},
139: {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
140: {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)},
141: {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
142: {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)},
143: {"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)},
144: {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)},
145: {"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)},
146: {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)},
147: {"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)},
148: {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)},
149: {"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)},
150: {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)},
151: {"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)},
152: {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)},
153: {"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)},
154: {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)},
155: {"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)},
156: {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)},
157: {"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)},
158: {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)},
159: {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)},
160: {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)},
161: {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)},
162: {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)},
163: {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)},
164: {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)},
165: {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)},
166: {"br.ret.sptk.few", BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
167: {"br.ret.sptk", BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
168: {"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
169: {"br.ret.sptk.clr", BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
170: {"br.ret.spnt.few", BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
171: {"br.ret.spnt", BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
172: {"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
173: {"br.ret.spnt.clr", BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
174: {"br.ret.dptk.few", BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
175: {"br.ret.dptk", BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
176: {"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
177: {"br.ret.dptk.clr", BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
178: {"br.ret.dpnt.few", BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
179: {"br.ret.dpnt", BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
180: {"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
181: {"br.ret.dpnt.clr", BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
182: {"br.ret.sptk.many", BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
183: {"br.ret.sptk.many.clr", BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
184: {"br.ret.spnt.many", BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
185: {"br.ret.spnt.many.clr", BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
186: {"br.ret.dptk.many", BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
187: {"br.ret.dptk.many.clr", BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
188: {"br.ret.dpnt.many", BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
189: {"br.ret.dpnt.many.clr", BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
190: #undef BR
191: #undef BRP
192: #undef BRT
193:
194: {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
195: {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
196: {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
197: {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
198: {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
199: {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
200: {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
201: {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
202: {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
203:
204: {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
205:
206: {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
207: {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
208: {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
209: {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
210: {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
211: {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
212: {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
213: {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
214: {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
215: {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
216: {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
217: {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
218: {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
219: {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
220: {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
221: {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
222: {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
223: {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
224: {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
225: {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
226: {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
227: {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
228: {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
229: {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
230:
231: #define BRP(a,b,c) \
232: B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
233: {"brp.sptk", BRP (0x10, 0, 0)},
234: {"brp.dptk", BRP (0x10, 0, 2)},
235: {"brp.sptk.imp", BRP (0x10, 1, 0)},
236: {"brp.dptk.imp", BRP (0x10, 1, 2)},
237: {"brp.ret.sptk", BRP (0x11, 0, 0)},
238: {"brp.ret.dptk", BRP (0x11, 0, 2)},
239: {"brp.ret.sptk.imp", BRP (0x11, 1, 0)},
240: {"brp.ret.dptk.imp", BRP (0x11, 1, 2)},
241: #undef BRP
242:
243: {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
244: {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
245:
246: #define BR(a,b) \
247: B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
248: {"br.few", BR (0, 0)},
249: {"br", BR (0, 0)},
250: {"br.few.clr", BR (0, 1)},
251: {"br.clr", BR (0, 1)},
252: {"br.many", BR (1, 0)},
253: {"br.many.clr", BR (1, 1)},
254: #undef BR
255:
256: #define BR(a,b,c) \
257: B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
258: #define BRP(a,b,c) \
259: B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
260: {"br.cond.sptk.few", BR (0, 0, 0)},
261: {"br.cond.sptk", BRP (0, 0, 0)},
262: {"br.cond.sptk.few.clr", BR (0, 0, 1)},
263: {"br.cond.sptk.clr", BRP (0, 0, 1)},
264: {"br.cond.spnt.few", BR (0, 1, 0)},
265: {"br.cond.spnt", BRP (0, 1, 0)},
266: {"br.cond.spnt.few.clr", BR (0, 1, 1)},
267: {"br.cond.spnt.clr", BRP (0, 1, 1)},
268: {"br.cond.dptk.few", BR (0, 2, 0)},
269: {"br.cond.dptk", BRP (0, 2, 0)},
270: {"br.cond.dptk.few.clr", BR (0, 2, 1)},
271: {"br.cond.dptk.clr", BRP (0, 2, 1)},
272: {"br.cond.dpnt.few", BR (0, 3, 0)},
273: {"br.cond.dpnt", BRP (0, 3, 0)},
274: {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
275: {"br.cond.dpnt.clr", BRP (0, 3, 1)},
276: {"br.cond.sptk.many", BR (1, 0, 0)},
277: {"br.cond.sptk.many.clr", BR (1, 0, 1)},
278: {"br.cond.spnt.many", BR (1, 1, 0)},
279: {"br.cond.spnt.many.clr", BR (1, 1, 1)},
280: {"br.cond.dptk.many", BR (1, 2, 0)},
281: {"br.cond.dptk.many.clr", BR (1, 2, 1)},
282: {"br.cond.dpnt.many", BR (1, 3, 0)},
283: {"br.cond.dpnt.many.clr", BR (1, 3, 1)},
284: {"br.sptk.few", BR (0, 0, 0)},
285: {"br.sptk", BRP (0, 0, 0)},
286: {"br.sptk.few.clr", BR (0, 0, 1)},
287: {"br.sptk.clr", BRP (0, 0, 1)},
288: {"br.spnt.few", BR (0, 1, 0)},
289: {"br.spnt", BRP (0, 1, 0)},
290: {"br.spnt.few.clr", BR (0, 1, 1)},
291: {"br.spnt.clr", BRP (0, 1, 1)},
292: {"br.dptk.few", BR (0, 2, 0)},
293: {"br.dptk", BRP (0, 2, 0)},
294: {"br.dptk.few.clr", BR (0, 2, 1)},
295: {"br.dptk.clr", BRP (0, 2, 1)},
296: {"br.dpnt.few", BR (0, 3, 0)},
297: {"br.dpnt", BRP (0, 3, 0)},
298: {"br.dpnt.few.clr", BR (0, 3, 1)},
299: {"br.dpnt.clr", BRP (0, 3, 1)},
300: {"br.sptk.many", BR (1, 0, 0)},
301: {"br.sptk.many.clr", BR (1, 0, 1)},
302: {"br.spnt.many", BR (1, 1, 0)},
303: {"br.spnt.many.clr", BR (1, 1, 1)},
304: {"br.dptk.many", BR (1, 2, 0)},
305: {"br.dptk.many.clr", BR (1, 2, 1)},
306: {"br.dpnt.many", BR (1, 3, 0)},
307: {"br.dpnt.many.clr", BR (1, 3, 1)},
308: #undef BR
309: #undef BRP
310:
311: #define BR(a,b,c,d, e) \
312: B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
313: {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)},
314: {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
315: {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)},
316: {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
317: {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)},
318: {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
319: {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)},
320: {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
321: {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)},
322: {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
323: {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)},
324: {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
325: {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)},
326: {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
327: {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)},
328: {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
329: {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)},
330: {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
331: {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)},
332: {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
333: {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)},
334: {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
335: {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)},
336: {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
337: {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)},
338: {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
339: {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)},
340: {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
341: {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)},
342: {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
343: {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)},
344: {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
345: {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)},
346: {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
347: {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)},
348: {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
349: {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)},
350: {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
351: {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)},
352: {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
353: {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)},
354: {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)},
355: {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)},
356: {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)},
357: {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)},
358: {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)},
359: {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)},
360: {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)},
361:
362: #undef BR
363: #define BR(a,b,c,d) \
364: B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
365: #define BRT(a,b,c,d,e) \
366: B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
367: {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
368: {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
369: {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
370: {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
371: {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
372: {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
373: {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
374: {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
375: {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
376: {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
377: {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
378: {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
379: {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
380: {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
381: {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
382: {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
383: {"br.cloop.sptk.many", BR (5, 1, 0, 0)},
384: {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
385: {"br.cloop.spnt.many", BR (5, 1, 1, 0)},
386: {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
387: {"br.cloop.dptk.many", BR (5, 1, 2, 0)},
388: {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
389: {"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
390: {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
391: {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)},
392: {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
393: {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)},
394: {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
395: {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)},
396: {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
397: {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)},
398: {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
399: {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)},
400: {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
401: {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)},
402: {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
403: {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)},
404: {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
405: {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)},
406: {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
407: {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)},
408: {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
409: {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)},
410: {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
411: {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)},
412: {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
413: {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)},
414: {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
415: {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)},
416: {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
417: {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)},
418: {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
419: {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)},
420: {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
421: {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)},
422: {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
423: {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)},
424: {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
425: {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)},
426: {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
427: {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)},
428: {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
429: {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)},
430: {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
431: {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)},
432: {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)},
433: {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)},
434: {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)},
435: {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)},
436: {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)},
437: {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)},
438: {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)},
439: #undef BR
440: #undef BRT
441:
442: {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
443: {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
444: {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
445: {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
446: {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
447: {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
448: {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
449: {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
450: {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
451: {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
452: {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
453: {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
454: {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
455: {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
456: {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
457: {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
458: {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
459: {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
460: {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
461: {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
462: {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
463: {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
464: {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
465: {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
466:
467: /* Branch predict. */
468: #define BRP(a,b) \
469: B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
470: {"brp.sptk", BRP (0, 0)},
471: {"brp.loop", BRP (0, 1)},
472: {"brp.dptk", BRP (0, 2)},
473: {"brp.exit", BRP (0, 3)},
474: {"brp.sptk.imp", BRP (1, 0)},
475: {"brp.loop.imp", BRP (1, 1)},
476: {"brp.dptk.imp", BRP (1, 2)},
477: {"brp.exit.imp", BRP (1, 3)},
478: #undef BRP
479:
480: {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
481: };
482:
483: #undef B0
484: #undef B
485: #undef bBtype
486: #undef bD
487: #undef bIh
488: #undef bPa
489: #undef bPr
490: #undef bWha
491: #undef bWhb
492: #undef bWhc
493: #undef bX6
494: #undef mBtype
495: #undef mD
496: #undef mIh
497: #undef mPa
498: #undef mPr
499: #undef mWha
500: #undef mWhb
501: #undef mWhc
502: #undef mX6
503: #undef OpX6
504: #undef OpPaWhaD
505: #undef OpPaWhcD
506: #undef OpBtypePaWhaD
507: #undef OpBtypePaWhaDPr
508: #undef OpX6BtypePaWhaD
509: #undef OpX6BtypePaWhaDPr
510: #undef OpIhWhb
511: #undef OpX6IhWhb
512: #undef EMPTY
CVSweb <webmaster@jp.NetBSD.org>