OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [opcodes/] [ia64-opc-b.c] - Blame information for rev 160

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 18 khays
/* ia64-opc-b.c -- IA-64 `B' opcode table.
2
   Copyright 1998, 1999, 2000, 2002, 2005, 2006, 2007, 2009
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.