Commit | Line | Data |
---|---|---|
800eeca4 | 1 | /* ia64-opc-x.c -- IA-64 `X' opcode table. |
bde78a07 | 2 | Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc. |
800eeca4 JW |
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 | |
f4321104 NC |
19 | Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA |
20 | 02110-1301, USA. */ | |
800eeca4 JW |
21 | |
22 | #include "ia64-opc.h" | |
23 | ||
bde78a07 | 24 | /* Identify the specific X-unit type. */ |
800eeca4 JW |
25 | #define X0 IA64_TYPE_X, 0 |
26 | #define X IA64_TYPE_X, 1 | |
27 | ||
bde78a07 | 28 | /* Instruction bit fields: */ |
800eeca4 JW |
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) | |
c10d9d8f | 37 | #define bY(x) (((ia64_insn) ((x) & 0x1)) << 26) |
800eeca4 JW |
38 | |
39 | #define mBtype bBtype (-1) | |
40 | #define mD bD (-1) | |
41 | #define mPa bPa (-1) | |
42 | #define mPr bPr (-1) | |
43 | #define mVc bVc (-1) | |
44 | #define mWha bWha (-1) | |
45 | #define mX3 bX3 (-1) | |
46 | #define mX6 bX6 (-1) | |
c10d9d8f | 47 | #define mY bY (-1) |
800eeca4 JW |
48 | |
49 | #define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ | |
50 | (mOp | mX3 | mX6) | |
c10d9d8f JW |
51 | #define OpX3X6Y(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bY(d)), \ |
52 | (mOp | mX3 | mX6 | mY) | |
800eeca4 JW |
53 | #define OpVc(a,b) (bOp (a) | bVc (b)), (mOp | mVc) |
54 | #define OpPaWhaD(a,b,c,d) \ | |
55 | (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD) | |
56 | #define OpBtypePaWhaD(a,b,c,d,e) \ | |
57 | (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \ | |
58 | (mOp | mBtype | mPa | mWha | mD) | |
59 | #define OpBtypePaWhaDPr(a,b,c,d,e,f) \ | |
60 | (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \ | |
61 | (mOp | mBtype | mPa | mWha | mD | mPr) | |
62 | ||
63 | struct ia64_opcode ia64_opcodes_x[] = | |
64 | { | |
c10d9d8f JW |
65 | {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL}, |
66 | {"nop.x", X0, OpX3X6Y (0, 0, 0x01, 0), {IMMU62}, 0, 0, NULL}, | |
67 | {"hint.x", X0, OpX3X6Y (0, 0, 0x01, 1), {IMMU62}, 0, 0, NULL}, | |
bde78a07 | 68 | {"movl", X, OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL}, |
800eeca4 | 69 | #define BRL(a,b) \ |
bde78a07 NC |
70 | X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL |
71 | {"brl.few", BRL (0, 0)}, | |
72 | {"brl", BRL (0, 0)}, | |
73 | {"brl.few.clr", BRL (0, 1)}, | |
74 | {"brl.clr", BRL (0, 1)}, | |
75 | {"brl.many", BRL (1, 0)}, | |
76 | {"brl.many.clr", BRL (1, 1)}, | |
800eeca4 JW |
77 | #undef BRL |
78 | #define BRL(a,b,c) \ | |
bde78a07 NC |
79 | X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL |
80 | #define BRLP(a,b,c) \ | |
81 | X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL | |
800eeca4 | 82 | {"brl.cond.sptk.few", BRL (0, 0, 0)}, |
bde78a07 | 83 | {"brl.cond.sptk", BRLP (0, 0, 0)}, |
800eeca4 | 84 | {"brl.cond.sptk.few.clr", BRL (0, 0, 1)}, |
bde78a07 | 85 | {"brl.cond.sptk.clr", BRLP (0, 0, 1)}, |
800eeca4 | 86 | {"brl.cond.spnt.few", BRL (0, 1, 0)}, |
bde78a07 | 87 | {"brl.cond.spnt", BRLP (0, 1, 0)}, |
800eeca4 | 88 | {"brl.cond.spnt.few.clr", BRL (0, 1, 1)}, |
bde78a07 | 89 | {"brl.cond.spnt.clr", BRLP (0, 1, 1)}, |
800eeca4 | 90 | {"brl.cond.dptk.few", BRL (0, 2, 0)}, |
bde78a07 | 91 | {"brl.cond.dptk", BRLP (0, 2, 0)}, |
800eeca4 | 92 | {"brl.cond.dptk.few.clr", BRL (0, 2, 1)}, |
bde78a07 | 93 | {"brl.cond.dptk.clr", BRLP (0, 2, 1)}, |
800eeca4 | 94 | {"brl.cond.dpnt.few", BRL (0, 3, 0)}, |
bde78a07 | 95 | {"brl.cond.dpnt", BRLP (0, 3, 0)}, |
800eeca4 | 96 | {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)}, |
bde78a07 | 97 | {"brl.cond.dpnt.clr", BRLP (0, 3, 1)}, |
800eeca4 JW |
98 | {"brl.cond.sptk.many", BRL (1, 0, 0)}, |
99 | {"brl.cond.sptk.many.clr", BRL (1, 0, 1)}, | |
100 | {"brl.cond.spnt.many", BRL (1, 1, 0)}, | |
101 | {"brl.cond.spnt.many.clr", BRL (1, 1, 1)}, | |
102 | {"brl.cond.dptk.many", BRL (1, 2, 0)}, | |
103 | {"brl.cond.dptk.many.clr", BRL (1, 2, 1)}, | |
104 | {"brl.cond.dpnt.many", BRL (1, 3, 0)}, | |
105 | {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)}, | |
106 | {"brl.sptk.few", BRL (0, 0, 0)}, | |
bde78a07 | 107 | {"brl.sptk", BRLP (0, 0, 0)}, |
800eeca4 | 108 | {"brl.sptk.few.clr", BRL (0, 0, 1)}, |
bde78a07 | 109 | {"brl.sptk.clr", BRLP (0, 0, 1)}, |
800eeca4 | 110 | {"brl.spnt.few", BRL (0, 1, 0)}, |
bde78a07 | 111 | {"brl.spnt", BRLP (0, 1, 0)}, |
800eeca4 | 112 | {"brl.spnt.few.clr", BRL (0, 1, 1)}, |
bde78a07 | 113 | {"brl.spnt.clr", BRLP (0, 1, 1)}, |
800eeca4 | 114 | {"brl.dptk.few", BRL (0, 2, 0)}, |
bde78a07 | 115 | {"brl.dptk", BRLP (0, 2, 0)}, |
800eeca4 | 116 | {"brl.dptk.few.clr", BRL (0, 2, 1)}, |
bde78a07 | 117 | {"brl.dptk.clr", BRLP (0, 2, 1)}, |
800eeca4 | 118 | {"brl.dpnt.few", BRL (0, 3, 0)}, |
bde78a07 | 119 | {"brl.dpnt", BRLP (0, 3, 0)}, |
800eeca4 | 120 | {"brl.dpnt.few.clr", BRL (0, 3, 1)}, |
bde78a07 | 121 | {"brl.dpnt.clr", BRLP (0, 3, 1)}, |
800eeca4 JW |
122 | {"brl.sptk.many", BRL (1, 0, 0)}, |
123 | {"brl.sptk.many.clr", BRL (1, 0, 1)}, | |
124 | {"brl.spnt.many", BRL (1, 1, 0)}, | |
125 | {"brl.spnt.many.clr", BRL (1, 1, 1)}, | |
126 | {"brl.dptk.many", BRL (1, 2, 0)}, | |
127 | {"brl.dptk.many.clr", BRL (1, 2, 1)}, | |
128 | {"brl.dpnt.many", BRL (1, 3, 0)}, | |
129 | {"brl.dpnt.many.clr", BRL (1, 3, 1)}, | |
130 | #undef BRL | |
bde78a07 NC |
131 | #undef BRLP |
132 | #define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL | |
133 | #define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL | |
800eeca4 | 134 | {"brl.call.sptk.few", BRL (0, 0, 0)}, |
bde78a07 | 135 | {"brl.call.sptk", BRLP (0, 0, 0)}, |
800eeca4 | 136 | {"brl.call.sptk.few.clr", BRL (0, 0, 1)}, |
bde78a07 | 137 | {"brl.call.sptk.clr", BRLP (0, 0, 1)}, |
800eeca4 | 138 | {"brl.call.spnt.few", BRL (0, 1, 0)}, |
bde78a07 | 139 | {"brl.call.spnt", BRLP (0, 1, 0)}, |
800eeca4 | 140 | {"brl.call.spnt.few.clr", BRL (0, 1, 1)}, |
bde78a07 | 141 | {"brl.call.spnt.clr", BRLP (0, 1, 1)}, |
800eeca4 | 142 | {"brl.call.dptk.few", BRL (0, 2, 0)}, |
bde78a07 | 143 | {"brl.call.dptk", BRLP (0, 2, 0)}, |
800eeca4 | 144 | {"brl.call.dptk.few.clr", BRL (0, 2, 1)}, |
bde78a07 | 145 | {"brl.call.dptk.clr", BRLP (0, 2, 1)}, |
800eeca4 | 146 | {"brl.call.dpnt.few", BRL (0, 3, 0)}, |
bde78a07 | 147 | {"brl.call.dpnt", BRLP (0, 3, 0)}, |
800eeca4 | 148 | {"brl.call.dpnt.few.clr", BRL (0, 3, 1)}, |
bde78a07 | 149 | {"brl.call.dpnt.clr", BRLP (0, 3, 1)}, |
800eeca4 JW |
150 | {"brl.call.sptk.many", BRL (1, 0, 0)}, |
151 | {"brl.call.sptk.many.clr", BRL (1, 0, 1)}, | |
152 | {"brl.call.spnt.many", BRL (1, 1, 0)}, | |
153 | {"brl.call.spnt.many.clr", BRL (1, 1, 1)}, | |
154 | {"brl.call.dptk.many", BRL (1, 2, 0)}, | |
155 | {"brl.call.dptk.many.clr", BRL (1, 2, 1)}, | |
156 | {"brl.call.dpnt.many", BRL (1, 3, 0)}, | |
157 | {"brl.call.dpnt.many.clr", BRL (1, 3, 1)}, | |
158 | #undef BRL | |
bde78a07 NC |
159 | #undef BRLP |
160 | {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} | |
800eeca4 JW |
161 | }; |
162 | ||
163 | #undef X0 | |
164 | #undef X | |
165 | ||
166 | #undef bBtype | |
167 | #undef bD | |
168 | #undef bPa | |
169 | #undef bPr | |
170 | #undef bVc | |
171 | #undef bWha | |
172 | #undef bX3 | |
173 | #undef bX6 | |
174 | ||
175 | #undef mBtype | |
176 | #undef mD | |
177 | #undef mPa | |
178 | #undef mPr | |
179 | #undef mVc | |
180 | #undef mWha | |
181 | #undef mX3 | |
182 | #undef mX6 | |
183 | ||
184 | #undef OpX3X6 | |
185 | #undef OpVc | |
186 | #undef OpPaWhaD | |
187 | #undef OpBtypePaWhaD | |
188 | #undef OpBtypePaWhaDPr |