1 /* ia64-opc-x.c -- IA-64 `X' opcode table.
2 Copyright 1998, 1999, 2000, 2002, 2007 Free Software Foundation, Inc.
3 Contributed by Timothy Wall <twall@cygnus.com>
5 This file is part of the GNU opcodes library.
7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
12 It is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
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, 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
24 /* Identify the specific X-unit type. */
25 #define X0 IA64_TYPE_X, 0
26 #define X IA64_TYPE_X, 1
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 #define bY(x) (((ia64_insn) ((x) & 0x1)) << 26)
39 #define mBtype bBtype (-1)
44 #define mWha bWha (-1)
49 #define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \
51 #define OpX3X6Y(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bY(d)), \
52 (mOp | mX3 | mX6 | mY)
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)
63 struct ia64_opcode ia64_opcodes_x[] =
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},
68 {"movl", X, OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL},
70 X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL
71 {"brl.few", 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)},
79 X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL
81 X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL
82 {"brl.cond.sptk.few", BRL (0, 0, 0)},
83 {"brl.cond.sptk", BRLP (0, 0, 0)},
84 {"brl.cond.sptk.few.clr", BRL (0, 0, 1)},
85 {"brl.cond.sptk.clr", BRLP (0, 0, 1)},
86 {"brl.cond.spnt.few", BRL (0, 1, 0)},
87 {"brl.cond.spnt", BRLP (0, 1, 0)},
88 {"brl.cond.spnt.few.clr", BRL (0, 1, 1)},
89 {"brl.cond.spnt.clr", BRLP (0, 1, 1)},
90 {"brl.cond.dptk.few", BRL (0, 2, 0)},
91 {"brl.cond.dptk", BRLP (0, 2, 0)},
92 {"brl.cond.dptk.few.clr", BRL (0, 2, 1)},
93 {"brl.cond.dptk.clr", BRLP (0, 2, 1)},
94 {"brl.cond.dpnt.few", BRL (0, 3, 0)},
95 {"brl.cond.dpnt", BRLP (0, 3, 0)},
96 {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)},
97 {"brl.cond.dpnt.clr", BRLP (0, 3, 1)},
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)},
107 {"brl.sptk", BRLP (0, 0, 0)},
108 {"brl.sptk.few.clr", BRL (0, 0, 1)},
109 {"brl.sptk.clr", BRLP (0, 0, 1)},
110 {"brl.spnt.few", BRL (0, 1, 0)},
111 {"brl.spnt", BRLP (0, 1, 0)},
112 {"brl.spnt.few.clr", BRL (0, 1, 1)},
113 {"brl.spnt.clr", BRLP (0, 1, 1)},
114 {"brl.dptk.few", BRL (0, 2, 0)},
115 {"brl.dptk", BRLP (0, 2, 0)},
116 {"brl.dptk.few.clr", BRL (0, 2, 1)},
117 {"brl.dptk.clr", BRLP (0, 2, 1)},
118 {"brl.dpnt.few", BRL (0, 3, 0)},
119 {"brl.dpnt", BRLP (0, 3, 0)},
120 {"brl.dpnt.few.clr", BRL (0, 3, 1)},
121 {"brl.dpnt.clr", BRLP (0, 3, 1)},
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)},
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
134 {"brl.call.sptk.few", BRL (0, 0, 0)},
135 {"brl.call.sptk", BRLP (0, 0, 0)},
136 {"brl.call.sptk.few.clr", BRL (0, 0, 1)},
137 {"brl.call.sptk.clr", BRLP (0, 0, 1)},
138 {"brl.call.spnt.few", BRL (0, 1, 0)},
139 {"brl.call.spnt", BRLP (0, 1, 0)},
140 {"brl.call.spnt.few.clr", BRL (0, 1, 1)},
141 {"brl.call.spnt.clr", BRLP (0, 1, 1)},
142 {"brl.call.dptk.few", BRL (0, 2, 0)},
143 {"brl.call.dptk", BRLP (0, 2, 0)},
144 {"brl.call.dptk.few.clr", BRL (0, 2, 1)},
145 {"brl.call.dptk.clr", BRLP (0, 2, 1)},
146 {"brl.call.dpnt.few", BRL (0, 3, 0)},
147 {"brl.call.dpnt", BRLP (0, 3, 0)},
148 {"brl.call.dpnt.few.clr", BRL (0, 3, 1)},
149 {"brl.call.dpnt.clr", BRLP (0, 3, 1)},
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)},
160 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
188 #undef OpBtypePaWhaDPr