184865Sobrien/* ia64-opc-x.c -- IA-64 `X' opcode table. 2130561Sobrien Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc. 384865Sobrien Contributed by Timothy Wall <twall@cygnus.com> 484865Sobrien 584865Sobrien This file is part of GDB, GAS, and the GNU binutils. 684865Sobrien 784865Sobrien GDB, GAS, and the GNU binutils are free software; you can redistribute 884865Sobrien them and/or modify them under the terms of the GNU General Public 984865Sobrien License as published by the Free Software Foundation; either version 1084865Sobrien 2, or (at your option) any later version. 1184865Sobrien 1284865Sobrien GDB, GAS, and the GNU binutils are distributed in the hope that they 1384865Sobrien will be useful, but WITHOUT ANY WARRANTY; without even the implied 1484865Sobrien warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 1584865Sobrien the GNU General Public License for more details. 1684865Sobrien 1784865Sobrien You should have received a copy of the GNU General Public License 1884865Sobrien along with this file; see the file COPYING. If not, write to the 19218822Sdim Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 20218822Sdim 02110-1301, USA. */ 2184865Sobrien 2284865Sobrien#include "ia64-opc.h" 2384865Sobrien 24130561Sobrien/* Identify the specific X-unit type. */ 2584865Sobrien#define X0 IA64_TYPE_X, 0 2684865Sobrien#define X IA64_TYPE_X, 1 2784865Sobrien 28130561Sobrien/* Instruction bit fields: */ 2984865Sobrien#define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6) 3084865Sobrien#define bD(x) (((ia64_insn) ((x) & 0x1)) << 35) 3184865Sobrien#define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12) 3284865Sobrien#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0) 3384865Sobrien#define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20) 3484865Sobrien#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33) 3584865Sobrien#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33) 3684865Sobrien#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27) 37130561Sobrien#define bY(x) (((ia64_insn) ((x) & 0x1)) << 26) 3884865Sobrien 3984865Sobrien#define mBtype bBtype (-1) 4084865Sobrien#define mD bD (-1) 4184865Sobrien#define mPa bPa (-1) 4284865Sobrien#define mPr bPr (-1) 4384865Sobrien#define mVc bVc (-1) 4484865Sobrien#define mWha bWha (-1) 4584865Sobrien#define mX3 bX3 (-1) 4684865Sobrien#define mX6 bX6 (-1) 47130561Sobrien#define mY bY (-1) 4884865Sobrien 4984865Sobrien#define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ 5084865Sobrien (mOp | mX3 | mX6) 51130561Sobrien#define OpX3X6Y(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bY(d)), \ 52130561Sobrien (mOp | mX3 | mX6 | mY) 5384865Sobrien#define OpVc(a,b) (bOp (a) | bVc (b)), (mOp | mVc) 5484865Sobrien#define OpPaWhaD(a,b,c,d) \ 5584865Sobrien (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD) 5684865Sobrien#define OpBtypePaWhaD(a,b,c,d,e) \ 5784865Sobrien (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \ 5884865Sobrien (mOp | mBtype | mPa | mWha | mD) 5984865Sobrien#define OpBtypePaWhaDPr(a,b,c,d,e,f) \ 6084865Sobrien (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \ 6184865Sobrien (mOp | mBtype | mPa | mWha | mD | mPr) 6284865Sobrien 6384865Sobrienstruct ia64_opcode ia64_opcodes_x[] = 6484865Sobrien { 65130561Sobrien {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL}, 66130561Sobrien {"nop.x", X0, OpX3X6Y (0, 0, 0x01, 0), {IMMU62}, 0, 0, NULL}, 67130561Sobrien {"hint.x", X0, OpX3X6Y (0, 0, 0x01, 1), {IMMU62}, 0, 0, NULL}, 68130561Sobrien {"movl", X, OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL}, 6984865Sobrien#define BRL(a,b) \ 70130561Sobrien X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL 71130561Sobrien {"brl.few", BRL (0, 0)}, 72130561Sobrien {"brl", BRL (0, 0)}, 73130561Sobrien {"brl.few.clr", BRL (0, 1)}, 74130561Sobrien {"brl.clr", BRL (0, 1)}, 75130561Sobrien {"brl.many", BRL (1, 0)}, 76130561Sobrien {"brl.many.clr", BRL (1, 1)}, 7784865Sobrien#undef BRL 7884865Sobrien#define BRL(a,b,c) \ 79130561Sobrien X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL 80130561Sobrien#define BRLP(a,b,c) \ 81130561Sobrien X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL 8284865Sobrien {"brl.cond.sptk.few", BRL (0, 0, 0)}, 83130561Sobrien {"brl.cond.sptk", BRLP (0, 0, 0)}, 8484865Sobrien {"brl.cond.sptk.few.clr", BRL (0, 0, 1)}, 85130561Sobrien {"brl.cond.sptk.clr", BRLP (0, 0, 1)}, 8684865Sobrien {"brl.cond.spnt.few", BRL (0, 1, 0)}, 87130561Sobrien {"brl.cond.spnt", BRLP (0, 1, 0)}, 8884865Sobrien {"brl.cond.spnt.few.clr", BRL (0, 1, 1)}, 89130561Sobrien {"brl.cond.spnt.clr", BRLP (0, 1, 1)}, 9084865Sobrien {"brl.cond.dptk.few", BRL (0, 2, 0)}, 91130561Sobrien {"brl.cond.dptk", BRLP (0, 2, 0)}, 9284865Sobrien {"brl.cond.dptk.few.clr", BRL (0, 2, 1)}, 93130561Sobrien {"brl.cond.dptk.clr", BRLP (0, 2, 1)}, 9484865Sobrien {"brl.cond.dpnt.few", BRL (0, 3, 0)}, 95130561Sobrien {"brl.cond.dpnt", BRLP (0, 3, 0)}, 9684865Sobrien {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)}, 97130561Sobrien {"brl.cond.dpnt.clr", BRLP (0, 3, 1)}, 9884865Sobrien {"brl.cond.sptk.many", BRL (1, 0, 0)}, 9984865Sobrien {"brl.cond.sptk.many.clr", BRL (1, 0, 1)}, 10084865Sobrien {"brl.cond.spnt.many", BRL (1, 1, 0)}, 10184865Sobrien {"brl.cond.spnt.many.clr", BRL (1, 1, 1)}, 10284865Sobrien {"brl.cond.dptk.many", BRL (1, 2, 0)}, 10384865Sobrien {"brl.cond.dptk.many.clr", BRL (1, 2, 1)}, 10484865Sobrien {"brl.cond.dpnt.many", BRL (1, 3, 0)}, 10584865Sobrien {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)}, 10684865Sobrien {"brl.sptk.few", BRL (0, 0, 0)}, 107130561Sobrien {"brl.sptk", BRLP (0, 0, 0)}, 10884865Sobrien {"brl.sptk.few.clr", BRL (0, 0, 1)}, 109130561Sobrien {"brl.sptk.clr", BRLP (0, 0, 1)}, 11084865Sobrien {"brl.spnt.few", BRL (0, 1, 0)}, 111130561Sobrien {"brl.spnt", BRLP (0, 1, 0)}, 11284865Sobrien {"brl.spnt.few.clr", BRL (0, 1, 1)}, 113130561Sobrien {"brl.spnt.clr", BRLP (0, 1, 1)}, 11484865Sobrien {"brl.dptk.few", BRL (0, 2, 0)}, 115130561Sobrien {"brl.dptk", BRLP (0, 2, 0)}, 11684865Sobrien {"brl.dptk.few.clr", BRL (0, 2, 1)}, 117130561Sobrien {"brl.dptk.clr", BRLP (0, 2, 1)}, 11884865Sobrien {"brl.dpnt.few", BRL (0, 3, 0)}, 119130561Sobrien {"brl.dpnt", BRLP (0, 3, 0)}, 12084865Sobrien {"brl.dpnt.few.clr", BRL (0, 3, 1)}, 121130561Sobrien {"brl.dpnt.clr", BRLP (0, 3, 1)}, 12284865Sobrien {"brl.sptk.many", BRL (1, 0, 0)}, 12384865Sobrien {"brl.sptk.many.clr", BRL (1, 0, 1)}, 12484865Sobrien {"brl.spnt.many", BRL (1, 1, 0)}, 12584865Sobrien {"brl.spnt.many.clr", BRL (1, 1, 1)}, 12684865Sobrien {"brl.dptk.many", BRL (1, 2, 0)}, 12784865Sobrien {"brl.dptk.many.clr", BRL (1, 2, 1)}, 12884865Sobrien {"brl.dpnt.many", BRL (1, 3, 0)}, 12984865Sobrien {"brl.dpnt.many.clr", BRL (1, 3, 1)}, 13084865Sobrien#undef BRL 131130561Sobrien#undef BRLP 132130561Sobrien#define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL 133130561Sobrien#define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL 13484865Sobrien {"brl.call.sptk.few", BRL (0, 0, 0)}, 135130561Sobrien {"brl.call.sptk", BRLP (0, 0, 0)}, 13684865Sobrien {"brl.call.sptk.few.clr", BRL (0, 0, 1)}, 137130561Sobrien {"brl.call.sptk.clr", BRLP (0, 0, 1)}, 13884865Sobrien {"brl.call.spnt.few", BRL (0, 1, 0)}, 139130561Sobrien {"brl.call.spnt", BRLP (0, 1, 0)}, 14084865Sobrien {"brl.call.spnt.few.clr", BRL (0, 1, 1)}, 141130561Sobrien {"brl.call.spnt.clr", BRLP (0, 1, 1)}, 14284865Sobrien {"brl.call.dptk.few", BRL (0, 2, 0)}, 143130561Sobrien {"brl.call.dptk", BRLP (0, 2, 0)}, 14484865Sobrien {"brl.call.dptk.few.clr", BRL (0, 2, 1)}, 145130561Sobrien {"brl.call.dptk.clr", BRLP (0, 2, 1)}, 14684865Sobrien {"brl.call.dpnt.few", BRL (0, 3, 0)}, 147130561Sobrien {"brl.call.dpnt", BRLP (0, 3, 0)}, 14884865Sobrien {"brl.call.dpnt.few.clr", BRL (0, 3, 1)}, 149130561Sobrien {"brl.call.dpnt.clr", BRLP (0, 3, 1)}, 15084865Sobrien {"brl.call.sptk.many", BRL (1, 0, 0)}, 15184865Sobrien {"brl.call.sptk.many.clr", BRL (1, 0, 1)}, 15284865Sobrien {"brl.call.spnt.many", BRL (1, 1, 0)}, 15384865Sobrien {"brl.call.spnt.many.clr", BRL (1, 1, 1)}, 15484865Sobrien {"brl.call.dptk.many", BRL (1, 2, 0)}, 15584865Sobrien {"brl.call.dptk.many.clr", BRL (1, 2, 1)}, 15684865Sobrien {"brl.call.dpnt.many", BRL (1, 3, 0)}, 15784865Sobrien {"brl.call.dpnt.many.clr", BRL (1, 3, 1)}, 15884865Sobrien#undef BRL 159130561Sobrien#undef BRLP 160130561Sobrien {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 16184865Sobrien }; 16284865Sobrien 16384865Sobrien#undef X0 16484865Sobrien#undef X 16584865Sobrien 16684865Sobrien#undef bBtype 16784865Sobrien#undef bD 16884865Sobrien#undef bPa 16984865Sobrien#undef bPr 17084865Sobrien#undef bVc 17184865Sobrien#undef bWha 17284865Sobrien#undef bX3 17384865Sobrien#undef bX6 17484865Sobrien 17584865Sobrien#undef mBtype 17684865Sobrien#undef mD 17784865Sobrien#undef mPa 17884865Sobrien#undef mPr 17984865Sobrien#undef mVc 18084865Sobrien#undef mWha 18184865Sobrien#undef mX3 18284865Sobrien#undef mX6 18384865Sobrien 18484865Sobrien#undef OpX3X6 18584865Sobrien#undef OpVc 18684865Sobrien#undef OpPaWhaD 18784865Sobrien#undef OpBtypePaWhaD 18884865Sobrien#undef OpBtypePaWhaDPr 189