ia64-opc-x.c revision 84865
1/* ia64-opc-x.c -- IA-64 `X' opcode table. 2 Copyright 1998, 1999, 2000 Free Software Foundation, Inc. 3 Contributed by Timothy Wall <twall@cygnus.com> 4 5 This file is part of GDB, GAS, and the GNU binutils. 6 7 GDB, GAS, and the GNU binutils are free software; you can redistribute 8 them and/or modify them under the terms of the GNU General Public 9 License as published by the Free Software Foundation; either version 10 2, or (at your option) any later version. 11 12 GDB, GAS, and the GNU binutils are distributed in the hope that they 13 will be useful, but WITHOUT ANY WARRANTY; without even the implied 14 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 15 the GNU General Public 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, 59 Temple Place - Suite 330, Boston, MA 20 02111-1307, USA. */ 21 22#include "ia64-opc.h" 23 24/* identify the specific X-unit type */ 25#define X0 IA64_TYPE_X, 0 26#define X IA64_TYPE_X, 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 bPa(x) (((ia64_insn) ((x) & 0x1)) << 12) 32#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0) 33#define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20) 34#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33) 35#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33) 36#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27) 37 38#define mBtype bBtype (-1) 39#define mD bD (-1) 40#define mPa bPa (-1) 41#define mPr bPr (-1) 42#define mVc bVc (-1) 43#define mWha bWha (-1) 44#define mX3 bX3 (-1) 45#define mX6 bX6 (-1) 46 47#define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ 48 (mOp | mX3 | mX6) 49#define OpVc(a,b) (bOp (a) | bVc (b)), (mOp | mVc) 50#define OpPaWhaD(a,b,c,d) \ 51 (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD) 52#define OpBtypePaWhaD(a,b,c,d,e) \ 53 (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \ 54 (mOp | mBtype | mPa | mWha | mD) 55#define OpBtypePaWhaDPr(a,b,c,d,e,f) \ 56 (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \ 57 (mOp | mBtype | mPa | mWha | mD | mPr) 58 59struct ia64_opcode ia64_opcodes_x[] = 60 { 61 {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}}, 62 {"nop.x", X0, OpX3X6 (0, 0, 0x01), {IMMU62}}, 63 {"movl", X, OpVc (6, 0), {R1, IMMU64}}, 64#define BRL(a,b) \ 65 X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, 0 66 {"brl.few", BRL (0, 0) | PSEUDO}, 67 {"brl", BRL (0, 0) | PSEUDO}, 68 {"brl.few.clr", BRL (0, 1) | PSEUDO}, 69 {"brl.clr", BRL (0, 1) | PSEUDO}, 70 {"brl.many", BRL (1, 0) | PSEUDO}, 71 {"brl.many.clr", BRL (1, 1) | PSEUDO}, 72#undef BRL 73#define BRL(a,b,c) \ 74 X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0 75 {"brl.cond.sptk.few", BRL (0, 0, 0)}, 76 {"brl.cond.sptk", BRL (0, 0, 0) | PSEUDO}, 77 {"brl.cond.sptk.few.clr", BRL (0, 0, 1)}, 78 {"brl.cond.sptk.clr", BRL (0, 0, 1) | PSEUDO}, 79 {"brl.cond.spnt.few", BRL (0, 1, 0)}, 80 {"brl.cond.spnt", BRL (0, 1, 0) | PSEUDO}, 81 {"brl.cond.spnt.few.clr", BRL (0, 1, 1)}, 82 {"brl.cond.spnt.clr", BRL (0, 1, 1) | PSEUDO}, 83 {"brl.cond.dptk.few", BRL (0, 2, 0)}, 84 {"brl.cond.dptk", BRL (0, 2, 0) | PSEUDO}, 85 {"brl.cond.dptk.few.clr", BRL (0, 2, 1)}, 86 {"brl.cond.dptk.clr", BRL (0, 2, 1) | PSEUDO}, 87 {"brl.cond.dpnt.few", BRL (0, 3, 0)}, 88 {"brl.cond.dpnt", BRL (0, 3, 0) | PSEUDO}, 89 {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)}, 90 {"brl.cond.dpnt.clr", BRL (0, 3, 1) | PSEUDO}, 91 {"brl.cond.sptk.many", BRL (1, 0, 0)}, 92 {"brl.cond.sptk.many.clr", BRL (1, 0, 1)}, 93 {"brl.cond.spnt.many", BRL (1, 1, 0)}, 94 {"brl.cond.spnt.many.clr", BRL (1, 1, 1)}, 95 {"brl.cond.dptk.many", BRL (1, 2, 0)}, 96 {"brl.cond.dptk.many.clr", BRL (1, 2, 1)}, 97 {"brl.cond.dpnt.many", BRL (1, 3, 0)}, 98 {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)}, 99 {"brl.sptk.few", BRL (0, 0, 0)}, 100 {"brl.sptk", BRL (0, 0, 0) | PSEUDO}, 101 {"brl.sptk.few.clr", BRL (0, 0, 1)}, 102 {"brl.sptk.clr", BRL (0, 0, 1) | PSEUDO}, 103 {"brl.spnt.few", BRL (0, 1, 0)}, 104 {"brl.spnt", BRL (0, 1, 0) | PSEUDO}, 105 {"brl.spnt.few.clr", BRL (0, 1, 1)}, 106 {"brl.spnt.clr", BRL (0, 1, 1) | PSEUDO}, 107 {"brl.dptk.few", BRL (0, 2, 0)}, 108 {"brl.dptk", BRL (0, 2, 0) | PSEUDO}, 109 {"brl.dptk.few.clr", BRL (0, 2, 1)}, 110 {"brl.dptk.clr", BRL (0, 2, 1) | PSEUDO}, 111 {"brl.dpnt.few", BRL (0, 3, 0)}, 112 {"brl.dpnt", BRL (0, 3, 0) | PSEUDO}, 113 {"brl.dpnt.few.clr", BRL (0, 3, 1)}, 114 {"brl.dpnt.clr", BRL (0, 3, 1) | PSEUDO}, 115 {"brl.sptk.many", BRL (1, 0, 0)}, 116 {"brl.sptk.many.clr", BRL (1, 0, 1)}, 117 {"brl.spnt.many", BRL (1, 1, 0)}, 118 {"brl.spnt.many.clr", BRL (1, 1, 1)}, 119 {"brl.dptk.many", BRL (1, 2, 0)}, 120 {"brl.dptk.many.clr", BRL (1, 2, 1)}, 121 {"brl.dpnt.many", BRL (1, 3, 0)}, 122 {"brl.dpnt.many.clr", BRL (1, 3, 1)}, 123#undef BRL 124#define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0 125 {"brl.call.sptk.few", BRL (0, 0, 0)}, 126 {"brl.call.sptk", BRL (0, 0, 0) | PSEUDO}, 127 {"brl.call.sptk.few.clr", BRL (0, 0, 1)}, 128 {"brl.call.sptk.clr", BRL (0, 0, 1) | PSEUDO}, 129 {"brl.call.spnt.few", BRL (0, 1, 0)}, 130 {"brl.call.spnt", BRL (0, 1, 0) | PSEUDO}, 131 {"brl.call.spnt.few.clr", BRL (0, 1, 1)}, 132 {"brl.call.spnt.clr", BRL (0, 1, 1) | PSEUDO}, 133 {"brl.call.dptk.few", BRL (0, 2, 0)}, 134 {"brl.call.dptk", BRL (0, 2, 0) | PSEUDO}, 135 {"brl.call.dptk.few.clr", BRL (0, 2, 1)}, 136 {"brl.call.dptk.clr", BRL (0, 2, 1) | PSEUDO}, 137 {"brl.call.dpnt.few", BRL (0, 3, 0)}, 138 {"brl.call.dpnt", BRL (0, 3, 0) | PSEUDO}, 139 {"brl.call.dpnt.few.clr", BRL (0, 3, 1)}, 140 {"brl.call.dpnt.clr", BRL (0, 3, 1) | PSEUDO}, 141 {"brl.call.sptk.many", BRL (1, 0, 0)}, 142 {"brl.call.sptk.many.clr", BRL (1, 0, 1)}, 143 {"brl.call.spnt.many", BRL (1, 1, 0)}, 144 {"brl.call.spnt.many.clr", BRL (1, 1, 1)}, 145 {"brl.call.dptk.many", BRL (1, 2, 0)}, 146 {"brl.call.dptk.many.clr", BRL (1, 2, 1)}, 147 {"brl.call.dpnt.many", BRL (1, 3, 0)}, 148 {"brl.call.dpnt.many.clr", BRL (1, 3, 1)}, 149#undef BRL 150 {0} 151 }; 152 153#undef X0 154#undef X 155 156#undef bBtype 157#undef bD 158#undef bPa 159#undef bPr 160#undef bVc 161#undef bWha 162#undef bX3 163#undef bX6 164 165#undef mBtype 166#undef mD 167#undef mPa 168#undef mPr 169#undef mVc 170#undef mWha 171#undef mX3 172#undef mX6 173 174#undef OpX3X6 175#undef OpVc 176#undef OpPaWhaD 177#undef OpBtypePaWhaD 178#undef OpBtypePaWhaDPr 179