]>
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 <[email protected]> |
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 | ||
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) | |
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 | ||
59 | struct ia64_opcode ia64_opcodes_x[] = | |
60 | { | |
bde78a07 NC |
61 | {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL}, |
62 | {"nop.x", X0, OpX3X6 (0, 0, 0x01), {IMMU62}, 0, 0, NULL}, | |
63 | {"movl", X, OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL}, | |
800eeca4 | 64 | #define BRL(a,b) \ |
bde78a07 NC |
65 | X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL |
66 | {"brl.few", BRL (0, 0)}, | |
67 | {"brl", BRL (0, 0)}, | |
68 | {"brl.few.clr", BRL (0, 1)}, | |
69 | {"brl.clr", BRL (0, 1)}, | |
70 | {"brl.many", BRL (1, 0)}, | |
71 | {"brl.many.clr", BRL (1, 1)}, | |
800eeca4 JW |
72 | #undef BRL |
73 | #define BRL(a,b,c) \ | |
bde78a07 NC |
74 | X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL |
75 | #define BRLP(a,b,c) \ | |
76 | X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL | |
800eeca4 | 77 | {"brl.cond.sptk.few", BRL (0, 0, 0)}, |
bde78a07 | 78 | {"brl.cond.sptk", BRLP (0, 0, 0)}, |
800eeca4 | 79 | {"brl.cond.sptk.few.clr", BRL (0, 0, 1)}, |
bde78a07 | 80 | {"brl.cond.sptk.clr", BRLP (0, 0, 1)}, |
800eeca4 | 81 | {"brl.cond.spnt.few", BRL (0, 1, 0)}, |
bde78a07 | 82 | {"brl.cond.spnt", BRLP (0, 1, 0)}, |
800eeca4 | 83 | {"brl.cond.spnt.few.clr", BRL (0, 1, 1)}, |
bde78a07 | 84 | {"brl.cond.spnt.clr", BRLP (0, 1, 1)}, |
800eeca4 | 85 | {"brl.cond.dptk.few", BRL (0, 2, 0)}, |
bde78a07 | 86 | {"brl.cond.dptk", BRLP (0, 2, 0)}, |
800eeca4 | 87 | {"brl.cond.dptk.few.clr", BRL (0, 2, 1)}, |
bde78a07 | 88 | {"brl.cond.dptk.clr", BRLP (0, 2, 1)}, |
800eeca4 | 89 | {"brl.cond.dpnt.few", BRL (0, 3, 0)}, |
bde78a07 | 90 | {"brl.cond.dpnt", BRLP (0, 3, 0)}, |
800eeca4 | 91 | {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)}, |
bde78a07 | 92 | {"brl.cond.dpnt.clr", BRLP (0, 3, 1)}, |
800eeca4 JW |
93 | {"brl.cond.sptk.many", BRL (1, 0, 0)}, |
94 | {"brl.cond.sptk.many.clr", BRL (1, 0, 1)}, | |
95 | {"brl.cond.spnt.many", BRL (1, 1, 0)}, | |
96 | {"brl.cond.spnt.many.clr", BRL (1, 1, 1)}, | |
97 | {"brl.cond.dptk.many", BRL (1, 2, 0)}, | |
98 | {"brl.cond.dptk.many.clr", BRL (1, 2, 1)}, | |
99 | {"brl.cond.dpnt.many", BRL (1, 3, 0)}, | |
100 | {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)}, | |
101 | {"brl.sptk.few", BRL (0, 0, 0)}, | |
bde78a07 | 102 | {"brl.sptk", BRLP (0, 0, 0)}, |
800eeca4 | 103 | {"brl.sptk.few.clr", BRL (0, 0, 1)}, |
bde78a07 | 104 | {"brl.sptk.clr", BRLP (0, 0, 1)}, |
800eeca4 | 105 | {"brl.spnt.few", BRL (0, 1, 0)}, |
bde78a07 | 106 | {"brl.spnt", BRLP (0, 1, 0)}, |
800eeca4 | 107 | {"brl.spnt.few.clr", BRL (0, 1, 1)}, |
bde78a07 | 108 | {"brl.spnt.clr", BRLP (0, 1, 1)}, |
800eeca4 | 109 | {"brl.dptk.few", BRL (0, 2, 0)}, |
bde78a07 | 110 | {"brl.dptk", BRLP (0, 2, 0)}, |
800eeca4 | 111 | {"brl.dptk.few.clr", BRL (0, 2, 1)}, |
bde78a07 | 112 | {"brl.dptk.clr", BRLP (0, 2, 1)}, |
800eeca4 | 113 | {"brl.dpnt.few", BRL (0, 3, 0)}, |
bde78a07 | 114 | {"brl.dpnt", BRLP (0, 3, 0)}, |
800eeca4 | 115 | {"brl.dpnt.few.clr", BRL (0, 3, 1)}, |
bde78a07 | 116 | {"brl.dpnt.clr", BRLP (0, 3, 1)}, |
800eeca4 JW |
117 | {"brl.sptk.many", BRL (1, 0, 0)}, |
118 | {"brl.sptk.many.clr", BRL (1, 0, 1)}, | |
119 | {"brl.spnt.many", BRL (1, 1, 0)}, | |
120 | {"brl.spnt.many.clr", BRL (1, 1, 1)}, | |
121 | {"brl.dptk.many", BRL (1, 2, 0)}, | |
122 | {"brl.dptk.many.clr", BRL (1, 2, 1)}, | |
123 | {"brl.dpnt.many", BRL (1, 3, 0)}, | |
124 | {"brl.dpnt.many.clr", BRL (1, 3, 1)}, | |
125 | #undef BRL | |
bde78a07 NC |
126 | #undef BRLP |
127 | #define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL | |
128 | #define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL | |
800eeca4 | 129 | {"brl.call.sptk.few", BRL (0, 0, 0)}, |
bde78a07 | 130 | {"brl.call.sptk", BRLP (0, 0, 0)}, |
800eeca4 | 131 | {"brl.call.sptk.few.clr", BRL (0, 0, 1)}, |
bde78a07 | 132 | {"brl.call.sptk.clr", BRLP (0, 0, 1)}, |
800eeca4 | 133 | {"brl.call.spnt.few", BRL (0, 1, 0)}, |
bde78a07 | 134 | {"brl.call.spnt", BRLP (0, 1, 0)}, |
800eeca4 | 135 | {"brl.call.spnt.few.clr", BRL (0, 1, 1)}, |
bde78a07 | 136 | {"brl.call.spnt.clr", BRLP (0, 1, 1)}, |
800eeca4 | 137 | {"brl.call.dptk.few", BRL (0, 2, 0)}, |
bde78a07 | 138 | {"brl.call.dptk", BRLP (0, 2, 0)}, |
800eeca4 | 139 | {"brl.call.dptk.few.clr", BRL (0, 2, 1)}, |
bde78a07 | 140 | {"brl.call.dptk.clr", BRLP (0, 2, 1)}, |
800eeca4 | 141 | {"brl.call.dpnt.few", BRL (0, 3, 0)}, |
bde78a07 | 142 | {"brl.call.dpnt", BRLP (0, 3, 0)}, |
800eeca4 | 143 | {"brl.call.dpnt.few.clr", BRL (0, 3, 1)}, |
bde78a07 | 144 | {"brl.call.dpnt.clr", BRLP (0, 3, 1)}, |
800eeca4 JW |
145 | {"brl.call.sptk.many", BRL (1, 0, 0)}, |
146 | {"brl.call.sptk.many.clr", BRL (1, 0, 1)}, | |
147 | {"brl.call.spnt.many", BRL (1, 1, 0)}, | |
148 | {"brl.call.spnt.many.clr", BRL (1, 1, 1)}, | |
149 | {"brl.call.dptk.many", BRL (1, 2, 0)}, | |
150 | {"brl.call.dptk.many.clr", BRL (1, 2, 1)}, | |
151 | {"brl.call.dpnt.many", BRL (1, 3, 0)}, | |
152 | {"brl.call.dpnt.many.clr", BRL (1, 3, 1)}, | |
153 | #undef BRL | |
bde78a07 NC |
154 | #undef BRLP |
155 | {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} | |
800eeca4 JW |
156 | }; |
157 | ||
158 | #undef X0 | |
159 | #undef X | |
160 | ||
161 | #undef bBtype | |
162 | #undef bD | |
163 | #undef bPa | |
164 | #undef bPr | |
165 | #undef bVc | |
166 | #undef bWha | |
167 | #undef bX3 | |
168 | #undef bX6 | |
169 | ||
170 | #undef mBtype | |
171 | #undef mD | |
172 | #undef mPa | |
173 | #undef mPr | |
174 | #undef mVc | |
175 | #undef mWha | |
176 | #undef mX3 | |
177 | #undef mX6 | |
178 | ||
179 | #undef OpX3X6 | |
180 | #undef OpVc | |
181 | #undef OpPaWhaD | |
182 | #undef OpBtypePaWhaD | |
183 | #undef OpBtypePaWhaDPr |