1 /* ia64-opc-b.c -- IA-64 `B' opcode table. 2 Copyright (C) 1998-2014 Free Software Foundation, Inc. 3 Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 4 5 This file is part of the GNU opcodes library. 6 7 This library is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3, or (at your option) 10 any later version. 11 12 It is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15 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, 51 Franklin Street - Fifth Floor, Boston, 20 MA 02110-1301, 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 {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL}, 201 {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL}, 202 203 {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY}, 204 205 {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY}, 206 {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL}, 207 {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY}, 208 {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL}, 209 {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY}, 210 {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL}, 211 {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY}, 212 {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL}, 213 {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY}, 214 {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL}, 215 {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY}, 216 {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL}, 217 {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY}, 218 {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL}, 219 {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY}, 220 {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL}, 221 {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY}, 222 {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY}, 223 {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY}, 224 {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY}, 225 {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY}, 226 {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY}, 227 {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY}, 228 {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY}, 229 230 #define BRP(a,b,c) \ 231 B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL 232 {"brp.sptk", BRP (0x10, 0, 0)}, 233 {"brp.dptk", BRP (0x10, 0, 2)}, 234 {"brp.sptk.imp", BRP (0x10, 1, 0)}, 235 {"brp.dptk.imp", BRP (0x10, 1, 2)}, 236 {"brp.ret.sptk", BRP (0x11, 0, 0)}, 237 {"brp.ret.dptk", BRP (0x11, 0, 2)}, 238 {"brp.ret.sptk.imp", BRP (0x11, 1, 0)}, 239 {"brp.ret.dptk.imp", BRP (0x11, 1, 2)}, 240 #undef BRP 241 242 {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY}, 243 {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY}, 244 245 #define BR(a,b) \ 246 B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL 247 {"br.few", BR (0, 0)}, 248 {"br", BR (0, 0)}, 249 {"br.few.clr", BR (0, 1)}, 250 {"br.clr", BR (0, 1)}, 251 {"br.many", BR (1, 0)}, 252 {"br.many.clr", BR (1, 1)}, 253 #undef BR 254 255 #define BR(a,b,c) \ 256 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY 257 #define BRP(a,b,c) \ 258 B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL 259 {"br.cond.sptk.few", BR (0, 0, 0)}, 260 {"br.cond.sptk", BRP (0, 0, 0)}, 261 {"br.cond.sptk.few.clr", BR (0, 0, 1)}, 262 {"br.cond.sptk.clr", BRP (0, 0, 1)}, 263 {"br.cond.spnt.few", BR (0, 1, 0)}, 264 {"br.cond.spnt", BRP (0, 1, 0)}, 265 {"br.cond.spnt.few.clr", BR (0, 1, 1)}, 266 {"br.cond.spnt.clr", BRP (0, 1, 1)}, 267 {"br.cond.dptk.few", BR (0, 2, 0)}, 268 {"br.cond.dptk", BRP (0, 2, 0)}, 269 {"br.cond.dptk.few.clr", BR (0, 2, 1)}, 270 {"br.cond.dptk.clr", BRP (0, 2, 1)}, 271 {"br.cond.dpnt.few", BR (0, 3, 0)}, 272 {"br.cond.dpnt", BRP (0, 3, 0)}, 273 {"br.cond.dpnt.few.clr", BR (0, 3, 1)}, 274 {"br.cond.dpnt.clr", BRP (0, 3, 1)}, 275 {"br.cond.sptk.many", BR (1, 0, 0)}, 276 {"br.cond.sptk.many.clr", BR (1, 0, 1)}, 277 {"br.cond.spnt.many", BR (1, 1, 0)}, 278 {"br.cond.spnt.many.clr", BR (1, 1, 1)}, 279 {"br.cond.dptk.many", BR (1, 2, 0)}, 280 {"br.cond.dptk.many.clr", BR (1, 2, 1)}, 281 {"br.cond.dpnt.many", BR (1, 3, 0)}, 282 {"br.cond.dpnt.many.clr", BR (1, 3, 1)}, 283 {"br.sptk.few", BR (0, 0, 0)}, 284 {"br.sptk", BRP (0, 0, 0)}, 285 {"br.sptk.few.clr", BR (0, 0, 1)}, 286 {"br.sptk.clr", BRP (0, 0, 1)}, 287 {"br.spnt.few", BR (0, 1, 0)}, 288 {"br.spnt", BRP (0, 1, 0)}, 289 {"br.spnt.few.clr", BR (0, 1, 1)}, 290 {"br.spnt.clr", BRP (0, 1, 1)}, 291 {"br.dptk.few", BR (0, 2, 0)}, 292 {"br.dptk", BRP (0, 2, 0)}, 293 {"br.dptk.few.clr", BR (0, 2, 1)}, 294 {"br.dptk.clr", BRP (0, 2, 1)}, 295 {"br.dpnt.few", BR (0, 3, 0)}, 296 {"br.dpnt", BRP (0, 3, 0)}, 297 {"br.dpnt.few.clr", BR (0, 3, 1)}, 298 {"br.dpnt.clr", BRP (0, 3, 1)}, 299 {"br.sptk.many", BR (1, 0, 0)}, 300 {"br.sptk.many.clr", BR (1, 0, 1)}, 301 {"br.spnt.many", BR (1, 1, 0)}, 302 {"br.spnt.many.clr", BR (1, 1, 1)}, 303 {"br.dptk.many", BR (1, 2, 0)}, 304 {"br.dptk.many.clr", BR (1, 2, 1)}, 305 {"br.dpnt.many", BR (1, 3, 0)}, 306 {"br.dpnt.many.clr", BR (1, 3, 1)}, 307 #undef BR 308 #undef BRP 309 310 #define BR(a,b,c,d, e) \ 311 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL 312 {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)}, 313 {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)}, 314 {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)}, 315 {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)}, 316 {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)}, 317 {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)}, 318 {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)}, 319 {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)}, 320 {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)}, 321 {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)}, 322 {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)}, 323 {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)}, 324 {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)}, 325 {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)}, 326 {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)}, 327 {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)}, 328 {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)}, 329 {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)}, 330 {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)}, 331 {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)}, 332 {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)}, 333 {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)}, 334 {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)}, 335 {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)}, 336 {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)}, 337 {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)}, 338 {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)}, 339 {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)}, 340 {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)}, 341 {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)}, 342 {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)}, 343 {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)}, 344 {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)}, 345 {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)}, 346 {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)}, 347 {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)}, 348 {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)}, 349 {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)}, 350 {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)}, 351 {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)}, 352 {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)}, 353 {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)}, 354 {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)}, 355 {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)}, 356 {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)}, 357 {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)}, 358 {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)}, 359 {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)}, 360 361 #undef BR 362 #define BR(a,b,c,d) \ 363 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL 364 #define BRT(a,b,c,d,e) \ 365 B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL 366 {"br.cloop.sptk.few", BR (5, 0, 0, 0)}, 367 {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)}, 368 {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)}, 369 {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)}, 370 {"br.cloop.spnt.few", BR (5, 0, 1, 0)}, 371 {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)}, 372 {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)}, 373 {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)}, 374 {"br.cloop.dptk.few", BR (5, 0, 2, 0)}, 375 {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)}, 376 {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)}, 377 {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)}, 378 {"br.cloop.dpnt.few", BR (5, 0, 3, 0)}, 379 {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)}, 380 {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)}, 381 {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)}, 382 {"br.cloop.sptk.many", BR (5, 1, 0, 0)}, 383 {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)}, 384 {"br.cloop.spnt.many", BR (5, 1, 1, 0)}, 385 {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)}, 386 {"br.cloop.dptk.many", BR (5, 1, 2, 0)}, 387 {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)}, 388 {"br.cloop.dpnt.many", BR (5, 1, 3, 0)}, 389 {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)}, 390 {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)}, 391 {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)}, 392 {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)}, 393 {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)}, 394 {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)}, 395 {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)}, 396 {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)}, 397 {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)}, 398 {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)}, 399 {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)}, 400 {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)}, 401 {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)}, 402 {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)}, 403 {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)}, 404 {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)}, 405 {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)}, 406 {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)}, 407 {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)}, 408 {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)}, 409 {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)}, 410 {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)}, 411 {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)}, 412 {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)}, 413 {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)}, 414 {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)}, 415 {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)}, 416 {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)}, 417 {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)}, 418 {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)}, 419 {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)}, 420 {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)}, 421 {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)}, 422 {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)}, 423 {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)}, 424 {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)}, 425 {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)}, 426 {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)}, 427 {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)}, 428 {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)}, 429 {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)}, 430 {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)}, 431 {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)}, 432 {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)}, 433 {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)}, 434 {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)}, 435 {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)}, 436 {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)}, 437 {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)}, 438 #undef BR 439 #undef BRT 440 441 {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY}, 442 {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 443 {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY}, 444 {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 445 {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY}, 446 {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 447 {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY}, 448 {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 449 {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY}, 450 {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 451 {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY}, 452 {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 453 {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY}, 454 {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL}, 455 {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY}, 456 {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL}, 457 {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY}, 458 {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY}, 459 {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY}, 460 {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY}, 461 {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY}, 462 {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY}, 463 {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY}, 464 {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY}, 465 466 /* Branch predict. */ 467 #define BRP(a,b) \ 468 B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL 469 {"brp.sptk", BRP (0, 0)}, 470 {"brp.loop", BRP (0, 1)}, 471 {"brp.dptk", BRP (0, 2)}, 472 {"brp.exit", BRP (0, 3)}, 473 {"brp.sptk.imp", BRP (1, 0)}, 474 {"brp.loop.imp", BRP (1, 1)}, 475 {"brp.dptk.imp", BRP (1, 2)}, 476 {"brp.exit.imp", BRP (1, 3)}, 477 #undef BRP 478 479 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 480 }; 481 482 #undef B0 483 #undef B 484 #undef bBtype 485 #undef bD 486 #undef bIh 487 #undef bPa 488 #undef bPr 489 #undef bWha 490 #undef bWhb 491 #undef bWhc 492 #undef bX6 493 #undef mBtype 494 #undef mD 495 #undef mIh 496 #undef mPa 497 #undef mPr 498 #undef mWha 499 #undef mWhb 500 #undef mWhc 501 #undef mX6 502 #undef OpX6 503 #undef OpPaWhaD 504 #undef OpPaWhcD 505 #undef OpBtypePaWhaD 506 #undef OpBtypePaWhaDPr 507 #undef OpX6BtypePaWhaD 508 #undef OpX6BtypePaWhaDPr 509 #undef OpIhWhb 510 #undef OpX6IhWhb 511 #undef EMPTY 512