ia64-opc-b.c revision 1.1.1.8 1 1.1 christos /* ia64-opc-b.c -- IA-64 `B' opcode table.
2 1.1.1.8 christos Copyright (C) 1998-2024 Free Software Foundation, Inc.
3 1.1 christos Contributed by David Mosberger-Tang <davidm (at) hpl.hp.com>
4 1.1 christos
5 1.1 christos This file is part of the GNU opcodes library.
6 1.1 christos
7 1.1 christos This library is free software; you can redistribute it and/or modify
8 1.1 christos it under the terms of the GNU General Public License as published by
9 1.1 christos the Free Software Foundation; either version 3, or (at your option)
10 1.1 christos any later version.
11 1.1 christos
12 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT
13 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 1.1 christos License for more details.
16 1.1 christos
17 1.1 christos You should have received a copy of the GNU General Public License
18 1.1 christos along with this file; see the file COPYING. If not, write to the
19 1.1 christos Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20 1.1 christos MA 02110-1301, USA. */
21 1.1 christos
22 1.1 christos #include "ia64-opc.h"
23 1.1 christos
24 1.1 christos #define B0 IA64_TYPE_B, 0
25 1.1 christos #define B IA64_TYPE_B, 1
26 1.1 christos
27 1.1 christos /* instruction bit fields: */
28 1.1 christos #define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6)
29 1.1 christos #define bD(x) (((ia64_insn) ((x) & 0x1)) << 35)
30 1.1 christos #define bIh(x) (((ia64_insn) ((x) & 0x1)) << 35)
31 1.1 christos #define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12)
32 1.1 christos #define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0)
33 1.1 christos #define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33)
34 1.1 christos #define bWhb(x) (((ia64_insn) ((x) & 0x3)) << 3)
35 1.1 christos #define bWhc(x) (((ia64_insn) ((x) & 0x7)) << 32)
36 1.1 christos #define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
37 1.1 christos
38 1.1 christos #define mBtype bBtype (-1)
39 1.1 christos #define mD bD (-1)
40 1.1 christos #define mIh bIh (-1)
41 1.1 christos #define mPa bPa (-1)
42 1.1 christos #define mPr bPr (-1)
43 1.1 christos #define mWha bWha (-1)
44 1.1 christos #define mWhb bWhb (-1)
45 1.1 christos #define mWhc bWhc (-1)
46 1.1 christos #define mX6 bX6 (-1)
47 1.1 christos
48 1.1 christos #define OpX6(a,b) (bOp (a) | bX6 (b)), (mOp | mX6)
49 1.1 christos #define OpPaWhaD(a,b,c,d) \
50 1.1 christos (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
51 1.1 christos #define OpPaWhcD(a,b,c,d) \
52 1.1 christos (bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD)
53 1.1 christos #define OpBtypePaWhaD(a,b,c,d,e) \
54 1.1 christos (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
55 1.1 christos (mOp | mBtype | mPa | mWha | mD)
56 1.1 christos #define OpBtypePaWhaDPr(a,b,c,d,e,f) \
57 1.1 christos (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
58 1.1 christos (mOp | mBtype | mPa | mWha | mD | mPr)
59 1.1 christos #define OpX6BtypePaWhaD(a,b,c,d,e,f) \
60 1.1 christos (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
61 1.1 christos (mOp | mX6 | mBtype | mPa | mWha | mD)
62 1.1 christos #define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
63 1.1 christos (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
64 1.1 christos (mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
65 1.1 christos #define OpIhWhb(a,b,c) \
66 1.1 christos (bOp (a) | bIh (b) | bWhb (c)), \
67 1.1 christos (mOp | mIh | mWhb)
68 1.1 christos #define OpX6IhWhb(a,b,c,d) \
69 1.1 christos (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
70 1.1 christos (mOp | mX6 | mIh | mWhb)
71 1.1 christos
72 1.1 christos /* Used to initialise unused fields in ia64_opcode struct,
73 1.1 christos in order to stop gcc from complaining. */
74 1.1 christos #define EMPTY 0,0,NULL
75 1.1 christos
76 1.1 christos struct ia64_opcode ia64_opcodes_b[] =
77 1.1 christos {
78 1.1 christos /* B-type instruction encodings (sorted according to major opcode) */
79 1.1 christos
80 1.1 christos #define BR(a,b) \
81 1.1 christos B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
82 1.1 christos {"br.few", BR (0, 0)},
83 1.1 christos {"br", BR (0, 0)},
84 1.1 christos {"br.few.clr", BR (0, 1)},
85 1.1 christos {"br.clr", BR (0, 1)},
86 1.1 christos {"br.many", BR (1, 0)},
87 1.1 christos {"br.many.clr", BR (1, 1)},
88 1.1 christos #undef BR
89 1.1 christos
90 1.1 christos #define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
91 1.1 christos #define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
92 1.1 christos #define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
93 1.1 christos {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)},
94 1.1 christos {"br.cond.sptk", BRP (0x20, 0, 0, 0, 0)},
95 1.1 christos {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
96 1.1 christos {"br.cond.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
97 1.1 christos {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)},
98 1.1 christos {"br.cond.spnt", BRP (0x20, 0, 0, 1, 0)},
99 1.1 christos {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
100 1.1 christos {"br.cond.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
101 1.1 christos {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)},
102 1.1 christos {"br.cond.dptk", BRP (0x20, 0, 0, 2, 0)},
103 1.1 christos {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
104 1.1 christos {"br.cond.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
105 1.1 christos {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)},
106 1.1 christos {"br.cond.dpnt", BRP (0x20, 0, 0, 3, 0)},
107 1.1 christos {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
108 1.1 christos {"br.cond.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
109 1.1 christos {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)},
110 1.1 christos {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
111 1.1 christos {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)},
112 1.1 christos {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
113 1.1 christos {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)},
114 1.1 christos {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
115 1.1 christos {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)},
116 1.1 christos {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
117 1.1 christos {"br.sptk.few", BR (0x20, 0, 0, 0, 0)},
118 1.1 christos {"br.sptk", BRP (0x20, 0, 0, 0, 0)},
119 1.1 christos {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
120 1.1 christos {"br.sptk.clr", BRP (0x20, 0, 0, 0, 1)},
121 1.1 christos {"br.spnt.few", BR (0x20, 0, 0, 1, 0)},
122 1.1 christos {"br.spnt", BRP (0x20, 0, 0, 1, 0)},
123 1.1 christos {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
124 1.1 christos {"br.spnt.clr", BRP (0x20, 0, 0, 1, 1)},
125 1.1 christos {"br.dptk.few", BR (0x20, 0, 0, 2, 0)},
126 1.1 christos {"br.dptk", BRP (0x20, 0, 0, 2, 0)},
127 1.1 christos {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
128 1.1 christos {"br.dptk.clr", BRP (0x20, 0, 0, 2, 1)},
129 1.1 christos {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)},
130 1.1 christos {"br.dpnt", BRP (0x20, 0, 0, 3, 0)},
131 1.1 christos {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
132 1.1 christos {"br.dpnt.clr", BRP (0x20, 0, 0, 3, 1)},
133 1.1 christos {"br.sptk.many", BR (0x20, 0, 1, 0, 0)},
134 1.1 christos {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
135 1.1 christos {"br.spnt.many", BR (0x20, 0, 1, 1, 0)},
136 1.1 christos {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
137 1.1 christos {"br.dptk.many", BR (0x20, 0, 1, 2, 0)},
138 1.1 christos {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
139 1.1 christos {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)},
140 1.1 christos {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
141 1.1 christos {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)},
142 1.1 christos {"br.ia.sptk", BRP (0x20, 1, 0, 0, 0)},
143 1.1 christos {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)},
144 1.1 christos {"br.ia.sptk.clr", BRP (0x20, 1, 0, 0, 1)},
145 1.1 christos {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)},
146 1.1 christos {"br.ia.spnt", BRP (0x20, 1, 0, 1, 0)},
147 1.1 christos {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)},
148 1.1 christos {"br.ia.spnt.clr", BRP (0x20, 1, 0, 1, 1)},
149 1.1 christos {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)},
150 1.1 christos {"br.ia.dptk", BRP (0x20, 1, 0, 2, 0)},
151 1.1 christos {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)},
152 1.1 christos {"br.ia.dptk.clr", BRP (0x20, 1, 0, 2, 1)},
153 1.1 christos {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)},
154 1.1 christos {"br.ia.dpnt", BRP (0x20, 1, 0, 3, 0)},
155 1.1 christos {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)},
156 1.1 christos {"br.ia.dpnt.clr", BRP (0x20, 1, 0, 3, 1)},
157 1.1 christos {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)},
158 1.1 christos {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)},
159 1.1 christos {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)},
160 1.1 christos {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)},
161 1.1 christos {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)},
162 1.1 christos {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)},
163 1.1 christos {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)},
164 1.1 christos {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)},
165 1.1 christos {"br.ret.sptk.few", BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
166 1.1 christos {"br.ret.sptk", BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
167 1.1 christos {"br.ret.sptk.few.clr", BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
168 1.1 christos {"br.ret.sptk.clr", BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
169 1.1 christos {"br.ret.spnt.few", BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
170 1.1 christos {"br.ret.spnt", BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
171 1.1 christos {"br.ret.spnt.few.clr", BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
172 1.1 christos {"br.ret.spnt.clr", BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
173 1.1 christos {"br.ret.dptk.few", BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
174 1.1 christos {"br.ret.dptk", BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
175 1.1 christos {"br.ret.dptk.few.clr", BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
176 1.1 christos {"br.ret.dptk.clr", BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
177 1.1 christos {"br.ret.dpnt.few", BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
178 1.1 christos {"br.ret.dpnt", BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
179 1.1 christos {"br.ret.dpnt.few.clr", BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
180 1.1 christos {"br.ret.dpnt.clr", BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
181 1.1 christos {"br.ret.sptk.many", BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
182 1.1 christos {"br.ret.sptk.many.clr", BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
183 1.1 christos {"br.ret.spnt.many", BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
184 1.1 christos {"br.ret.spnt.many.clr", BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
185 1.1 christos {"br.ret.dptk.many", BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
186 1.1 christos {"br.ret.dptk.many.clr", BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
187 1.1 christos {"br.ret.dpnt.many", BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
188 1.1 christos {"br.ret.dpnt.many.clr", BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
189 1.1 christos #undef BR
190 1.1 christos #undef BRP
191 1.1 christos #undef BRT
192 1.1 christos
193 1.1 christos {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
194 1.1 christos {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
195 1.1 christos {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
196 1.1 christos {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
197 1.1 christos {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
198 1.1 christos {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
199 1.1 christos {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
200 1.1 christos {"vmsw.0", B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
201 1.1 christos {"vmsw.1", B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
202 1.1 christos
203 1.1 christos {"break.b", B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
204 1.1 christos
205 1.1 christos {"br.call.sptk.few", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
206 1.1 christos {"br.call.sptk", B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
207 1.1 christos {"br.call.sptk.few.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
208 1.1 christos {"br.call.sptk.clr", B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
209 1.1 christos {"br.call.spnt.few", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
210 1.1 christos {"br.call.spnt", B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
211 1.1 christos {"br.call.spnt.few.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
212 1.1 christos {"br.call.spnt.clr", B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
213 1.1 christos {"br.call.dptk.few", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
214 1.1 christos {"br.call.dptk", B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
215 1.1 christos {"br.call.dptk.few.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
216 1.1 christos {"br.call.dptk.clr", B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
217 1.1 christos {"br.call.dpnt.few", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
218 1.1 christos {"br.call.dpnt", B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
219 1.1 christos {"br.call.dpnt.few.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
220 1.1 christos {"br.call.dpnt.clr", B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
221 1.1 christos {"br.call.sptk.many", B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
222 1.1 christos {"br.call.sptk.many.clr", B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
223 1.1 christos {"br.call.spnt.many", B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
224 1.1 christos {"br.call.spnt.many.clr", B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
225 1.1 christos {"br.call.dptk.many", B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
226 1.1 christos {"br.call.dptk.many.clr", B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
227 1.1 christos {"br.call.dpnt.many", B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
228 1.1 christos {"br.call.dpnt.many.clr", B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
229 1.1 christos
230 1.1 christos #define BRP(a,b,c) \
231 1.1 christos B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
232 1.1 christos {"brp.sptk", BRP (0x10, 0, 0)},
233 1.1 christos {"brp.dptk", BRP (0x10, 0, 2)},
234 1.1 christos {"brp.sptk.imp", BRP (0x10, 1, 0)},
235 1.1 christos {"brp.dptk.imp", BRP (0x10, 1, 2)},
236 1.1 christos {"brp.ret.sptk", BRP (0x11, 0, 0)},
237 1.1 christos {"brp.ret.dptk", BRP (0x11, 0, 2)},
238 1.1 christos {"brp.ret.sptk.imp", BRP (0x11, 1, 0)},
239 1.1 christos {"brp.ret.dptk.imp", BRP (0x11, 1, 2)},
240 1.1 christos #undef BRP
241 1.1 christos
242 1.1 christos {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
243 1.1 christos {"hint.b", B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
244 1.1 christos
245 1.1 christos #define BR(a,b) \
246 1.1 christos B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
247 1.1 christos {"br.few", BR (0, 0)},
248 1.1 christos {"br", BR (0, 0)},
249 1.1 christos {"br.few.clr", BR (0, 1)},
250 1.1 christos {"br.clr", BR (0, 1)},
251 1.1 christos {"br.many", BR (1, 0)},
252 1.1 christos {"br.many.clr", BR (1, 1)},
253 1.1 christos #undef BR
254 1.1 christos
255 1.1 christos #define BR(a,b,c) \
256 1.1 christos B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
257 1.1 christos #define BRP(a,b,c) \
258 1.1 christos B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
259 1.1 christos {"br.cond.sptk.few", BR (0, 0, 0)},
260 1.1 christos {"br.cond.sptk", BRP (0, 0, 0)},
261 1.1 christos {"br.cond.sptk.few.clr", BR (0, 0, 1)},
262 1.1 christos {"br.cond.sptk.clr", BRP (0, 0, 1)},
263 1.1 christos {"br.cond.spnt.few", BR (0, 1, 0)},
264 1.1 christos {"br.cond.spnt", BRP (0, 1, 0)},
265 1.1 christos {"br.cond.spnt.few.clr", BR (0, 1, 1)},
266 1.1 christos {"br.cond.spnt.clr", BRP (0, 1, 1)},
267 1.1 christos {"br.cond.dptk.few", BR (0, 2, 0)},
268 1.1 christos {"br.cond.dptk", BRP (0, 2, 0)},
269 1.1 christos {"br.cond.dptk.few.clr", BR (0, 2, 1)},
270 1.1 christos {"br.cond.dptk.clr", BRP (0, 2, 1)},
271 1.1 christos {"br.cond.dpnt.few", BR (0, 3, 0)},
272 1.1 christos {"br.cond.dpnt", BRP (0, 3, 0)},
273 1.1 christos {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
274 1.1 christos {"br.cond.dpnt.clr", BRP (0, 3, 1)},
275 1.1 christos {"br.cond.sptk.many", BR (1, 0, 0)},
276 1.1 christos {"br.cond.sptk.many.clr", BR (1, 0, 1)},
277 1.1 christos {"br.cond.spnt.many", BR (1, 1, 0)},
278 1.1 christos {"br.cond.spnt.many.clr", BR (1, 1, 1)},
279 1.1 christos {"br.cond.dptk.many", BR (1, 2, 0)},
280 1.1 christos {"br.cond.dptk.many.clr", BR (1, 2, 1)},
281 1.1 christos {"br.cond.dpnt.many", BR (1, 3, 0)},
282 1.1 christos {"br.cond.dpnt.many.clr", BR (1, 3, 1)},
283 1.1 christos {"br.sptk.few", BR (0, 0, 0)},
284 1.1 christos {"br.sptk", BRP (0, 0, 0)},
285 1.1 christos {"br.sptk.few.clr", BR (0, 0, 1)},
286 1.1 christos {"br.sptk.clr", BRP (0, 0, 1)},
287 1.1 christos {"br.spnt.few", BR (0, 1, 0)},
288 1.1 christos {"br.spnt", BRP (0, 1, 0)},
289 1.1 christos {"br.spnt.few.clr", BR (0, 1, 1)},
290 1.1 christos {"br.spnt.clr", BRP (0, 1, 1)},
291 1.1 christos {"br.dptk.few", BR (0, 2, 0)},
292 1.1 christos {"br.dptk", BRP (0, 2, 0)},
293 1.1 christos {"br.dptk.few.clr", BR (0, 2, 1)},
294 1.1 christos {"br.dptk.clr", BRP (0, 2, 1)},
295 1.1 christos {"br.dpnt.few", BR (0, 3, 0)},
296 1.1 christos {"br.dpnt", BRP (0, 3, 0)},
297 1.1 christos {"br.dpnt.few.clr", BR (0, 3, 1)},
298 1.1 christos {"br.dpnt.clr", BRP (0, 3, 1)},
299 1.1 christos {"br.sptk.many", BR (1, 0, 0)},
300 1.1 christos {"br.sptk.many.clr", BR (1, 0, 1)},
301 1.1 christos {"br.spnt.many", BR (1, 1, 0)},
302 1.1 christos {"br.spnt.many.clr", BR (1, 1, 1)},
303 1.1 christos {"br.dptk.many", BR (1, 2, 0)},
304 1.1 christos {"br.dptk.many.clr", BR (1, 2, 1)},
305 1.1 christos {"br.dpnt.many", BR (1, 3, 0)},
306 1.1 christos {"br.dpnt.many.clr", BR (1, 3, 1)},
307 1.1 christos #undef BR
308 1.1 christos #undef BRP
309 1.1 christos
310 1.1 christos #define BR(a,b,c,d, e) \
311 1.1 christos B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
312 1.1 christos {"br.wexit.sptk.few", BR (2, 0, 0, 0, MOD_RRBS)},
313 1.1 christos {"br.wexit.sptk", BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
314 1.1 christos {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1, MOD_RRBS)},
315 1.1 christos {"br.wexit.sptk.clr", BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
316 1.1 christos {"br.wexit.spnt.few", BR (2, 0, 1, 0, MOD_RRBS)},
317 1.1 christos {"br.wexit.spnt", BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
318 1.1 christos {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1, MOD_RRBS)},
319 1.1 christos {"br.wexit.spnt.clr", BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
320 1.1 christos {"br.wexit.dptk.few", BR (2, 0, 2, 0, MOD_RRBS)},
321 1.1 christos {"br.wexit.dptk", BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
322 1.1 christos {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1, MOD_RRBS)},
323 1.1 christos {"br.wexit.dptk.clr", BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
324 1.1 christos {"br.wexit.dpnt.few", BR (2, 0, 3, 0, MOD_RRBS)},
325 1.1 christos {"br.wexit.dpnt", BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
326 1.1 christos {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1, MOD_RRBS)},
327 1.1 christos {"br.wexit.dpnt.clr", BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
328 1.1 christos {"br.wexit.sptk.many", BR (2, 1, 0, 0, MOD_RRBS)},
329 1.1 christos {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
330 1.1 christos {"br.wexit.spnt.many", BR (2, 1, 1, 0, MOD_RRBS)},
331 1.1 christos {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
332 1.1 christos {"br.wexit.dptk.many", BR (2, 1, 2, 0, MOD_RRBS)},
333 1.1 christos {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
334 1.1 christos {"br.wexit.dpnt.many", BR (2, 1, 3, 0, MOD_RRBS)},
335 1.1 christos {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
336 1.1 christos {"br.wtop.sptk.few", BR (3, 0, 0, 0, MOD_RRBS)},
337 1.1 christos {"br.wtop.sptk", BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
338 1.1 christos {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1, MOD_RRBS)},
339 1.1 christos {"br.wtop.sptk.clr", BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
340 1.1 christos {"br.wtop.spnt.few", BR (3, 0, 1, 0, MOD_RRBS)},
341 1.1 christos {"br.wtop.spnt", BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
342 1.1 christos {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1, MOD_RRBS)},
343 1.1 christos {"br.wtop.spnt.clr", BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
344 1.1 christos {"br.wtop.dptk.few", BR (3, 0, 2, 0, MOD_RRBS)},
345 1.1 christos {"br.wtop.dptk", BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
346 1.1 christos {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1, MOD_RRBS)},
347 1.1 christos {"br.wtop.dptk.clr", BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
348 1.1 christos {"br.wtop.dpnt.few", BR (3, 0, 3, 0, MOD_RRBS)},
349 1.1 christos {"br.wtop.dpnt", BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
350 1.1 christos {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1, MOD_RRBS)},
351 1.1 christos {"br.wtop.dpnt.clr", BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
352 1.1 christos {"br.wtop.sptk.many", BR (3, 1, 0, 0, MOD_RRBS)},
353 1.1 christos {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1, MOD_RRBS)},
354 1.1 christos {"br.wtop.spnt.many", BR (3, 1, 1, 0, MOD_RRBS)},
355 1.1 christos {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1, MOD_RRBS)},
356 1.1 christos {"br.wtop.dptk.many", BR (3, 1, 2, 0, MOD_RRBS)},
357 1.1 christos {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1, MOD_RRBS)},
358 1.1 christos {"br.wtop.dpnt.many", BR (3, 1, 3, 0, MOD_RRBS)},
359 1.1 christos {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1, MOD_RRBS)},
360 1.1 christos
361 1.1 christos #undef BR
362 1.1 christos #define BR(a,b,c,d) \
363 1.1 christos B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
364 1.1 christos #define BRT(a,b,c,d,e) \
365 1.1 christos B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
366 1.1 christos {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
367 1.1 christos {"br.cloop.sptk", BRT (5, 0, 0, 0, PSEUDO)},
368 1.1 christos {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
369 1.1 christos {"br.cloop.sptk.clr", BRT (5, 0, 0, 1, PSEUDO)},
370 1.1 christos {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
371 1.1 christos {"br.cloop.spnt", BRT (5, 0, 1, 0, PSEUDO)},
372 1.1 christos {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
373 1.1 christos {"br.cloop.spnt.clr", BRT (5, 0, 1, 1, PSEUDO)},
374 1.1 christos {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
375 1.1 christos {"br.cloop.dptk", BRT (5, 0, 2, 0, PSEUDO)},
376 1.1 christos {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
377 1.1 christos {"br.cloop.dptk.clr", BRT (5, 0, 2, 1, PSEUDO)},
378 1.1 christos {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
379 1.1 christos {"br.cloop.dpnt", BRT (5, 0, 3, 0, PSEUDO)},
380 1.1 christos {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
381 1.1 christos {"br.cloop.dpnt.clr", BRT (5, 0, 3, 1, PSEUDO)},
382 1.1 christos {"br.cloop.sptk.many", BR (5, 1, 0, 0)},
383 1.1 christos {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
384 1.1 christos {"br.cloop.spnt.many", BR (5, 1, 1, 0)},
385 1.1 christos {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
386 1.1 christos {"br.cloop.dptk.many", BR (5, 1, 2, 0)},
387 1.1 christos {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
388 1.1 christos {"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
389 1.1 christos {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
390 1.1 christos {"br.cexit.sptk.few", BRT (6, 0, 0, 0, MOD_RRBS)},
391 1.1 christos {"br.cexit.sptk", BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
392 1.1 christos {"br.cexit.sptk.few.clr", BRT (6, 0, 0, 1, MOD_RRBS)},
393 1.1 christos {"br.cexit.sptk.clr", BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
394 1.1 christos {"br.cexit.spnt.few", BRT (6, 0, 1, 0, MOD_RRBS)},
395 1.1 christos {"br.cexit.spnt", BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
396 1.1 christos {"br.cexit.spnt.few.clr", BRT (6, 0, 1, 1, MOD_RRBS)},
397 1.1 christos {"br.cexit.spnt.clr", BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
398 1.1 christos {"br.cexit.dptk.few", BRT (6, 0, 2, 0, MOD_RRBS)},
399 1.1 christos {"br.cexit.dptk", BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
400 1.1 christos {"br.cexit.dptk.few.clr", BRT (6, 0, 2, 1, MOD_RRBS)},
401 1.1 christos {"br.cexit.dptk.clr", BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
402 1.1 christos {"br.cexit.dpnt.few", BRT (6, 0, 3, 0, MOD_RRBS)},
403 1.1 christos {"br.cexit.dpnt", BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
404 1.1 christos {"br.cexit.dpnt.few.clr", BRT (6, 0, 3, 1, MOD_RRBS)},
405 1.1 christos {"br.cexit.dpnt.clr", BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
406 1.1 christos {"br.cexit.sptk.many", BRT (6, 1, 0, 0, MOD_RRBS)},
407 1.1 christos {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
408 1.1 christos {"br.cexit.spnt.many", BRT (6, 1, 1, 0, MOD_RRBS)},
409 1.1 christos {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
410 1.1 christos {"br.cexit.dptk.many", BRT (6, 1, 2, 0, MOD_RRBS)},
411 1.1 christos {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
412 1.1 christos {"br.cexit.dpnt.many", BRT (6, 1, 3, 0, MOD_RRBS)},
413 1.1 christos {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
414 1.1 christos {"br.ctop.sptk.few", BRT (7, 0, 0, 0, MOD_RRBS)},
415 1.1 christos {"br.ctop.sptk", BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
416 1.1 christos {"br.ctop.sptk.few.clr", BRT (7, 0, 0, 1, MOD_RRBS)},
417 1.1 christos {"br.ctop.sptk.clr", BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
418 1.1 christos {"br.ctop.spnt.few", BRT (7, 0, 1, 0, MOD_RRBS)},
419 1.1 christos {"br.ctop.spnt", BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
420 1.1 christos {"br.ctop.spnt.few.clr", BRT (7, 0, 1, 1, MOD_RRBS)},
421 1.1 christos {"br.ctop.spnt.clr", BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
422 1.1 christos {"br.ctop.dptk.few", BRT (7, 0, 2, 0, MOD_RRBS)},
423 1.1 christos {"br.ctop.dptk", BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
424 1.1 christos {"br.ctop.dptk.few.clr", BRT (7, 0, 2, 1, MOD_RRBS)},
425 1.1 christos {"br.ctop.dptk.clr", BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
426 1.1 christos {"br.ctop.dpnt.few", BRT (7, 0, 3, 0, MOD_RRBS)},
427 1.1 christos {"br.ctop.dpnt", BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
428 1.1 christos {"br.ctop.dpnt.few.clr", BRT (7, 0, 3, 1, MOD_RRBS)},
429 1.1 christos {"br.ctop.dpnt.clr", BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
430 1.1 christos {"br.ctop.sptk.many", BRT (7, 1, 0, 0, MOD_RRBS)},
431 1.1 christos {"br.ctop.sptk.many.clr", BRT (7, 1, 0, 1, MOD_RRBS)},
432 1.1 christos {"br.ctop.spnt.many", BRT (7, 1, 1, 0, MOD_RRBS)},
433 1.1 christos {"br.ctop.spnt.many.clr", BRT (7, 1, 1, 1, MOD_RRBS)},
434 1.1 christos {"br.ctop.dptk.many", BRT (7, 1, 2, 0, MOD_RRBS)},
435 1.1 christos {"br.ctop.dptk.many.clr", BRT (7, 1, 2, 1, MOD_RRBS)},
436 1.1 christos {"br.ctop.dpnt.many", BRT (7, 1, 3, 0, MOD_RRBS)},
437 1.1 christos {"br.ctop.dpnt.many.clr", BRT (7, 1, 3, 1, MOD_RRBS)},
438 1.1 christos #undef BR
439 1.1 christos #undef BRT
440 1.1 christos
441 1.1 christos {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
442 1.1 christos {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
443 1.1 christos {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
444 1.1 christos {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
445 1.1 christos {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
446 1.1 christos {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
447 1.1 christos {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
448 1.1 christos {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
449 1.1 christos {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
450 1.1 christos {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
451 1.1 christos {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
452 1.1 christos {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
453 1.1 christos {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
454 1.1 christos {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
455 1.1 christos {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
456 1.1 christos {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
457 1.1 christos {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
458 1.1 christos {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
459 1.1 christos {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
460 1.1 christos {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
461 1.1 christos {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
462 1.1 christos {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
463 1.1 christos {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
464 1.1 christos {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
465 1.1 christos
466 1.1 christos /* Branch predict. */
467 1.1 christos #define BRP(a,b) \
468 1.1 christos B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
469 1.1 christos {"brp.sptk", BRP (0, 0)},
470 1.1 christos {"brp.loop", BRP (0, 1)},
471 1.1 christos {"brp.dptk", BRP (0, 2)},
472 1.1 christos {"brp.exit", BRP (0, 3)},
473 1.1 christos {"brp.sptk.imp", BRP (1, 0)},
474 1.1 christos {"brp.loop.imp", BRP (1, 1)},
475 1.1 christos {"brp.dptk.imp", BRP (1, 2)},
476 1.1 christos {"brp.exit.imp", BRP (1, 3)},
477 1.1 christos #undef BRP
478 1.1 christos
479 1.1 christos {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
480 1.1 christos };
481 1.1 christos
482 1.1 christos #undef B0
483 1.1 christos #undef B
484 1.1 christos #undef bBtype
485 1.1 christos #undef bD
486 1.1 christos #undef bIh
487 1.1 christos #undef bPa
488 1.1 christos #undef bPr
489 1.1 christos #undef bWha
490 1.1 christos #undef bWhb
491 1.1 christos #undef bWhc
492 1.1 christos #undef bX6
493 1.1 christos #undef mBtype
494 1.1 christos #undef mD
495 1.1 christos #undef mIh
496 1.1 christos #undef mPa
497 1.1 christos #undef mPr
498 1.1 christos #undef mWha
499 1.1 christos #undef mWhb
500 1.1 christos #undef mWhc
501 1.1 christos #undef mX6
502 1.1 christos #undef OpX6
503 1.1 christos #undef OpPaWhaD
504 1.1 christos #undef OpPaWhcD
505 1.1 christos #undef OpBtypePaWhaD
506 1.1 christos #undef OpBtypePaWhaDPr
507 1.1 christos #undef OpX6BtypePaWhaD
508 1.1 christos #undef OpX6BtypePaWhaDPr
509 1.1 christos #undef OpIhWhb
510 1.1 christos #undef OpX6IhWhb
511 1.1 christos #undef EMPTY
512