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 77 struct ia64_opcode ia64_opcodes_b[] = 78 { 79 /* B-type instruction encodings (sorted according to major opcode) */ 80 81 #define BR(a,b) \ 82 B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL 83 {"br.few", BR (0, 0)}, 84 {"br", BR (0, 0)}, 85 {"br.few.clr", BR (0, 1)}, 86 {"br.clr", BR (0, 1)}, 87 {"br.many", BR (1, 0)}, 88 {"br.many.clr", BR (1, 1)}, 89 #undef BR 90 91 #define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY 92 #define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL 93 #define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL 94 {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)}, 95 {"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)}, 96 {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)}, 97 {"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)}, 98 {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)}, 99 {"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)}, 100 {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)}, 101 {"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)}, 102 {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)}, 103 {"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)}, 104 {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)}, 105 {"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)}, 106 {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)}, 107 {"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)}, 108 {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)}, 109 {"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)}, 110 {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)}, 111 {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)}, 112 {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)}, 113 {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)}, 114 {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)}, 115 {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)}, 116 {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)}, 117 {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)}, 118 {"br.sptk.few", BR (0x20, 0, 0, 0, 0)}, 119 {"br.sptk", BRP (0x20, 0, 0, 0, 0)}, 120 {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)}, 121 {"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)}, 122 {"br.spnt.few", BR (0x20, 0, 0, 1, 0)}, 123 {"br.spnt", BRP (0x20, 0, 0, 1, 0)}, 124 {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)}, 125 {"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)}, 126 {"br.dptk.few", BR (0x20, 0, 0, 2, 0)}, 127 {"br.dptk", BRP (0x20, 0, 0, 2, 0)}, 128 {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)}, 129 {"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)}, 130 {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)}, 131 {"br.dpnt", BRP (0x20, 0, 0, 3, 0)}, 132 {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)}, 133 {"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)}, 134 {"br.sptk.many", BR (0x20, 0, 1, 0, 0)}, 135 {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)}, 136 {"br.spnt.many", BR (0x20, 0, 1, 1, 0)}, 137 {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)}, 138 {"br.dptk.many", BR (0x20, 0, 1, 2, 0)}, 139 {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)}, 140 {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)}, 141 {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)}, 142 {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)}, 143 {"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)}, 144 {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)}, 145 {"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)}, 146 {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)}, 147 {"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)}, 148 {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)}, 149 {"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)}, 150 {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)}, 151 {"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)}, 152 {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)}, 153 {"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)}, 154 {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)}, 155 {"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)}, 156 {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)}, 157 {"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)}, 158 {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)}, 159 {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)}, 160 {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)}, 161 {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)}, 162 {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)}, 163 {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)}, 164 {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)}, 165 {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)}, 166 {"br.ret.sptk.few", BRT (0x21, 4, 0, 0, 0, MOD_RRBS)}, 167 {"br.ret.sptk", BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)}, 168 {"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)}, 169 {"br.ret.sptk.clr", BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)}, 170 {"br.ret.spnt.few", BRT (0x21, 4, 0, 1, 0, MOD_RRBS)}, 171 {"br.ret.spnt", BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)}, 172 {"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)}, 173 {"br.ret.spnt.clr", BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)}, 174 {"br.ret.dptk.few", BRT (0x21, 4, 0, 2, 0, MOD_RRBS)}, 175 {"br.ret.dptk", BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)}, 176 {"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)}, 177 {"br.ret.dptk.clr", BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)}, 178 {"br.ret.dpnt.few", BRT (0x21, 4, 0, 3, 0, MOD_RRBS)}, 179 {"br.ret.dpnt", BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)}, 180 {"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)}, 181 {"br.ret.dpnt.clr", BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)}, 182 {"br.ret.sptk.many", BRT (0x21, 4, 1, 0, 0, MOD_RRBS)}, 183 {"br.ret.sptk.many.clr", BRT (0x21, 4, 1, 0, 1, MOD_RRBS)}, 184 {"br.ret.spnt.many", BRT (0x21, 4, 1, 1, 0, MOD_RRBS)}, 185 {"br.ret.spnt.many.clr", BRT (0x21, 4, 1, 1, 1, MOD_RRBS)}, 186 {"br.ret.dptk.many", BRT (0x21, 4, 1, 2, 0, MOD_RRBS)}, 187 {"br.ret.dptk.many.clr", BRT (0x21, 4, 1, 2, 1, MOD_RRBS)}, 188 {"br.ret.dpnt.many", BRT (0x21, 4, 1, 3, 0, MOD_RRBS)}, 189 {"br.ret.dpnt.many.clr", BRT (0x21, 4, 1, 3, 1, MOD_RRBS)}, 190 #undef BR 191 #undef BRP 192 #undef BRT 193 194 {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL}, 195 {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL}, 196 {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL}, 197 {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL}, 198 {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL}, 199 {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL}, 200 {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL}, 201 {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL}, 202 {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL}, 203 204 {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY}, 205 206 {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY}, 207 {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL}, 208 {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY}, 209 {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL}, 210 {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY}, 211 {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL}, 212 {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY}, 213 {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL}, 214 {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY}, 215 {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL}, 216 {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY}, 217 {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL}, 218 {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY}, 219 {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL}, 220 {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY}, 221 {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL}, 222 {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY}, 223 {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY}, 224 {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY}, 225 {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY}, 226 {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY}, 227 {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY}, 228 {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY}, 229 {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY}, 230 231 #define BRP(a,b,c) \ 232 B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL 233 {"brp.sptk", BRP (0x10, 0, 0)}, 234 {"brp.dptk", BRP (0x10, 0, 2)}, 235 {"brp.sptk.imp", BRP (0x10, 1, 0)}, 236 {"brp.dptk.imp", BRP (0x10, 1, 2)}, 237 {"brp.ret.sptk", BRP (0x11, 0, 0)}, 238 {"brp.ret.dptk", BRP (0x11, 0, 2)}, 239 {"brp.ret.sptk.imp", BRP (0x11, 1, 0)}, 240 {"brp.ret.dptk.imp", BRP (0x11, 1, 2)}, 241 #undef BRP 242 243 {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY}, 244 {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY}, 245 246 #define BR(a,b) \ 247 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL 248 {"br.few", BR (0, 0)}, 249 {"br", BR (0, 0)}, 250 {"br.few.clr", BR (0, 1)}, 251 {"br.clr", BR (0, 1)}, 252 {"br.many", BR (1, 0)}, 253 {"br.many.clr", BR (1, 1)}, 254 #undef BR 255 256 #define BR(a,b,c) \ 257 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY 258 #define BRP(a,b,c) \ 259 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL 260 {"br.cond.sptk.few", BR (0, 0, 0)}, 261 {"br.cond.sptk", BRP (0, 0, 0)}, 262 {"br.cond.sptk.few.clr", BR (0, 0, 1)}, 263 {"br.cond.sptk.clr", BRP (0, 0, 1)}, 264 {"br.cond.spnt.few", BR (0, 1, 0)}, 265 {"br.cond.spnt", BRP (0, 1, 0)}, 266 {"br.cond.spnt.few.clr", BR (0, 1, 1)}, 267 {"br.cond.spnt.clr", BRP (0, 1, 1)}, 268 {"br.cond.dptk.few", BR (0, 2, 0)}, 269 {"br.cond.dptk", BRP (0, 2, 0)}, 270 {"br.cond.dptk.few.clr", BR (0, 2, 1)}, 271 {"br.cond.dptk.clr", BRP (0, 2, 1)}, 272 {"br.cond.dpnt.few", BR (0, 3, 0)}, 273 {"br.cond.dpnt", BRP (0, 3, 0)}, 274 {"br.cond.dpnt.few.clr", BR (0, 3, 1)}, 275 {"br.cond.dpnt.clr", BRP (0, 3, 1)}, 276 {"br.cond.sptk.many", BR (1, 0, 0)}, 277 {"br.cond.sptk.many.clr", BR (1, 0, 1)}, 278 {"br.cond.spnt.many", BR (1, 1, 0)}, 279 {"br.cond.spnt.many.clr", BR (1, 1, 1)}, 280 {"br.cond.dptk.many", BR (1, 2, 0)}, 281 {"br.cond.dptk.many.clr", BR (1, 2, 1)}, 282 {"br.cond.dpnt.many", BR (1, 3, 0)}, 283 {"br.cond.dpnt.many.clr", BR (1, 3, 1)}, 284 {"br.sptk.few", BR (0, 0, 0)}, 285 {"br.sptk", BRP (0, 0, 0)}, 286 {"br.sptk.few.clr", BR (0, 0, 1)}, 287 {"br.sptk.clr", BRP (0, 0, 1)}, 288 {"br.spnt.few", BR (0, 1, 0)}, 289 {"br.spnt", BRP (0, 1, 0)}, 290 {"br.spnt.few.clr", BR (0, 1, 1)}, 291 {"br.spnt.clr", BRP (0, 1, 1)}, 292 {"br.dptk.few", BR (0, 2, 0)}, 293 {"br.dptk", BRP (0, 2, 0)}, 294 {"br.dptk.few.clr", BR (0, 2, 1)}, 295 {"br.dptk.clr", BRP (0, 2, 1)}, 296 {"br.dpnt.few", BR (0, 3, 0)}, 297 {"br.dpnt", BRP (0, 3, 0)}, 298 {"br.dpnt.few.clr", BR (0, 3, 1)}, 299 {"br.dpnt.clr", BRP (0, 3, 1)}, 300 {"br.sptk.many", BR (1, 0, 0)}, 301 {"br.sptk.many.clr", BR (1, 0, 1)}, 302 {"br.spnt.many", BR (1, 1, 0)}, 303 {"br.spnt.many.clr", BR (1, 1, 1)}, 304 {"br.dptk.many", BR (1, 2, 0)}, 305 {"br.dptk.many.clr", BR (1, 2, 1)}, 306 {"br.dpnt.many", BR (1, 3, 0)}, 307 {"br.dpnt.many.clr", BR (1, 3, 1)}, 308 #undef BR 309 #undef BRP 310 311 #define BR(a,b,c,d, e) \ 312 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL 313 {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)}, 314 {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)}, 315 {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)}, 316 {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)}, 317 {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)}, 318 {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)}, 319 {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)}, 320 {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)}, 321 {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)}, 322 {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)}, 323 {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)}, 324 {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)}, 325 {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)}, 326 {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)}, 327 {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)}, 328 {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)}, 329 {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)}, 330 {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)}, 331 {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)}, 332 {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)}, 333 {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)}, 334 {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)}, 335 {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)}, 336 {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)}, 337 {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)}, 338 {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)}, 339 {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)}, 340 {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)}, 341 {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)}, 342 {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)}, 343 {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)}, 344 {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)}, 345 {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)}, 346 {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)}, 347 {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)}, 348 {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)}, 349 {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)}, 350 {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)}, 351 {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)}, 352 {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)}, 353 {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)}, 354 {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)}, 355 {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)}, 356 {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)}, 357 {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)}, 358 {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)}, 359 {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)}, 360 {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)}, 361 362 #undef BR 363 #define BR(a,b,c,d) \ 364 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL 365 #define BRT(a,b,c,d,e) \ 366 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL 367 {"br.cloop.sptk.few", BR (5, 0, 0, 0)}, 368 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)}, 369 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)}, 370 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)}, 371 {"br.cloop.spnt.few", BR (5, 0, 1, 0)}, 372 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)}, 373 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)}, 374 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)}, 375 {"br.cloop.dptk.few", BR (5, 0, 2, 0)}, 376 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)}, 377 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)}, 378 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)}, 379 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)}, 380 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)}, 381 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)}, 382 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)}, 383 {"br.cloop.sptk.many", BR (5, 1, 0, 0)}, 384 {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)}, 385 {"br.cloop.spnt.many", BR (5, 1, 1, 0)}, 386 {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)}, 387 {"br.cloop.dptk.many", BR (5, 1, 2, 0)}, 388 {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)}, 389 {"br.cloop.dpnt.many", BR (5, 1, 3, 0)}, 390 {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)}, 391 {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)}, 392 {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)}, 393 {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)}, 394 {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)}, 395 {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)}, 396 {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)}, 397 {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)}, 398 {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)}, 399 {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)}, 400 {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)}, 401 {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)}, 402 {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)}, 403 {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)}, 404 {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)}, 405 {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)}, 406 {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)}, 407 {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)}, 408 {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)}, 409 {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)}, 410 {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)}, 411 {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)}, 412 {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)}, 413 {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)}, 414 {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)}, 415 {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)}, 416 {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)}, 417 {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)}, 418 {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)}, 419 {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)}, 420 {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)}, 421 {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)}, 422 {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)}, 423 {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)}, 424 {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)}, 425 {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)}, 426 {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)}, 427 {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)}, 428 {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)}, 429 {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)}, 430 {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)}, 431 {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)}, 432 {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)}, 433 {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)}, 434 {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)}, 435 {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)}, 436 {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)}, 437 {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)}, 438 {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)}, 439 #undef BR 440 #undef BRT 441 442 {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY}, 443 {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 444 {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY}, 445 {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 446 {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY}, 447 {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 448 {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY}, 449 {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 450 {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY}, 451 {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 452 {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY}, 453 {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 454 {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY}, 455 {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 456 {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY}, 457 {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 458 {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY}, 459 {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY}, 460 {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY}, 461 {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY}, 462 {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY}, 463 {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY}, 464 {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY}, 465 {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY}, 466 467 /* Branch predict. */ 468 #define BRP(a,b) \ 469 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL 470 {"brp.sptk", BRP (0, 0)}, 471 {"brp.loop", BRP (0, 1)}, 472 {"brp.dptk", BRP (0, 2)}, 473 {"brp.exit", BRP (0, 3)}, 474 {"brp.sptk.imp", BRP (1, 0)}, 475 {"brp.loop.imp", BRP (1, 1)}, 476 {"brp.dptk.imp", BRP (1, 2)}, 477 {"brp.exit.imp", BRP (1, 3)}, 478 #undef BRP 479 480 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 481 }; 482 483 #undef B0 484 #undef B 485 #undef bBtype 486 #undef bD 487 #undef bIh 488 #undef bPa 489 #undef bPr 490 #undef bWha 491 #undef bWhb 492 #undef bWhc 493 #undef bX6 494 #undef mBtype 495 #undef mD 496 #undef mIh 497 #undef mPa 498 #undef mPr 499 #undef mWha 500 #undef mWhb 501 #undef mWhc 502 #undef mX6 503 #undef OpX6 504 #undef OpPaWhaD 505 #undef OpPaWhcD 506 #undef OpBtypePaWhaD 507 #undef OpBtypePaWhaDPr 508 #undef OpX6BtypePaWhaD 509 #undef OpX6BtypePaWhaDPr 510 #undef OpIhWhb 511 #undef OpX6IhWhb 512 #undef EMPTY 513