1/* ia64-opc-b.c -- IA-64 `B' opcode table. 2 Copyright 1998, 1999, 2000, 2002, 2005, 2006, 2007 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 77struct 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 513