Back to index

cell-binutils  2.17cvs20070401
ia64-opc-b.c
Go to the documentation of this file.
00001 /* ia64-opc-b.c -- IA-64 `B' opcode table.
00002    Copyright 1998, 1999, 2000, 2002, 2005, 2006
00003    Free Software Foundation, Inc.
00004    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
00005 
00006    This file is part of GDB, GAS, and the GNU binutils.
00007 
00008    GDB, GAS, and the GNU binutils are free software; you can redistribute
00009    them and/or modify them under the terms of the GNU General Public
00010    License as published by the Free Software Foundation; either version
00011    2, or (at your option) any later version.
00012 
00013    GDB, GAS, and the GNU binutils are distributed in the hope that they
00014    will be useful, but WITHOUT ANY WARRANTY; without even the implied
00015    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
00016    the GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this file; see the file COPYING.  If not, write to the
00020    Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
00021    02110-1301, USA.  */
00022 
00023 #include "ia64-opc.h"
00024 
00025 #define B0    IA64_TYPE_B, 0
00026 #define B     IA64_TYPE_B, 1
00027 
00028 /* instruction bit fields: */
00029 #define bBtype(x)    (((ia64_insn) ((x) & 0x7)) << 6)
00030 #define bD(x)        (((ia64_insn) ((x) & 0x1)) << 35)
00031 #define bIh(x)              (((ia64_insn) ((x) & 0x1)) << 35)
00032 #define bPa(x)              (((ia64_insn) ((x) & 0x1)) << 12)
00033 #define bPr(x)              (((ia64_insn) ((x) & 0x3f)) << 0)
00034 #define bWha(x)             (((ia64_insn) ((x) & 0x3)) << 33)
00035 #define bWhb(x)             (((ia64_insn) ((x) & 0x3)) << 3)
00036 #define bWhc(x)             (((ia64_insn) ((x) & 0x7)) << 32)
00037 #define bX6(x)              (((ia64_insn) ((x) & 0x3f)) << 27)
00038 
00039 #define mBtype              bBtype (-1)
00040 #define mD           bD (-1)
00041 #define mIh          bIh (-1)
00042 #define mPa          bPa (-1)
00043 #define mPr          bPr (-1)
00044 #define mWha         bWha (-1)
00045 #define mWhb         bWhb (-1)
00046 #define mWhc         bWhc (-1)
00047 #define mX6          bX6 (-1)
00048 
00049 #define OpX6(a,b)    (bOp (a) | bX6 (b)), (mOp | mX6)
00050 #define OpPaWhaD(a,b,c,d) \
00051        (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
00052 #define OpPaWhcD(a,b,c,d) \
00053        (bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD)
00054 #define OpBtypePaWhaD(a,b,c,d,e) \
00055        (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
00056        (mOp | mBtype | mPa | mWha | mD)
00057 #define OpBtypePaWhaDPr(a,b,c,d,e,f) \
00058        (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
00059        (mOp | mBtype | mPa | mWha | mD | mPr)
00060 #define OpX6BtypePaWhaD(a,b,c,d,e,f) \
00061        (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
00062        (mOp | mX6 | mBtype | mPa | mWha | mD)
00063 #define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
00064    (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
00065        (mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
00066 #define OpIhWhb(a,b,c) \
00067        (bOp (a) | bIh (b) | bWhb (c)), \
00068        (mOp | mIh | mWhb)
00069 #define OpX6IhWhb(a,b,c,d) \
00070        (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
00071        (mOp | mX6 | mIh | mWhb)
00072 
00073 /* Used to initialise unused fields in ia64_opcode struct,
00074    in order to stop gcc from complaining.  */
00075 #define EMPTY 0,0,NULL
00076 
00077 struct ia64_opcode ia64_opcodes_b[] =
00078   {
00079     /* B-type instruction encodings (sorted according to major opcode) */
00080 
00081 #define BR(a,b) \
00082       B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
00083     {"br.few",              BR (0, 0)},
00084     {"br",           BR (0, 0)},
00085     {"br.few.clr",   BR (0, 1)},
00086     {"br.clr",              BR (0, 1)},
00087     {"br.many",             BR (1, 0)},
00088     {"br.many.clr",  BR (1, 1)},
00089 #undef BR
00090 
00091 #define BR(a,b,c,d,e)       B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
00092 #define BRP(a,b,c,d,e)      B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
00093 #define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
00094     {"br.cond.sptk.few",    BR (0x20, 0, 0, 0, 0)},
00095     {"br.cond.sptk",        BRP (0x20, 0, 0, 0, 0)},
00096     {"br.cond.sptk.few.clr",       BR (0x20, 0, 0, 0, 1)},
00097     {"br.cond.sptk.clr",    BRP (0x20, 0, 0, 0, 1)},
00098     {"br.cond.spnt.few",    BR (0x20, 0, 0, 1, 0)},
00099     {"br.cond.spnt",        BRP (0x20, 0, 0, 1, 0)},
00100     {"br.cond.spnt.few.clr",       BR (0x20, 0, 0, 1, 1)},
00101     {"br.cond.spnt.clr",    BRP (0x20, 0, 0, 1, 1)},
00102     {"br.cond.dptk.few",    BR (0x20, 0, 0, 2, 0)},
00103     {"br.cond.dptk",        BRP (0x20, 0, 0, 2, 0)},
00104     {"br.cond.dptk.few.clr",       BR (0x20, 0, 0, 2, 1)},
00105     {"br.cond.dptk.clr",    BRP (0x20, 0, 0, 2, 1)},
00106     {"br.cond.dpnt.few",    BR (0x20, 0, 0, 3, 0)},
00107     {"br.cond.dpnt",        BRP (0x20, 0, 0, 3, 0)},
00108     {"br.cond.dpnt.few.clr",       BR (0x20, 0, 0, 3, 1)},
00109     {"br.cond.dpnt.clr",    BRP (0x20, 0, 0, 3, 1)},
00110     {"br.cond.sptk.many",   BR (0x20, 0, 1, 0, 0)},
00111     {"br.cond.sptk.many.clr",      BR (0x20, 0, 1, 0, 1)},
00112     {"br.cond.spnt.many",   BR (0x20, 0, 1, 1, 0)},
00113     {"br.cond.spnt.many.clr",      BR (0x20, 0, 1, 1, 1)},
00114     {"br.cond.dptk.many",   BR (0x20, 0, 1, 2, 0)},
00115     {"br.cond.dptk.many.clr",      BR (0x20, 0, 1, 2, 1)},
00116     {"br.cond.dpnt.many",   BR (0x20, 0, 1, 3, 0)},
00117     {"br.cond.dpnt.many.clr",      BR (0x20, 0, 1, 3, 1)},
00118     {"br.sptk.few",         BR (0x20, 0, 0, 0, 0)},
00119     {"br.sptk",                    BRP (0x20, 0, 0, 0, 0)},
00120     {"br.sptk.few.clr",            BR (0x20, 0, 0, 0, 1)},
00121     {"br.sptk.clr",         BRP (0x20, 0, 0, 0, 1)},
00122     {"br.spnt.few",         BR (0x20, 0, 0, 1, 0)},
00123     {"br.spnt",                    BRP (0x20, 0, 0, 1, 0)},
00124     {"br.spnt.few.clr",            BR (0x20, 0, 0, 1, 1)},
00125     {"br.spnt.clr",         BRP (0x20, 0, 0, 1, 1)},
00126     {"br.dptk.few",         BR (0x20, 0, 0, 2, 0)},
00127     {"br.dptk",                    BRP (0x20, 0, 0, 2, 0)},
00128     {"br.dptk.few.clr",            BR (0x20, 0, 0, 2, 1)},
00129     {"br.dptk.clr",         BRP (0x20, 0, 0, 2, 1)},
00130     {"br.dpnt.few",         BR (0x20, 0, 0, 3, 0)},
00131     {"br.dpnt",                    BRP (0x20, 0, 0, 3, 0)},
00132     {"br.dpnt.few.clr",            BR (0x20, 0, 0, 3, 1)},
00133     {"br.dpnt.clr",         BRP (0x20, 0, 0, 3, 1)},
00134     {"br.sptk.many",        BR (0x20, 0, 1, 0, 0)},
00135     {"br.sptk.many.clr",    BR (0x20, 0, 1, 0, 1)},
00136     {"br.spnt.many",        BR (0x20, 0, 1, 1, 0)},
00137     {"br.spnt.many.clr",    BR (0x20, 0, 1, 1, 1)},
00138     {"br.dptk.many",        BR (0x20, 0, 1, 2, 0)},
00139     {"br.dptk.many.clr",    BR (0x20, 0, 1, 2, 1)},
00140     {"br.dpnt.many",        BR (0x20, 0, 1, 3, 0)},
00141     {"br.dpnt.many.clr",    BR (0x20, 0, 1, 3, 1)},
00142     {"br.ia.sptk.few",             BR (0x20, 1, 0, 0, 0)},
00143     {"br.ia.sptk",          BRP (0x20, 1, 0, 0, 0)},
00144     {"br.ia.sptk.few.clr",  BR (0x20, 1, 0, 0, 1)},
00145     {"br.ia.sptk.clr",             BRP (0x20, 1, 0, 0, 1)},
00146     {"br.ia.spnt.few",             BR (0x20, 1, 0, 1, 0)},
00147     {"br.ia.spnt",          BRP (0x20, 1, 0, 1, 0)},
00148     {"br.ia.spnt.few.clr",  BR (0x20, 1, 0, 1, 1)},
00149     {"br.ia.spnt.clr",             BRP (0x20, 1, 0, 1, 1)},
00150     {"br.ia.dptk.few",             BR (0x20, 1, 0, 2, 0)},
00151     {"br.ia.dptk",          BRP (0x20, 1, 0, 2, 0)},
00152     {"br.ia.dptk.few.clr",  BR (0x20, 1, 0, 2, 1)},
00153     {"br.ia.dptk.clr",             BRP (0x20, 1, 0, 2, 1)},
00154     {"br.ia.dpnt.few",             BR (0x20, 1, 0, 3, 0)},
00155     {"br.ia.dpnt",          BRP (0x20, 1, 0, 3, 0)},
00156     {"br.ia.dpnt.few.clr",  BR (0x20, 1, 0, 3, 1)},
00157     {"br.ia.dpnt.clr",             BRP (0x20, 1, 0, 3, 1)},
00158     {"br.ia.sptk.many",            BR (0x20, 1, 1, 0, 0)},
00159     {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)},
00160     {"br.ia.spnt.many",            BR (0x20, 1, 1, 1, 0)},
00161     {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)},
00162     {"br.ia.dptk.many",            BR (0x20, 1, 1, 2, 0)},
00163     {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)},
00164     {"br.ia.dpnt.many",            BR (0x20, 1, 1, 3, 0)},
00165     {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)},
00166     {"br.ret.sptk.few",            BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
00167     {"br.ret.sptk",         BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
00168     {"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
00169     {"br.ret.sptk.clr",            BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
00170     {"br.ret.spnt.few",            BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
00171     {"br.ret.spnt",         BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
00172     {"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
00173     {"br.ret.spnt.clr",            BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
00174     {"br.ret.dptk.few",            BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
00175     {"br.ret.dptk",         BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
00176     {"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
00177     {"br.ret.dptk.clr",            BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
00178     {"br.ret.dpnt.few",            BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
00179     {"br.ret.dpnt",         BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
00180     {"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
00181     {"br.ret.dpnt.clr",            BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
00182     {"br.ret.sptk.many",    BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
00183     {"br.ret.sptk.many.clr",       BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
00184     {"br.ret.spnt.many",    BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
00185     {"br.ret.spnt.many.clr",       BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
00186     {"br.ret.dptk.many",    BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
00187     {"br.ret.dptk.many.clr",       BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
00188     {"br.ret.dpnt.many",    BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
00189     {"br.ret.dpnt.many.clr",       BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
00190 #undef BR
00191 #undef BRP
00192 #undef BRT
00193 
00194     {"cover",        B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
00195     {"clrrrb",              B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
00196     {"clrrrb.pr",    B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
00197     {"rfi",          B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
00198     {"bsw.0",        B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
00199     {"bsw.1",        B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
00200     {"epc",          B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
00201     {"vmsw.0",              B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
00202     {"vmsw.1",              B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
00203 
00204     {"break.b",             B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
00205 
00206     {"br.call.sptk.few",    B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
00207     {"br.call.sptk",        B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
00208     {"br.call.sptk.few.clr",       B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
00209     {"br.call.sptk.clr",    B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
00210     {"br.call.spnt.few",    B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
00211     {"br.call.spnt",        B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
00212     {"br.call.spnt.few.clr",       B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
00213     {"br.call.spnt.clr",    B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
00214     {"br.call.dptk.few",    B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
00215     {"br.call.dptk",        B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
00216     {"br.call.dptk.few.clr",       B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
00217     {"br.call.dptk.clr",    B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
00218     {"br.call.dpnt.few",    B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
00219     {"br.call.dpnt",        B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
00220     {"br.call.dpnt.few.clr",       B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
00221     {"br.call.dpnt.clr",    B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
00222     {"br.call.sptk.many",   B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
00223     {"br.call.sptk.many.clr",      B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
00224     {"br.call.spnt.many",   B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
00225     {"br.call.spnt.many.clr",      B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
00226     {"br.call.dptk.many",   B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
00227     {"br.call.dptk.many.clr",      B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
00228     {"br.call.dpnt.many",   B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
00229     {"br.call.dpnt.many.clr",      B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
00230 
00231 #define BRP(a,b,c) \
00232       B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
00233     {"brp.sptk",            BRP (0x10, 0, 0)},
00234     {"brp.dptk",            BRP (0x10, 0, 2)},
00235     {"brp.sptk.imp",        BRP (0x10, 1, 0)},
00236     {"brp.dptk.imp",        BRP (0x10, 1, 2)},
00237     {"brp.ret.sptk",        BRP (0x11, 0, 0)},
00238     {"brp.ret.dptk",        BRP (0x11, 0, 2)},
00239     {"brp.ret.sptk.imp",    BRP (0x11, 1, 0)},
00240     {"brp.ret.dptk.imp",    BRP (0x11, 1, 2)},
00241 #undef BRP
00242 
00243     {"nop.b",        B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
00244     {"hint.b",              B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
00245 
00246 #define BR(a,b) \
00247       B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
00248     {"br.few",              BR (0, 0)},
00249     {"br",           BR (0, 0)},
00250     {"br.few.clr",   BR (0, 1)},
00251     {"br.clr",              BR (0, 1)},
00252     {"br.many",             BR (1, 0)},
00253     {"br.many.clr",  BR (1, 1)},
00254 #undef BR
00255 
00256 #define BR(a,b,c) \
00257       B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
00258 #define BRP(a,b,c) \
00259       B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
00260     {"br.cond.sptk.few",    BR (0, 0, 0)},
00261     {"br.cond.sptk",        BRP (0, 0, 0)},
00262     {"br.cond.sptk.few.clr",       BR (0, 0, 1)},
00263     {"br.cond.sptk.clr",    BRP (0, 0, 1)},
00264     {"br.cond.spnt.few",    BR (0, 1, 0)},
00265     {"br.cond.spnt",        BRP (0, 1, 0)},
00266     {"br.cond.spnt.few.clr",       BR (0, 1, 1)},
00267     {"br.cond.spnt.clr",    BRP (0, 1, 1)},
00268     {"br.cond.dptk.few",    BR (0, 2, 0)},
00269     {"br.cond.dptk",        BRP (0, 2, 0)},
00270     {"br.cond.dptk.few.clr",       BR (0, 2, 1)},
00271     {"br.cond.dptk.clr",    BRP (0, 2, 1)},
00272     {"br.cond.dpnt.few",    BR (0, 3, 0)},
00273     {"br.cond.dpnt",        BRP (0, 3, 0)},
00274     {"br.cond.dpnt.few.clr",       BR (0, 3, 1)},
00275     {"br.cond.dpnt.clr",    BRP (0, 3, 1)},
00276     {"br.cond.sptk.many",   BR (1, 0, 0)},
00277     {"br.cond.sptk.many.clr",      BR (1, 0, 1)},
00278     {"br.cond.spnt.many",   BR (1, 1, 0)},
00279     {"br.cond.spnt.many.clr",      BR (1, 1, 1)},
00280     {"br.cond.dptk.many",   BR (1, 2, 0)},
00281     {"br.cond.dptk.many.clr",      BR (1, 2, 1)},
00282     {"br.cond.dpnt.many",   BR (1, 3, 0)},
00283     {"br.cond.dpnt.many.clr",      BR (1, 3, 1)},
00284     {"br.sptk.few",         BR (0, 0, 0)},
00285     {"br.sptk",                    BRP (0, 0, 0)},
00286     {"br.sptk.few.clr",            BR (0, 0, 1)},
00287     {"br.sptk.clr",         BRP (0, 0, 1)},
00288     {"br.spnt.few",         BR (0, 1, 0)},
00289     {"br.spnt",                    BRP (0, 1, 0)},
00290     {"br.spnt.few.clr",            BR (0, 1, 1)},
00291     {"br.spnt.clr",         BRP (0, 1, 1)},
00292     {"br.dptk.few",         BR (0, 2, 0)},
00293     {"br.dptk",                    BRP (0, 2, 0)},
00294     {"br.dptk.few.clr",            BR (0, 2, 1)},
00295     {"br.dptk.clr",         BRP (0, 2, 1)},
00296     {"br.dpnt.few",         BR (0, 3, 0)},
00297     {"br.dpnt",                    BRP (0, 3, 0)},
00298     {"br.dpnt.few.clr",            BR (0, 3, 1)},
00299     {"br.dpnt.clr",         BRP (0, 3, 1)},
00300     {"br.sptk.many",        BR (1, 0, 0)},
00301     {"br.sptk.many.clr",    BR (1, 0, 1)},
00302     {"br.spnt.many",        BR (1, 1, 0)},
00303     {"br.spnt.many.clr",    BR (1, 1, 1)},
00304     {"br.dptk.many",        BR (1, 2, 0)},
00305     {"br.dptk.many.clr",    BR (1, 2, 1)},
00306     {"br.dpnt.many",        BR (1, 3, 0)},
00307     {"br.dpnt.many.clr",    BR (1, 3, 1)},
00308 #undef BR
00309 #undef BRP
00310 
00311 #define BR(a,b,c,d, e) \
00312        B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
00313     {"br.wexit.sptk.few",   BR (2, 0, 0, 0, MOD_RRBS)},
00314     {"br.wexit.sptk",              BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
00315     {"br.wexit.sptk.few.clr",      BR (2, 0, 0, 1, MOD_RRBS)},
00316     {"br.wexit.sptk.clr",   BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
00317     {"br.wexit.spnt.few",   BR (2, 0, 1, 0, MOD_RRBS)},
00318     {"br.wexit.spnt",              BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
00319     {"br.wexit.spnt.few.clr",      BR (2, 0, 1, 1, MOD_RRBS)},
00320     {"br.wexit.spnt.clr",   BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
00321     {"br.wexit.dptk.few",   BR (2, 0, 2, 0, MOD_RRBS)},
00322     {"br.wexit.dptk",              BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
00323     {"br.wexit.dptk.few.clr",      BR (2, 0, 2, 1, MOD_RRBS)},
00324     {"br.wexit.dptk.clr",   BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
00325     {"br.wexit.dpnt.few",   BR (2, 0, 3, 0, MOD_RRBS)},
00326     {"br.wexit.dpnt",              BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
00327     {"br.wexit.dpnt.few.clr",      BR (2, 0, 3, 1, MOD_RRBS)},
00328     {"br.wexit.dpnt.clr",   BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
00329     {"br.wexit.sptk.many",  BR (2, 1, 0, 0, MOD_RRBS)},
00330     {"br.wexit.sptk.many.clr",     BR (2, 1, 0, 1, MOD_RRBS)},
00331     {"br.wexit.spnt.many",  BR (2, 1, 1, 0, MOD_RRBS)},
00332     {"br.wexit.spnt.many.clr",     BR (2, 1, 1, 1, MOD_RRBS)},
00333     {"br.wexit.dptk.many",  BR (2, 1, 2, 0, MOD_RRBS)},
00334     {"br.wexit.dptk.many.clr",     BR (2, 1, 2, 1, MOD_RRBS)},
00335     {"br.wexit.dpnt.many",  BR (2, 1, 3, 0, MOD_RRBS)},
00336     {"br.wexit.dpnt.many.clr",     BR (2, 1, 3, 1, MOD_RRBS)},
00337     {"br.wtop.sptk.few",    BR (3, 0, 0, 0, MOD_RRBS)},
00338     {"br.wtop.sptk",        BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
00339     {"br.wtop.sptk.few.clr",       BR (3, 0, 0, 1, MOD_RRBS)},
00340     {"br.wtop.sptk.clr",    BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
00341     {"br.wtop.spnt.few",    BR (3, 0, 1, 0, MOD_RRBS)},
00342     {"br.wtop.spnt",        BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
00343     {"br.wtop.spnt.few.clr",       BR (3, 0, 1, 1, MOD_RRBS)},
00344     {"br.wtop.spnt.clr",    BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
00345     {"br.wtop.dptk.few",    BR (3, 0, 2, 0, MOD_RRBS)},
00346     {"br.wtop.dptk",        BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
00347     {"br.wtop.dptk.few.clr",       BR (3, 0, 2, 1, MOD_RRBS)},
00348     {"br.wtop.dptk.clr",    BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
00349     {"br.wtop.dpnt.few",    BR (3, 0, 3, 0, MOD_RRBS)},
00350     {"br.wtop.dpnt",        BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
00351     {"br.wtop.dpnt.few.clr",       BR (3, 0, 3, 1, MOD_RRBS)},
00352     {"br.wtop.dpnt.clr",    BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
00353     {"br.wtop.sptk.many",   BR (3, 1, 0, 0, MOD_RRBS)},
00354     {"br.wtop.sptk.many.clr",      BR (3, 1, 0, 1, MOD_RRBS)},
00355     {"br.wtop.spnt.many",   BR (3, 1, 1, 0, MOD_RRBS)},
00356     {"br.wtop.spnt.many.clr",      BR (3, 1, 1, 1, MOD_RRBS)},
00357     {"br.wtop.dptk.many",   BR (3, 1, 2, 0, MOD_RRBS)},
00358     {"br.wtop.dptk.many.clr",      BR (3, 1, 2, 1, MOD_RRBS)},
00359     {"br.wtop.dpnt.many",   BR (3, 1, 3, 0, MOD_RRBS)},
00360     {"br.wtop.dpnt.many.clr",      BR (3, 1, 3, 1, MOD_RRBS)},
00361 
00362 #undef BR
00363 #define BR(a,b,c,d) \
00364        B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
00365 #define BRT(a,b,c,d,e) \
00366        B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
00367     {"br.cloop.sptk.few",   BR (5, 0, 0, 0)},
00368     {"br.cloop.sptk",              BRT (5, 0, 0, 0, PSEUDO)},
00369     {"br.cloop.sptk.few.clr",      BR (5, 0, 0, 1)},
00370     {"br.cloop.sptk.clr",   BRT (5, 0, 0, 1, PSEUDO)},
00371     {"br.cloop.spnt.few",   BR (5, 0, 1, 0)},
00372     {"br.cloop.spnt",              BRT (5, 0, 1, 0, PSEUDO)},
00373     {"br.cloop.spnt.few.clr",      BR (5, 0, 1, 1)},
00374     {"br.cloop.spnt.clr",   BRT (5, 0, 1, 1, PSEUDO)},
00375     {"br.cloop.dptk.few",   BR (5, 0, 2, 0)},
00376     {"br.cloop.dptk",              BRT (5, 0, 2, 0, PSEUDO)},
00377     {"br.cloop.dptk.few.clr",      BR (5, 0, 2, 1)},
00378     {"br.cloop.dptk.clr",   BRT (5, 0, 2, 1, PSEUDO)},
00379     {"br.cloop.dpnt.few",   BR (5, 0, 3, 0)},
00380     {"br.cloop.dpnt",              BRT (5, 0, 3, 0, PSEUDO)},
00381     {"br.cloop.dpnt.few.clr",      BR (5, 0, 3, 1)},
00382     {"br.cloop.dpnt.clr",   BRT (5, 0, 3, 1, PSEUDO)},
00383     {"br.cloop.sptk.many",  BR (5, 1, 0, 0)},
00384     {"br.cloop.sptk.many.clr",     BR (5, 1, 0, 1)},
00385     {"br.cloop.spnt.many",  BR (5, 1, 1, 0)},
00386     {"br.cloop.spnt.many.clr",     BR (5, 1, 1, 1)},
00387     {"br.cloop.dptk.many",  BR (5, 1, 2, 0)},
00388     {"br.cloop.dptk.many.clr",     BR (5, 1, 2, 1)},
00389     {"br.cloop.dpnt.many",  BR (5, 1, 3, 0)},
00390     {"br.cloop.dpnt.many.clr",     BR (5, 1, 3, 1)},
00391     {"br.cexit.sptk.few",   BRT (6, 0, 0, 0, MOD_RRBS)},
00392     {"br.cexit.sptk",              BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
00393     {"br.cexit.sptk.few.clr",      BRT (6, 0, 0, 1, MOD_RRBS)},
00394     {"br.cexit.sptk.clr",   BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
00395     {"br.cexit.spnt.few",   BRT (6, 0, 1, 0, MOD_RRBS)},
00396     {"br.cexit.spnt",              BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
00397     {"br.cexit.spnt.few.clr",      BRT (6, 0, 1, 1, MOD_RRBS)},
00398     {"br.cexit.spnt.clr",   BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
00399     {"br.cexit.dptk.few",   BRT (6, 0, 2, 0, MOD_RRBS)},
00400     {"br.cexit.dptk",              BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
00401     {"br.cexit.dptk.few.clr",      BRT (6, 0, 2, 1, MOD_RRBS)},
00402     {"br.cexit.dptk.clr",   BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
00403     {"br.cexit.dpnt.few",   BRT (6, 0, 3, 0, MOD_RRBS)},
00404     {"br.cexit.dpnt",              BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
00405     {"br.cexit.dpnt.few.clr",      BRT (6, 0, 3, 1, MOD_RRBS)},
00406     {"br.cexit.dpnt.clr",   BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
00407     {"br.cexit.sptk.many",  BRT (6, 1, 0, 0, MOD_RRBS)},
00408     {"br.cexit.sptk.many.clr",     BRT (6, 1, 0, 1, MOD_RRBS)},
00409     {"br.cexit.spnt.many",  BRT (6, 1, 1, 0, MOD_RRBS)},
00410     {"br.cexit.spnt.many.clr",     BRT (6, 1, 1, 1, MOD_RRBS)},
00411     {"br.cexit.dptk.many",  BRT (6, 1, 2, 0, MOD_RRBS)},
00412     {"br.cexit.dptk.many.clr",     BRT (6, 1, 2, 1, MOD_RRBS)},
00413     {"br.cexit.dpnt.many",  BRT (6, 1, 3, 0, MOD_RRBS)},
00414     {"br.cexit.dpnt.many.clr",     BRT (6, 1, 3, 1, MOD_RRBS)},
00415     {"br.ctop.sptk.few",    BRT (7, 0, 0, 0, MOD_RRBS)},
00416     {"br.ctop.sptk",        BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
00417     {"br.ctop.sptk.few.clr",       BRT (7, 0, 0, 1, MOD_RRBS)},
00418     {"br.ctop.sptk.clr",    BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
00419     {"br.ctop.spnt.few",    BRT (7, 0, 1, 0, MOD_RRBS)},
00420     {"br.ctop.spnt",        BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
00421     {"br.ctop.spnt.few.clr",       BRT (7, 0, 1, 1, MOD_RRBS)},
00422     {"br.ctop.spnt.clr",    BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
00423     {"br.ctop.dptk.few",    BRT (7, 0, 2, 0, MOD_RRBS)},
00424     {"br.ctop.dptk",        BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
00425     {"br.ctop.dptk.few.clr",       BRT (7, 0, 2, 1, MOD_RRBS)},
00426     {"br.ctop.dptk.clr",    BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
00427     {"br.ctop.dpnt.few",    BRT (7, 0, 3, 0, MOD_RRBS)},
00428     {"br.ctop.dpnt",        BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
00429     {"br.ctop.dpnt.few.clr",       BRT (7, 0, 3, 1, MOD_RRBS)},
00430     {"br.ctop.dpnt.clr",    BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
00431     {"br.ctop.sptk.many",   BRT (7, 1, 0, 0, MOD_RRBS)},
00432     {"br.ctop.sptk.many.clr",      BRT (7, 1, 0, 1, MOD_RRBS)},
00433     {"br.ctop.spnt.many",   BRT (7, 1, 1, 0, MOD_RRBS)},
00434     {"br.ctop.spnt.many.clr",      BRT (7, 1, 1, 1, MOD_RRBS)},
00435     {"br.ctop.dptk.many",   BRT (7, 1, 2, 0, MOD_RRBS)},
00436     {"br.ctop.dptk.many.clr",      BRT (7, 1, 2, 1, MOD_RRBS)},
00437     {"br.ctop.dpnt.many",   BRT (7, 1, 3, 0, MOD_RRBS)},
00438     {"br.ctop.dpnt.many.clr",      BRT (7, 1, 3, 1, MOD_RRBS)},
00439 #undef BR
00440 #undef BRT
00441 
00442     {"br.call.sptk.few",    B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
00443     {"br.call.sptk",        B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
00444     {"br.call.sptk.few.clr",       B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
00445     {"br.call.sptk.clr",    B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
00446     {"br.call.spnt.few",    B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
00447     {"br.call.spnt",        B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
00448     {"br.call.spnt.few.clr",       B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
00449     {"br.call.spnt.clr",    B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
00450     {"br.call.dptk.few",    B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
00451     {"br.call.dptk",        B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
00452     {"br.call.dptk.few.clr",       B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
00453     {"br.call.dptk.clr",    B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
00454     {"br.call.dpnt.few",    B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
00455     {"br.call.dpnt",        B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
00456     {"br.call.dpnt.few.clr",       B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
00457     {"br.call.dpnt.clr",    B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
00458     {"br.call.sptk.many",   B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
00459     {"br.call.sptk.many.clr",      B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
00460     {"br.call.spnt.many",   B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
00461     {"br.call.spnt.many.clr",      B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
00462     {"br.call.dptk.many",   B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
00463     {"br.call.dptk.many.clr",      B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
00464     {"br.call.dpnt.many",   B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
00465     {"br.call.dpnt.many.clr",      B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
00466 
00467     /* Branch predict.  */
00468 #define BRP(a,b) \
00469       B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
00470     {"brp.sptk",            BRP (0, 0)},
00471     {"brp.loop",            BRP (0, 1)},
00472     {"brp.dptk",            BRP (0, 2)},
00473     {"brp.exit",            BRP (0, 3)},
00474     {"brp.sptk.imp",        BRP (1, 0)},
00475     {"brp.loop.imp",        BRP (1, 1)},
00476     {"brp.dptk.imp",        BRP (1, 2)},
00477     {"brp.exit.imp",        BRP (1, 3)},
00478 #undef BRP
00479 
00480     {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
00481   };
00482 
00483 #undef B0
00484 #undef B
00485 #undef bBtype
00486 #undef bD
00487 #undef bIh
00488 #undef bPa
00489 #undef bPr
00490 #undef bWha
00491 #undef bWhb
00492 #undef bWhc
00493 #undef bX6
00494 #undef mBtype
00495 #undef mD
00496 #undef mIh
00497 #undef mPa
00498 #undef mPr
00499 #undef mWha
00500 #undef mWhb
00501 #undef mWhc
00502 #undef mX6
00503 #undef OpX6
00504 #undef OpPaWhaD
00505 #undef OpPaWhcD
00506 #undef OpBtypePaWhaD
00507 #undef OpBtypePaWhaDPr
00508 #undef OpX6BtypePaWhaD
00509 #undef OpX6BtypePaWhaDPr
00510 #undef OpIhWhb
00511 #undef OpX6IhWhb
00512 #undef EMPTY