15f210c2aSfgsch /* ia64-opc-x.c -- IA-64 `X' opcode table. 2*d2201f2fSdrahn Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc. 35f210c2aSfgsch Contributed by Timothy Wall <twall@cygnus.com> 45f210c2aSfgsch 55f210c2aSfgsch This file is part of GDB, GAS, and the GNU binutils. 65f210c2aSfgsch 75f210c2aSfgsch GDB, GAS, and the GNU binutils are free software; you can redistribute 85f210c2aSfgsch them and/or modify them under the terms of the GNU General Public 95f210c2aSfgsch License as published by the Free Software Foundation; either version 105f210c2aSfgsch 2, or (at your option) any later version. 115f210c2aSfgsch 125f210c2aSfgsch GDB, GAS, and the GNU binutils are distributed in the hope that they 135f210c2aSfgsch will be useful, but WITHOUT ANY WARRANTY; without even the implied 145f210c2aSfgsch warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 155f210c2aSfgsch the GNU General Public License for more details. 165f210c2aSfgsch 175f210c2aSfgsch You should have received a copy of the GNU General Public License 185f210c2aSfgsch along with this file; see the file COPYING. If not, write to the 195f210c2aSfgsch Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 205f210c2aSfgsch 02111-1307, USA. */ 215f210c2aSfgsch 225f210c2aSfgsch #include "ia64-opc.h" 235f210c2aSfgsch 24*d2201f2fSdrahn /* Identify the specific X-unit type. */ 255f210c2aSfgsch #define X0 IA64_TYPE_X, 0 265f210c2aSfgsch #define X IA64_TYPE_X, 1 275f210c2aSfgsch 28*d2201f2fSdrahn /* Instruction bit fields: */ 295f210c2aSfgsch #define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6) 305f210c2aSfgsch #define bD(x) (((ia64_insn) ((x) & 0x1)) << 35) 315f210c2aSfgsch #define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12) 325f210c2aSfgsch #define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0) 335f210c2aSfgsch #define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20) 345f210c2aSfgsch #define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33) 355f210c2aSfgsch #define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33) 365f210c2aSfgsch #define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27) 37*d2201f2fSdrahn #define bY(x) (((ia64_insn) ((x) & 0x1)) << 26) 385f210c2aSfgsch 395f210c2aSfgsch #define mBtype bBtype (-1) 405f210c2aSfgsch #define mD bD (-1) 415f210c2aSfgsch #define mPa bPa (-1) 425f210c2aSfgsch #define mPr bPr (-1) 435f210c2aSfgsch #define mVc bVc (-1) 445f210c2aSfgsch #define mWha bWha (-1) 455f210c2aSfgsch #define mX3 bX3 (-1) 465f210c2aSfgsch #define mX6 bX6 (-1) 47*d2201f2fSdrahn #define mY bY (-1) 485f210c2aSfgsch 495f210c2aSfgsch #define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ 505f210c2aSfgsch (mOp | mX3 | mX6) 51*d2201f2fSdrahn #define OpX3X6Y(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bY(d)), \ 52*d2201f2fSdrahn (mOp | mX3 | mX6 | mY) 535f210c2aSfgsch #define OpVc(a,b) (bOp (a) | bVc (b)), (mOp | mVc) 545f210c2aSfgsch #define OpPaWhaD(a,b,c,d) \ 555f210c2aSfgsch (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD) 565f210c2aSfgsch #define OpBtypePaWhaD(a,b,c,d,e) \ 575f210c2aSfgsch (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \ 585f210c2aSfgsch (mOp | mBtype | mPa | mWha | mD) 595f210c2aSfgsch #define OpBtypePaWhaDPr(a,b,c,d,e,f) \ 605f210c2aSfgsch (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \ 615f210c2aSfgsch (mOp | mBtype | mPa | mWha | mD | mPr) 625f210c2aSfgsch 635f210c2aSfgsch struct ia64_opcode ia64_opcodes_x[] = 645f210c2aSfgsch { 65*d2201f2fSdrahn {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL}, 66*d2201f2fSdrahn {"nop.x", X0, OpX3X6Y (0, 0, 0x01, 0), {IMMU62}, 0, 0, NULL}, 67*d2201f2fSdrahn {"hint.x", X0, OpX3X6Y (0, 0, 0x01, 1), {IMMU62}, 0, 0, NULL}, 68*d2201f2fSdrahn {"movl", X, OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL}, 695f210c2aSfgsch #define BRL(a,b) \ 70*d2201f2fSdrahn X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL 71*d2201f2fSdrahn {"brl.few", BRL (0, 0)}, 72*d2201f2fSdrahn {"brl", BRL (0, 0)}, 73*d2201f2fSdrahn {"brl.few.clr", BRL (0, 1)}, 74*d2201f2fSdrahn {"brl.clr", BRL (0, 1)}, 75*d2201f2fSdrahn {"brl.many", BRL (1, 0)}, 76*d2201f2fSdrahn {"brl.many.clr", BRL (1, 1)}, 775f210c2aSfgsch #undef BRL 785f210c2aSfgsch #define BRL(a,b,c) \ 79*d2201f2fSdrahn X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL 80*d2201f2fSdrahn #define BRLP(a,b,c) \ 81*d2201f2fSdrahn X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL 825f210c2aSfgsch {"brl.cond.sptk.few", BRL (0, 0, 0)}, 83*d2201f2fSdrahn {"brl.cond.sptk", BRLP (0, 0, 0)}, 845f210c2aSfgsch {"brl.cond.sptk.few.clr", BRL (0, 0, 1)}, 85*d2201f2fSdrahn {"brl.cond.sptk.clr", BRLP (0, 0, 1)}, 865f210c2aSfgsch {"brl.cond.spnt.few", BRL (0, 1, 0)}, 87*d2201f2fSdrahn {"brl.cond.spnt", BRLP (0, 1, 0)}, 885f210c2aSfgsch {"brl.cond.spnt.few.clr", BRL (0, 1, 1)}, 89*d2201f2fSdrahn {"brl.cond.spnt.clr", BRLP (0, 1, 1)}, 905f210c2aSfgsch {"brl.cond.dptk.few", BRL (0, 2, 0)}, 91*d2201f2fSdrahn {"brl.cond.dptk", BRLP (0, 2, 0)}, 925f210c2aSfgsch {"brl.cond.dptk.few.clr", BRL (0, 2, 1)}, 93*d2201f2fSdrahn {"brl.cond.dptk.clr", BRLP (0, 2, 1)}, 945f210c2aSfgsch {"brl.cond.dpnt.few", BRL (0, 3, 0)}, 95*d2201f2fSdrahn {"brl.cond.dpnt", BRLP (0, 3, 0)}, 965f210c2aSfgsch {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)}, 97*d2201f2fSdrahn {"brl.cond.dpnt.clr", BRLP (0, 3, 1)}, 985f210c2aSfgsch {"brl.cond.sptk.many", BRL (1, 0, 0)}, 995f210c2aSfgsch {"brl.cond.sptk.many.clr", BRL (1, 0, 1)}, 1005f210c2aSfgsch {"brl.cond.spnt.many", BRL (1, 1, 0)}, 1015f210c2aSfgsch {"brl.cond.spnt.many.clr", BRL (1, 1, 1)}, 1025f210c2aSfgsch {"brl.cond.dptk.many", BRL (1, 2, 0)}, 1035f210c2aSfgsch {"brl.cond.dptk.many.clr", BRL (1, 2, 1)}, 1045f210c2aSfgsch {"brl.cond.dpnt.many", BRL (1, 3, 0)}, 1055f210c2aSfgsch {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)}, 1065f210c2aSfgsch {"brl.sptk.few", BRL (0, 0, 0)}, 107*d2201f2fSdrahn {"brl.sptk", BRLP (0, 0, 0)}, 1085f210c2aSfgsch {"brl.sptk.few.clr", BRL (0, 0, 1)}, 109*d2201f2fSdrahn {"brl.sptk.clr", BRLP (0, 0, 1)}, 1105f210c2aSfgsch {"brl.spnt.few", BRL (0, 1, 0)}, 111*d2201f2fSdrahn {"brl.spnt", BRLP (0, 1, 0)}, 1125f210c2aSfgsch {"brl.spnt.few.clr", BRL (0, 1, 1)}, 113*d2201f2fSdrahn {"brl.spnt.clr", BRLP (0, 1, 1)}, 1145f210c2aSfgsch {"brl.dptk.few", BRL (0, 2, 0)}, 115*d2201f2fSdrahn {"brl.dptk", BRLP (0, 2, 0)}, 1165f210c2aSfgsch {"brl.dptk.few.clr", BRL (0, 2, 1)}, 117*d2201f2fSdrahn {"brl.dptk.clr", BRLP (0, 2, 1)}, 1185f210c2aSfgsch {"brl.dpnt.few", BRL (0, 3, 0)}, 119*d2201f2fSdrahn {"brl.dpnt", BRLP (0, 3, 0)}, 1205f210c2aSfgsch {"brl.dpnt.few.clr", BRL (0, 3, 1)}, 121*d2201f2fSdrahn {"brl.dpnt.clr", BRLP (0, 3, 1)}, 1225f210c2aSfgsch {"brl.sptk.many", BRL (1, 0, 0)}, 1235f210c2aSfgsch {"brl.sptk.many.clr", BRL (1, 0, 1)}, 1245f210c2aSfgsch {"brl.spnt.many", BRL (1, 1, 0)}, 1255f210c2aSfgsch {"brl.spnt.many.clr", BRL (1, 1, 1)}, 1265f210c2aSfgsch {"brl.dptk.many", BRL (1, 2, 0)}, 1275f210c2aSfgsch {"brl.dptk.many.clr", BRL (1, 2, 1)}, 1285f210c2aSfgsch {"brl.dpnt.many", BRL (1, 3, 0)}, 1295f210c2aSfgsch {"brl.dpnt.many.clr", BRL (1, 3, 1)}, 1305f210c2aSfgsch #undef BRL 131*d2201f2fSdrahn #undef BRLP 132*d2201f2fSdrahn #define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL 133*d2201f2fSdrahn #define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL 1345f210c2aSfgsch {"brl.call.sptk.few", BRL (0, 0, 0)}, 135*d2201f2fSdrahn {"brl.call.sptk", BRLP (0, 0, 0)}, 1365f210c2aSfgsch {"brl.call.sptk.few.clr", BRL (0, 0, 1)}, 137*d2201f2fSdrahn {"brl.call.sptk.clr", BRLP (0, 0, 1)}, 1385f210c2aSfgsch {"brl.call.spnt.few", BRL (0, 1, 0)}, 139*d2201f2fSdrahn {"brl.call.spnt", BRLP (0, 1, 0)}, 1405f210c2aSfgsch {"brl.call.spnt.few.clr", BRL (0, 1, 1)}, 141*d2201f2fSdrahn {"brl.call.spnt.clr", BRLP (0, 1, 1)}, 1425f210c2aSfgsch {"brl.call.dptk.few", BRL (0, 2, 0)}, 143*d2201f2fSdrahn {"brl.call.dptk", BRLP (0, 2, 0)}, 1445f210c2aSfgsch {"brl.call.dptk.few.clr", BRL (0, 2, 1)}, 145*d2201f2fSdrahn {"brl.call.dptk.clr", BRLP (0, 2, 1)}, 1465f210c2aSfgsch {"brl.call.dpnt.few", BRL (0, 3, 0)}, 147*d2201f2fSdrahn {"brl.call.dpnt", BRLP (0, 3, 0)}, 1485f210c2aSfgsch {"brl.call.dpnt.few.clr", BRL (0, 3, 1)}, 149*d2201f2fSdrahn {"brl.call.dpnt.clr", BRLP (0, 3, 1)}, 1505f210c2aSfgsch {"brl.call.sptk.many", BRL (1, 0, 0)}, 1515f210c2aSfgsch {"brl.call.sptk.many.clr", BRL (1, 0, 1)}, 1525f210c2aSfgsch {"brl.call.spnt.many", BRL (1, 1, 0)}, 1535f210c2aSfgsch {"brl.call.spnt.many.clr", BRL (1, 1, 1)}, 1545f210c2aSfgsch {"brl.call.dptk.many", BRL (1, 2, 0)}, 1555f210c2aSfgsch {"brl.call.dptk.many.clr", BRL (1, 2, 1)}, 1565f210c2aSfgsch {"brl.call.dpnt.many", BRL (1, 3, 0)}, 1575f210c2aSfgsch {"brl.call.dpnt.many.clr", BRL (1, 3, 1)}, 1585f210c2aSfgsch #undef BRL 159*d2201f2fSdrahn #undef BRLP 160*d2201f2fSdrahn {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 1615f210c2aSfgsch }; 1625f210c2aSfgsch 1635f210c2aSfgsch #undef X0 1645f210c2aSfgsch #undef X 1655f210c2aSfgsch 1665f210c2aSfgsch #undef bBtype 1675f210c2aSfgsch #undef bD 1685f210c2aSfgsch #undef bPa 1695f210c2aSfgsch #undef bPr 1705f210c2aSfgsch #undef bVc 1715f210c2aSfgsch #undef bWha 1725f210c2aSfgsch #undef bX3 1735f210c2aSfgsch #undef bX6 1745f210c2aSfgsch 1755f210c2aSfgsch #undef mBtype 1765f210c2aSfgsch #undef mD 1775f210c2aSfgsch #undef mPa 1785f210c2aSfgsch #undef mPr 1795f210c2aSfgsch #undef mVc 1805f210c2aSfgsch #undef mWha 1815f210c2aSfgsch #undef mX3 1825f210c2aSfgsch #undef mX6 1835f210c2aSfgsch 1845f210c2aSfgsch #undef OpX3X6 1855f210c2aSfgsch #undef OpVc 1865f210c2aSfgsch #undef OpPaWhaD 1875f210c2aSfgsch #undef OpBtypePaWhaD 1885f210c2aSfgsch #undef OpBtypePaWhaDPr 189