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