184865Sobrien/* ia64-opc-b.c -- IA-64 `B' opcode table. 2218822Sdim Copyright 1998, 1999, 2000, 2002, 2005, 2006 3218822Sdim Free Software Foundation, Inc. 484865Sobrien Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 584865Sobrien 684865Sobrien This file is part of GDB, GAS, and the GNU binutils. 784865Sobrien 884865Sobrien GDB, GAS, and the GNU binutils are free software; you can redistribute 984865Sobrien them and/or modify them under the terms of the GNU General Public 1084865Sobrien License as published by the Free Software Foundation; either version 1184865Sobrien 2, or (at your option) any later version. 1284865Sobrien 1384865Sobrien GDB, GAS, and the GNU binutils are distributed in the hope that they 1484865Sobrien will be useful, but WITHOUT ANY WARRANTY; without even the implied 1584865Sobrien warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 1684865Sobrien the GNU General Public License for more details. 1784865Sobrien 1884865Sobrien You should have received a copy of the GNU General Public License 1984865Sobrien along with this file; see the file COPYING. If not, write to the 20218822Sdim Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 21218822Sdim 02110-1301, USA. */ 2284865Sobrien 2384865Sobrien#include "ia64-opc.h" 2484865Sobrien 2584865Sobrien#define B0 IA64_TYPE_B, 0 2684865Sobrien#define B IA64_TYPE_B, 1 2784865Sobrien 2884865Sobrien/* instruction bit fields: */ 2984865Sobrien#define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6) 3084865Sobrien#define bD(x) (((ia64_insn) ((x) & 0x1)) << 35) 3184865Sobrien#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 35) 3284865Sobrien#define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12) 3384865Sobrien#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0) 3484865Sobrien#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33) 3584865Sobrien#define bWhb(x) (((ia64_insn) ((x) & 0x3)) << 3) 36104834Sobrien#define bWhc(x) (((ia64_insn) ((x) & 0x7)) << 32) 3784865Sobrien#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27) 3884865Sobrien 3984865Sobrien#define mBtype bBtype (-1) 4084865Sobrien#define mD bD (-1) 4184865Sobrien#define mIh bIh (-1) 4284865Sobrien#define mPa bPa (-1) 4384865Sobrien#define mPr bPr (-1) 4484865Sobrien#define mWha bWha (-1) 4584865Sobrien#define mWhb bWhb (-1) 46104834Sobrien#define mWhc bWhc (-1) 4784865Sobrien#define mX6 bX6 (-1) 4884865Sobrien 4984865Sobrien#define OpX6(a,b) (bOp (a) | bX6 (b)), (mOp | mX6) 5084865Sobrien#define OpPaWhaD(a,b,c,d) \ 5184865Sobrien (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD) 52104834Sobrien#define OpPaWhcD(a,b,c,d) \ 53104834Sobrien (bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD) 5484865Sobrien#define OpBtypePaWhaD(a,b,c,d,e) \ 5584865Sobrien (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \ 5684865Sobrien (mOp | mBtype | mPa | mWha | mD) 5784865Sobrien#define OpBtypePaWhaDPr(a,b,c,d,e,f) \ 5884865Sobrien (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \ 5984865Sobrien (mOp | mBtype | mPa | mWha | mD | mPr) 6084865Sobrien#define OpX6BtypePaWhaD(a,b,c,d,e,f) \ 6184865Sobrien (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \ 6284865Sobrien (mOp | mX6 | mBtype | mPa | mWha | mD) 6384865Sobrien#define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \ 6484865Sobrien (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \ 6584865Sobrien (mOp | mX6 | mBtype | mPa | mWha | mD | mPr) 6684865Sobrien#define OpIhWhb(a,b,c) \ 6784865Sobrien (bOp (a) | bIh (b) | bWhb (c)), \ 6884865Sobrien (mOp | mIh | mWhb) 6984865Sobrien#define OpX6IhWhb(a,b,c,d) \ 7084865Sobrien (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \ 7184865Sobrien (mOp | mX6 | mIh | mWhb) 7284865Sobrien 73130561Sobrien/* Used to initialise unused fields in ia64_opcode struct, 74130561Sobrien in order to stop gcc from complaining. */ 75130561Sobrien#define EMPTY 0,0,NULL 76130561Sobrien 7784865Sobrienstruct ia64_opcode ia64_opcodes_b[] = 7884865Sobrien { 7984865Sobrien /* B-type instruction encodings (sorted according to major opcode) */ 8084865Sobrien 8184865Sobrien#define BR(a,b) \ 82130561Sobrien B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL 8384865Sobrien {"br.few", BR (0, 0)}, 8484865Sobrien {"br", BR (0, 0)}, 8584865Sobrien {"br.few.clr", BR (0, 1)}, 8684865Sobrien {"br.clr", BR (0, 1)}, 8784865Sobrien {"br.many", BR (1, 0)}, 8884865Sobrien {"br.many.clr", BR (1, 1)}, 8984865Sobrien#undef BR 9084865Sobrien 91130561Sobrien#define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY 92130561Sobrien#define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL 93130561Sobrien#define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL 9484865Sobrien {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)}, 95130561Sobrien {"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)}, 9684865Sobrien {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)}, 97130561Sobrien {"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)}, 9884865Sobrien {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)}, 99130561Sobrien {"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)}, 10084865Sobrien {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)}, 101130561Sobrien {"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)}, 10284865Sobrien {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)}, 103130561Sobrien {"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)}, 10484865Sobrien {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)}, 105130561Sobrien {"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)}, 10684865Sobrien {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)}, 107130561Sobrien {"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)}, 10884865Sobrien {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)}, 109130561Sobrien {"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)}, 11084865Sobrien {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)}, 11184865Sobrien {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)}, 11284865Sobrien {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)}, 11384865Sobrien {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)}, 11484865Sobrien {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)}, 11584865Sobrien {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)}, 11684865Sobrien {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)}, 11784865Sobrien {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)}, 11884865Sobrien {"br.sptk.few", BR (0x20, 0, 0, 0, 0)}, 119130561Sobrien {"br.sptk", BRP (0x20, 0, 0, 0, 0)}, 12084865Sobrien {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)}, 121130561Sobrien {"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)}, 12284865Sobrien {"br.spnt.few", BR (0x20, 0, 0, 1, 0)}, 123130561Sobrien {"br.spnt", BRP (0x20, 0, 0, 1, 0)}, 12484865Sobrien {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)}, 125130561Sobrien {"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)}, 12684865Sobrien {"br.dptk.few", BR (0x20, 0, 0, 2, 0)}, 127130561Sobrien {"br.dptk", BRP (0x20, 0, 0, 2, 0)}, 12884865Sobrien {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)}, 129130561Sobrien {"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)}, 13084865Sobrien {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)}, 131130561Sobrien {"br.dpnt", BRP (0x20, 0, 0, 3, 0)}, 13284865Sobrien {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)}, 133130561Sobrien {"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)}, 13484865Sobrien {"br.sptk.many", BR (0x20, 0, 1, 0, 0)}, 13584865Sobrien {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)}, 13684865Sobrien {"br.spnt.many", BR (0x20, 0, 1, 1, 0)}, 13784865Sobrien {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)}, 13884865Sobrien {"br.dptk.many", BR (0x20, 0, 1, 2, 0)}, 13984865Sobrien {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)}, 14084865Sobrien {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)}, 14184865Sobrien {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)}, 14284865Sobrien {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)}, 143130561Sobrien {"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)}, 14484865Sobrien {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)}, 145130561Sobrien {"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)}, 14684865Sobrien {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)}, 147130561Sobrien {"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)}, 14884865Sobrien {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)}, 149130561Sobrien {"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)}, 15084865Sobrien {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)}, 151130561Sobrien {"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)}, 15284865Sobrien {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)}, 153130561Sobrien {"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)}, 15484865Sobrien {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)}, 155130561Sobrien {"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)}, 15684865Sobrien {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)}, 157130561Sobrien {"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)}, 15884865Sobrien {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)}, 15984865Sobrien {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)}, 16084865Sobrien {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)}, 16184865Sobrien {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)}, 16284865Sobrien {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)}, 16384865Sobrien {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)}, 16484865Sobrien {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)}, 16584865Sobrien {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)}, 166130561Sobrien {"br.ret.sptk.few", BRT (0x21, 4, 0, 0, 0, MOD_RRBS)}, 167130561Sobrien {"br.ret.sptk", BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)}, 168130561Sobrien {"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)}, 169130561Sobrien {"br.ret.sptk.clr", BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)}, 170130561Sobrien {"br.ret.spnt.few", BRT (0x21, 4, 0, 1, 0, MOD_RRBS)}, 171130561Sobrien {"br.ret.spnt", BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)}, 172130561Sobrien {"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)}, 173130561Sobrien {"br.ret.spnt.clr", BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)}, 174130561Sobrien {"br.ret.dptk.few", BRT (0x21, 4, 0, 2, 0, MOD_RRBS)}, 175130561Sobrien {"br.ret.dptk", BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)}, 176130561Sobrien {"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)}, 177130561Sobrien {"br.ret.dptk.clr", BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)}, 178130561Sobrien {"br.ret.dpnt.few", BRT (0x21, 4, 0, 3, 0, MOD_RRBS)}, 179130561Sobrien {"br.ret.dpnt", BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)}, 180130561Sobrien {"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)}, 181130561Sobrien {"br.ret.dpnt.clr", BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)}, 182130561Sobrien {"br.ret.sptk.many", BRT (0x21, 4, 1, 0, 0, MOD_RRBS)}, 183130561Sobrien {"br.ret.sptk.many.clr", BRT (0x21, 4, 1, 0, 1, MOD_RRBS)}, 184130561Sobrien {"br.ret.spnt.many", BRT (0x21, 4, 1, 1, 0, MOD_RRBS)}, 185130561Sobrien {"br.ret.spnt.many.clr", BRT (0x21, 4, 1, 1, 1, MOD_RRBS)}, 186130561Sobrien {"br.ret.dptk.many", BRT (0x21, 4, 1, 2, 0, MOD_RRBS)}, 187130561Sobrien {"br.ret.dptk.many.clr", BRT (0x21, 4, 1, 2, 1, MOD_RRBS)}, 188130561Sobrien {"br.ret.dpnt.many", BRT (0x21, 4, 1, 3, 0, MOD_RRBS)}, 189130561Sobrien {"br.ret.dpnt.many.clr", BRT (0x21, 4, 1, 3, 1, MOD_RRBS)}, 19084865Sobrien#undef BR 191130561Sobrien#undef BRP 192130561Sobrien#undef BRT 19384865Sobrien 194130561Sobrien {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL}, 195130561Sobrien {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL}, 196130561Sobrien {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL}, 197130561Sobrien {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL}, 198130561Sobrien {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL}, 199130561Sobrien {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL}, 200130561Sobrien {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL}, 201218822Sdim {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL}, 202218822Sdim {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL}, 20384865Sobrien 204130561Sobrien {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY}, 20584865Sobrien 206130561Sobrien {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY}, 207130561Sobrien {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL}, 208130561Sobrien {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY}, 209130561Sobrien {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL}, 210130561Sobrien {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY}, 211130561Sobrien {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL}, 212130561Sobrien {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY}, 213130561Sobrien {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL}, 214130561Sobrien {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY}, 215130561Sobrien {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL}, 216130561Sobrien {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY}, 217130561Sobrien {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL}, 218130561Sobrien {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY}, 219130561Sobrien {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL}, 220130561Sobrien {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY}, 221130561Sobrien {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL}, 222130561Sobrien {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY}, 223130561Sobrien {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY}, 224130561Sobrien {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY}, 225130561Sobrien {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY}, 226130561Sobrien {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY}, 227130561Sobrien {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY}, 228130561Sobrien {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY}, 229130561Sobrien {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY}, 23084865Sobrien 23184865Sobrien#define BRP(a,b,c) \ 232130561Sobrien B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL 23384865Sobrien {"brp.sptk", BRP (0x10, 0, 0)}, 23484865Sobrien {"brp.dptk", BRP (0x10, 0, 2)}, 23584865Sobrien {"brp.sptk.imp", BRP (0x10, 1, 0)}, 23684865Sobrien {"brp.dptk.imp", BRP (0x10, 1, 2)}, 23784865Sobrien {"brp.ret.sptk", BRP (0x11, 0, 0)}, 23884865Sobrien {"brp.ret.dptk", BRP (0x11, 0, 2)}, 23984865Sobrien {"brp.ret.sptk.imp", BRP (0x11, 1, 0)}, 24084865Sobrien {"brp.ret.dptk.imp", BRP (0x11, 1, 2)}, 24184865Sobrien#undef BRP 24284865Sobrien 243130561Sobrien {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY}, 244130561Sobrien {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY}, 24584865Sobrien 24684865Sobrien#define BR(a,b) \ 247130561Sobrien B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL 24884865Sobrien {"br.few", BR (0, 0)}, 24984865Sobrien {"br", BR (0, 0)}, 25084865Sobrien {"br.few.clr", BR (0, 1)}, 25184865Sobrien {"br.clr", BR (0, 1)}, 25284865Sobrien {"br.many", BR (1, 0)}, 25384865Sobrien {"br.many.clr", BR (1, 1)}, 25484865Sobrien#undef BR 25584865Sobrien 25684865Sobrien#define BR(a,b,c) \ 257130561Sobrien B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY 258130561Sobrien#define BRP(a,b,c) \ 259130561Sobrien B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL 26084865Sobrien {"br.cond.sptk.few", BR (0, 0, 0)}, 261130561Sobrien {"br.cond.sptk", BRP (0, 0, 0)}, 26284865Sobrien {"br.cond.sptk.few.clr", BR (0, 0, 1)}, 263130561Sobrien {"br.cond.sptk.clr", BRP (0, 0, 1)}, 26484865Sobrien {"br.cond.spnt.few", BR (0, 1, 0)}, 265130561Sobrien {"br.cond.spnt", BRP (0, 1, 0)}, 26684865Sobrien {"br.cond.spnt.few.clr", BR (0, 1, 1)}, 267130561Sobrien {"br.cond.spnt.clr", BRP (0, 1, 1)}, 26884865Sobrien {"br.cond.dptk.few", BR (0, 2, 0)}, 269130561Sobrien {"br.cond.dptk", BRP (0, 2, 0)}, 27084865Sobrien {"br.cond.dptk.few.clr", BR (0, 2, 1)}, 271130561Sobrien {"br.cond.dptk.clr", BRP (0, 2, 1)}, 27284865Sobrien {"br.cond.dpnt.few", BR (0, 3, 0)}, 273130561Sobrien {"br.cond.dpnt", BRP (0, 3, 0)}, 27484865Sobrien {"br.cond.dpnt.few.clr", BR (0, 3, 1)}, 275130561Sobrien {"br.cond.dpnt.clr", BRP (0, 3, 1)}, 27684865Sobrien {"br.cond.sptk.many", BR (1, 0, 0)}, 27784865Sobrien {"br.cond.sptk.many.clr", BR (1, 0, 1)}, 27884865Sobrien {"br.cond.spnt.many", BR (1, 1, 0)}, 27984865Sobrien {"br.cond.spnt.many.clr", BR (1, 1, 1)}, 28084865Sobrien {"br.cond.dptk.many", BR (1, 2, 0)}, 28184865Sobrien {"br.cond.dptk.many.clr", BR (1, 2, 1)}, 28284865Sobrien {"br.cond.dpnt.many", BR (1, 3, 0)}, 28384865Sobrien {"br.cond.dpnt.many.clr", BR (1, 3, 1)}, 28484865Sobrien {"br.sptk.few", BR (0, 0, 0)}, 285130561Sobrien {"br.sptk", BRP (0, 0, 0)}, 28684865Sobrien {"br.sptk.few.clr", BR (0, 0, 1)}, 287130561Sobrien {"br.sptk.clr", BRP (0, 0, 1)}, 28884865Sobrien {"br.spnt.few", BR (0, 1, 0)}, 289130561Sobrien {"br.spnt", BRP (0, 1, 0)}, 29084865Sobrien {"br.spnt.few.clr", BR (0, 1, 1)}, 291130561Sobrien {"br.spnt.clr", BRP (0, 1, 1)}, 29284865Sobrien {"br.dptk.few", BR (0, 2, 0)}, 293130561Sobrien {"br.dptk", BRP (0, 2, 0)}, 29484865Sobrien {"br.dptk.few.clr", BR (0, 2, 1)}, 295130561Sobrien {"br.dptk.clr", BRP (0, 2, 1)}, 29684865Sobrien {"br.dpnt.few", BR (0, 3, 0)}, 297130561Sobrien {"br.dpnt", BRP (0, 3, 0)}, 29884865Sobrien {"br.dpnt.few.clr", BR (0, 3, 1)}, 299130561Sobrien {"br.dpnt.clr", BRP (0, 3, 1)}, 30084865Sobrien {"br.sptk.many", BR (1, 0, 0)}, 30184865Sobrien {"br.sptk.many.clr", BR (1, 0, 1)}, 30284865Sobrien {"br.spnt.many", BR (1, 1, 0)}, 30384865Sobrien {"br.spnt.many.clr", BR (1, 1, 1)}, 30484865Sobrien {"br.dptk.many", BR (1, 2, 0)}, 30584865Sobrien {"br.dptk.many.clr", BR (1, 2, 1)}, 30684865Sobrien {"br.dpnt.many", BR (1, 3, 0)}, 30784865Sobrien {"br.dpnt.many.clr", BR (1, 3, 1)}, 30884865Sobrien#undef BR 309130561Sobrien#undef BRP 31084865Sobrien 311130561Sobrien#define BR(a,b,c,d, e) \ 312130561Sobrien B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL 313130561Sobrien {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)}, 314130561Sobrien {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)}, 315130561Sobrien {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)}, 316130561Sobrien {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)}, 317130561Sobrien {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)}, 318130561Sobrien {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)}, 319130561Sobrien {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)}, 320130561Sobrien {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)}, 321130561Sobrien {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)}, 322130561Sobrien {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)}, 323130561Sobrien {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)}, 324130561Sobrien {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)}, 325130561Sobrien {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)}, 326130561Sobrien {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)}, 327130561Sobrien {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)}, 328130561Sobrien {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)}, 329130561Sobrien {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)}, 330130561Sobrien {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)}, 331130561Sobrien {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)}, 332130561Sobrien {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)}, 333130561Sobrien {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)}, 334130561Sobrien {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)}, 335130561Sobrien {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)}, 336130561Sobrien {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)}, 337130561Sobrien {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)}, 338130561Sobrien {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)}, 339130561Sobrien {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)}, 340130561Sobrien {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)}, 341130561Sobrien {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)}, 342130561Sobrien {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)}, 343130561Sobrien {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)}, 344130561Sobrien {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)}, 345130561Sobrien {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)}, 346130561Sobrien {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)}, 347130561Sobrien {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)}, 348130561Sobrien {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)}, 349130561Sobrien {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)}, 350130561Sobrien {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)}, 351130561Sobrien {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)}, 352130561Sobrien {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)}, 353130561Sobrien {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)}, 354130561Sobrien {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)}, 355130561Sobrien {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)}, 356130561Sobrien {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)}, 357130561Sobrien {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)}, 358130561Sobrien {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)}, 359130561Sobrien {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)}, 360130561Sobrien {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)}, 36184865Sobrien 36284865Sobrien#undef BR 36384865Sobrien#define BR(a,b,c,d) \ 364130561Sobrien B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL 365130561Sobrien#define BRT(a,b,c,d,e) \ 366130561Sobrien B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL 36784865Sobrien {"br.cloop.sptk.few", BR (5, 0, 0, 0)}, 368130561Sobrien {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)}, 36984865Sobrien {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)}, 370130561Sobrien {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)}, 37184865Sobrien {"br.cloop.spnt.few", BR (5, 0, 1, 0)}, 372130561Sobrien {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)}, 37384865Sobrien {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)}, 374130561Sobrien {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)}, 37584865Sobrien {"br.cloop.dptk.few", BR (5, 0, 2, 0)}, 376130561Sobrien {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)}, 37784865Sobrien {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)}, 378130561Sobrien {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)}, 37984865Sobrien {"br.cloop.dpnt.few", BR (5, 0, 3, 0)}, 380130561Sobrien {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)}, 38184865Sobrien {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)}, 382130561Sobrien {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)}, 38384865Sobrien {"br.cloop.sptk.many", BR (5, 1, 0, 0)}, 38484865Sobrien {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)}, 38584865Sobrien {"br.cloop.spnt.many", BR (5, 1, 1, 0)}, 38684865Sobrien {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)}, 38784865Sobrien {"br.cloop.dptk.many", BR (5, 1, 2, 0)}, 38884865Sobrien {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)}, 38984865Sobrien {"br.cloop.dpnt.many", BR (5, 1, 3, 0)}, 39084865Sobrien {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)}, 391130561Sobrien {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)}, 392130561Sobrien {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)}, 393130561Sobrien {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)}, 394130561Sobrien {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)}, 395130561Sobrien {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)}, 396130561Sobrien {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)}, 397130561Sobrien {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)}, 398130561Sobrien {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)}, 399130561Sobrien {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)}, 400130561Sobrien {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)}, 401130561Sobrien {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)}, 402130561Sobrien {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)}, 403130561Sobrien {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)}, 404130561Sobrien {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)}, 405130561Sobrien {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)}, 406130561Sobrien {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)}, 407130561Sobrien {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)}, 408130561Sobrien {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)}, 409130561Sobrien {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)}, 410130561Sobrien {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)}, 411130561Sobrien {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)}, 412130561Sobrien {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)}, 413130561Sobrien {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)}, 414130561Sobrien {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)}, 415130561Sobrien {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)}, 416130561Sobrien {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)}, 417130561Sobrien {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)}, 418130561Sobrien {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)}, 419130561Sobrien {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)}, 420130561Sobrien {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)}, 421130561Sobrien {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)}, 422130561Sobrien {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)}, 423130561Sobrien {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)}, 424130561Sobrien {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)}, 425130561Sobrien {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)}, 426130561Sobrien {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)}, 427130561Sobrien {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)}, 428130561Sobrien {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)}, 429130561Sobrien {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)}, 430130561Sobrien {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)}, 431130561Sobrien {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)}, 432130561Sobrien {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)}, 433130561Sobrien {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)}, 434130561Sobrien {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)}, 435130561Sobrien {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)}, 436130561Sobrien {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)}, 437130561Sobrien {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)}, 438130561Sobrien {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)}, 43984865Sobrien#undef BR 440130561Sobrien#undef BRT 44184865Sobrien 442130561Sobrien {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY}, 443130561Sobrien {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 444130561Sobrien {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY}, 445130561Sobrien {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 446130561Sobrien {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY}, 447130561Sobrien {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 448130561Sobrien {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY}, 449130561Sobrien {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 450130561Sobrien {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY}, 451130561Sobrien {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 452130561Sobrien {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY}, 453130561Sobrien {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 454130561Sobrien {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY}, 455130561Sobrien {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 456130561Sobrien {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY}, 457130561Sobrien {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 458130561Sobrien {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY}, 459130561Sobrien {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY}, 460130561Sobrien {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY}, 461130561Sobrien {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY}, 462130561Sobrien {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY}, 463130561Sobrien {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY}, 464130561Sobrien {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY}, 465130561Sobrien {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY}, 466130561Sobrien 467130561Sobrien /* Branch predict. */ 46884865Sobrien#define BRP(a,b) \ 469130561Sobrien B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL 47084865Sobrien {"brp.sptk", BRP (0, 0)}, 47184865Sobrien {"brp.loop", BRP (0, 1)}, 47284865Sobrien {"brp.dptk", BRP (0, 2)}, 47384865Sobrien {"brp.exit", BRP (0, 3)}, 47484865Sobrien {"brp.sptk.imp", BRP (1, 0)}, 47584865Sobrien {"brp.loop.imp", BRP (1, 1)}, 47684865Sobrien {"brp.dptk.imp", BRP (1, 2)}, 47784865Sobrien {"brp.exit.imp", BRP (1, 3)}, 47884865Sobrien#undef BRP 47984865Sobrien 480130561Sobrien {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 48184865Sobrien }; 48284865Sobrien 48384865Sobrien#undef B0 48484865Sobrien#undef B 48584865Sobrien#undef bBtype 48684865Sobrien#undef bD 48784865Sobrien#undef bIh 48884865Sobrien#undef bPa 48984865Sobrien#undef bPr 49084865Sobrien#undef bWha 49184865Sobrien#undef bWhb 492104834Sobrien#undef bWhc 49384865Sobrien#undef bX6 49484865Sobrien#undef mBtype 49584865Sobrien#undef mD 49684865Sobrien#undef mIh 49784865Sobrien#undef mPa 49884865Sobrien#undef mPr 49984865Sobrien#undef mWha 50084865Sobrien#undef mWhb 501104834Sobrien#undef mWhc 50284865Sobrien#undef mX6 50384865Sobrien#undef OpX6 50484865Sobrien#undef OpPaWhaD 505104834Sobrien#undef OpPaWhcD 50684865Sobrien#undef OpBtypePaWhaD 50784865Sobrien#undef OpBtypePaWhaDPr 50884865Sobrien#undef OpX6BtypePaWhaD 50984865Sobrien#undef OpX6BtypePaWhaDPr 51084865Sobrien#undef OpIhWhb 51184865Sobrien#undef OpX6IhWhb 512130561Sobrien#undef EMPTY 513