This commit was generated by cvs2svn to track changes on a CVS vendor
[platform/upstream/binutils.git] / opcodes / ia64-opc-m.c
1 /* ia64-opc-m.c -- IA-64 `M' opcode table.
2    Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
3    Contributed by David Mosberger-Tang <davidm@hpl.hp.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 #define M0      IA64_TYPE_M, 0
25 #define M       IA64_TYPE_M, 1
26 #define M2      IA64_TYPE_M, 2
27
28 /* instruction bit fields: */
29 #define bM(x)           (((ia64_insn) ((x) & 0x1)) << 36)
30 #define bX(x)           (((ia64_insn) ((x) & 0x1)) << 27)
31 #define bX2(x)          (((ia64_insn) ((x) & 0x3)) << 31)
32 #define bX3(x)          (((ia64_insn) ((x) & 0x7)) << 33)
33 #define bX4(x)          (((ia64_insn) ((x) & 0xf)) << 27)
34 #define bX6a(x)         (((ia64_insn) ((x) & 0x3f)) << 30)
35 #define bX6b(x)         (((ia64_insn) ((x) & 0x3f)) << 27)
36 #define bHint(x)        (((ia64_insn) ((x) & 0x3)) << 28)
37
38 #define mM      bM (-1)
39 #define mX      bX (-1)
40 #define mX2     bX2 (-1)
41 #define mX3     bX3 (-1)
42 #define mX4     bX4 (-1)
43 #define mX6a    bX6a (-1)
44 #define mX6b    bX6b (-1)
45 #define mHint   bHint (-1)
46
47 #define OpX3(a,b)               (bOp (a) | bX3 (b)), (mOp | mX3)
48 #define OpX3X6b(a,b,c)          (bOp (a) | bX3 (b) | bX6b (c)), \
49                                 (mOp | mX3 | mX6b)
50 #define OpX3X4(a,b,c)           (bOp (a) | bX3 (b) | bX4 (c)), \
51                                 (mOp | mX3 | mX4)
52 #define OpX3X4X2(a,b,c,d)       (bOp (a) | bX3 (b) | bX4 (c) | bX2 (d)), \
53                                 (mOp | mX3 | mX4 | mX2)
54 #define OpX6aHint(a,b,c)        (bOp (a) | bX6a (b) | bHint (c)), \
55                                 (mOp | mX6a | mHint)
56 #define OpXX6aHint(a,b,c,d)     (bOp (a) | bX (b) | bX6a (c) | bHint (d)), \
57                                 (mOp | mX | mX6a | mHint)
58 #define OpMXX6a(a,b,c,d) \
59         (bOp (a) | bM (b) | bX (c) | bX6a (d)), (mOp | mM | mX | mX6a)
60 #define OpMXX6aHint(a,b,c,d,e) \
61         (bOp (a) | bM (b) | bX (c) | bX6a (d) | bHint (e)), \
62         (mOp | mM | mX | mX6a | mHint)
63
64 struct ia64_opcode ia64_opcodes_m[] =
65   {
66     /* M-type instruction encodings (sorted according to major opcode) */
67
68     {"chk.a.nc",        M0, OpX3 (0, 4), {R1, TGT25c}},
69     {"chk.a.clr",       M0, OpX3 (0, 5), {R1, TGT25c}},
70     {"chk.a.nc",        M0, OpX3 (0, 6), {F1, TGT25c}},
71     {"chk.a.clr",       M0, OpX3 (0, 7), {F1, TGT25c}},
72
73     {"invala",          M0, OpX3X4X2 (0, 0, 0, 1)},
74     {"fwb",             M0, OpX3X4X2 (0, 0, 0, 2)},
75     {"mf",              M0, OpX3X4X2 (0, 0, 2, 2)},
76     {"mf.a",            M0, OpX3X4X2 (0, 0, 3, 2)},
77     {"srlz.d",          M0, OpX3X4X2 (0, 0, 0, 3)},
78     {"srlz.i",          M0, OpX3X4X2 (0, 0, 1, 3)},
79     {"sync.i",          M0, OpX3X4X2 (0, 0, 3, 3)},
80     {"flushrs",         M0, OpX3X4X2 (0, 0, 0xc, 0), {0, }, FIRST | NO_PRED},
81     {"loadrs",          M0, OpX3X4X2 (0, 0, 0xa, 0), {0, }, FIRST | NO_PRED},
82     {"invala.e",        M0, OpX3X4X2 (0, 0, 2, 1), {R1}},
83     {"invala.e",        M0, OpX3X4X2 (0, 0, 3, 1), {F1}},
84     {"mov.m",           M, OpX3X4X2 (0, 0, 8, 2), {AR3, IMM8}},
85
86     {"break.m",         M0, OpX3X4X2 (0, 0, 0, 0), {IMMU21}},
87     {"nop.m",           M0, OpX3X4X2 (0, 0, 1, 0), {IMMU21}},
88
89     {"sum",             M0, OpX3X4 (0, 0, 4), {IMMU24}},
90     {"rum",             M0, OpX3X4 (0, 0, 5), {IMMU24}},
91     {"ssm",             M0, OpX3X4 (0, 0, 6), {IMMU24}, PRIV},
92     {"rsm",             M0, OpX3X4 (0, 0, 7), {IMMU24}, PRIV},
93
94     {"mov.m",   M, OpX3X6b (1, 0, 0x2a), {AR3, R2}},
95     {"mov.m",   M, OpX3X6b (1, 0, 0x22), {R1, AR3}},
96     {"mov",     M, OpX3X6b (1, 0, 0x2c), {CR3, R2}, PRIV},
97     {"mov",     M, OpX3X6b (1, 0, 0x24), {R1, CR3}, PRIV},
98
99     {"alloc",   M, OpX3 (1, 6), {R1, AR_PFS, SOF, SOL, SOR}, FIRST|NO_PRED|MOD_RRBS},
100
101     {"mov",     M, OpX3X6b (1, 0, 0x2d), {PSR_L, R2}, PRIV},
102     {"mov",     M, OpX3X6b (1, 0, 0x29), {PSR_UM, R2}},
103     {"mov",     M, OpX3X6b (1, 0, 0x25), {R1, PSR}, PRIV},
104     {"mov",     M, OpX3X6b (1, 0, 0x21), {R1, PSR_UM}},
105     {"probe.r", M, OpX3X6b (1, 0, 0x38), {R1, R3, R2}},
106     {"probe.w", M, OpX3X6b (1, 0, 0x39), {R1, R3, R2}},
107     {"probe.r", M, OpX3X6b (1, 0, 0x18), {R1, R3, IMMU2}},
108     {"probe.w", M, OpX3X6b (1, 0, 0x19), {R1, R3, IMMU2}},
109     {"probe.rw.fault", M0, OpX3X6b (1, 0, 0x31), {R3, IMMU2}},
110     {"probe.r.fault",  M0, OpX3X6b (1, 0, 0x32), {R3, IMMU2}},
111     {"probe.w.fault",  M0, OpX3X6b (1, 0, 0x33), {R3, IMMU2}},
112     {"itc.d",   M0, OpX3X6b (1, 0, 0x2e), {R2}, LAST | PRIV},
113     {"itc.i",   M0, OpX3X6b (1, 0, 0x2f), {R2}, LAST | PRIV},
114
115     {"mov",     M, OpX3X6b (1, 0, 0x00), {RR_R3, R2}, PRIV},
116     {"mov",     M, OpX3X6b (1, 0, 0x01), {DBR_R3, R2}, PRIV},
117     {"mov",     M, OpX3X6b (1, 0, 0x02), {IBR_R3, R2}, PRIV},
118     {"mov",     M, OpX3X6b (1, 0, 0x03), {PKR_R3, R2}, PRIV},
119     {"mov",     M, OpX3X6b (1, 0, 0x04), {PMC_R3, R2}, PRIV},
120     {"mov",     M, OpX3X6b (1, 0, 0x05), {PMD_R3, R2}, PRIV},
121     {"mov",     M, OpX3X6b (1, 0, 0x06), {MSR_R3, R2}, PRIV},
122     {"itr.d",   M, OpX3X6b (1, 0, 0x0e), {DTR_R3, R2}, PRIV},
123     {"itr.i",   M, OpX3X6b (1, 0, 0x0f), {ITR_R3, R2}, PRIV},
124
125     {"mov",     M, OpX3X6b (1, 0, 0x10), {R1, RR_R3}, PRIV},
126     {"mov",     M, OpX3X6b (1, 0, 0x11), {R1, DBR_R3}, PRIV},
127     {"mov",     M, OpX3X6b (1, 0, 0x12), {R1, IBR_R3}, PRIV},
128     {"mov",     M, OpX3X6b (1, 0, 0x13), {R1, PKR_R3}, PRIV},
129     {"mov",     M, OpX3X6b (1, 0, 0x14), {R1, PMC_R3}, PRIV},
130     {"mov",     M, OpX3X6b (1, 0, 0x15), {R1, PMD_R3}},
131     {"mov",     M, OpX3X6b (1, 0, 0x16), {R1, MSR_R3}, PRIV},
132     {"mov",     M, OpX3X6b (1, 0, 0x17), {R1, CPUID_R3}},
133
134     {"ptc.l",   M0, OpX3X6b (1, 0, 0x09), {R3, R2}, PRIV},
135     {"ptc.g",   M0, OpX3X6b (1, 0, 0x0a), {R3, R2}, LAST | PRIV},
136     {"ptc.ga",  M0, OpX3X6b (1, 0, 0x0b), {R3, R2}, LAST | PRIV},
137     {"ptr.d",   M0, OpX3X6b (1, 0, 0x0c), {R3, R2}, PRIV},
138     {"ptr.i",   M0, OpX3X6b (1, 0, 0x0d), {R3, R2}, PRIV},
139
140     {"thash",   M, OpX3X6b (1, 0, 0x1a), {R1, R3}},
141     {"ttag",    M, OpX3X6b (1, 0, 0x1b), {R1, R3}},
142     {"tpa",     M, OpX3X6b (1, 0, 0x1e), {R1, R3}, PRIV},
143     {"tak",     M, OpX3X6b (1, 0, 0x1f), {R1, R3}, PRIV},
144
145     {"chk.s.m", M0, OpX3 (1, 1), {R2, TGT25b}},
146     {"chk.s",   M0, OpX3 (1, 3), {F2, TGT25b}},
147
148     {"fc",      M0, OpX3X6b (1, 0, 0x30), {R3}},
149     {"ptc.e",   M0, OpX3X6b (1, 0, 0x34), {R3}, PRIV},
150
151     /* integer load */
152     {"ld1",             M, OpMXX6aHint (4, 0, 0, 0x00, 0), {R1, MR3}},
153     {"ld1.nt1",         M, OpMXX6aHint (4, 0, 0, 0x00, 1), {R1, MR3}},
154     {"ld1.nta",         M, OpMXX6aHint (4, 0, 0, 0x00, 3), {R1, MR3}},
155     {"ld2",             M, OpMXX6aHint (4, 0, 0, 0x01, 0), {R1, MR3}},
156     {"ld2.nt1",         M, OpMXX6aHint (4, 0, 0, 0x01, 1), {R1, MR3}},
157     {"ld2.nta",         M, OpMXX6aHint (4, 0, 0, 0x01, 3), {R1, MR3}},
158     {"ld4",             M, OpMXX6aHint (4, 0, 0, 0x02, 0), {R1, MR3}},
159     {"ld4.nt1",         M, OpMXX6aHint (4, 0, 0, 0x02, 1), {R1, MR3}},
160     {"ld4.nta",         M, OpMXX6aHint (4, 0, 0, 0x02, 3), {R1, MR3}},
161     {"ld8",             M, OpMXX6aHint (4, 0, 0, 0x03, 0), {R1, MR3}},
162     {"ld8.nt1",         M, OpMXX6aHint (4, 0, 0, 0x03, 1), {R1, MR3}},
163     {"ld8.nta",         M, OpMXX6aHint (4, 0, 0, 0x03, 3), {R1, MR3}},
164     {"ld1.s",           M, OpMXX6aHint (4, 0, 0, 0x04, 0), {R1, MR3}},
165     {"ld1.s.nt1",       M, OpMXX6aHint (4, 0, 0, 0x04, 1), {R1, MR3}},
166     {"ld1.s.nta",       M, OpMXX6aHint (4, 0, 0, 0x04, 3), {R1, MR3}},
167     {"ld2.s",           M, OpMXX6aHint (4, 0, 0, 0x05, 0), {R1, MR3}},
168     {"ld2.s.nt1",       M, OpMXX6aHint (4, 0, 0, 0x05, 1), {R1, MR3}},
169     {"ld2.s.nta",       M, OpMXX6aHint (4, 0, 0, 0x05, 3), {R1, MR3}},
170     {"ld4.s",           M, OpMXX6aHint (4, 0, 0, 0x06, 0), {R1, MR3}},
171     {"ld4.s.nt1",       M, OpMXX6aHint (4, 0, 0, 0x06, 1), {R1, MR3}},
172     {"ld4.s.nta",       M, OpMXX6aHint (4, 0, 0, 0x06, 3), {R1, MR3}},
173     {"ld8.s",           M, OpMXX6aHint (4, 0, 0, 0x07, 0), {R1, MR3}},
174     {"ld8.s.nt1",       M, OpMXX6aHint (4, 0, 0, 0x07, 1), {R1, MR3}},
175     {"ld8.s.nta",       M, OpMXX6aHint (4, 0, 0, 0x07, 3), {R1, MR3}},
176     {"ld1.a",           M, OpMXX6aHint (4, 0, 0, 0x08, 0), {R1, MR3}},
177     {"ld1.a.nt1",       M, OpMXX6aHint (4, 0, 0, 0x08, 1), {R1, MR3}},
178     {"ld1.a.nta",       M, OpMXX6aHint (4, 0, 0, 0x08, 3), {R1, MR3}},
179     {"ld2.a",           M, OpMXX6aHint (4, 0, 0, 0x09, 0), {R1, MR3}},
180     {"ld2.a.nt1",       M, OpMXX6aHint (4, 0, 0, 0x09, 1), {R1, MR3}},
181     {"ld2.a.nta",       M, OpMXX6aHint (4, 0, 0, 0x09, 3), {R1, MR3}},
182     {"ld4.a",           M, OpMXX6aHint (4, 0, 0, 0x0a, 0), {R1, MR3}},
183     {"ld4.a.nt1",       M, OpMXX6aHint (4, 0, 0, 0x0a, 1), {R1, MR3}},
184     {"ld4.a.nta",       M, OpMXX6aHint (4, 0, 0, 0x0a, 3), {R1, MR3}},
185     {"ld8.a",           M, OpMXX6aHint (4, 0, 0, 0x0b, 0), {R1, MR3}},
186     {"ld8.a.nt1",       M, OpMXX6aHint (4, 0, 0, 0x0b, 1), {R1, MR3}},
187     {"ld8.a.nta",       M, OpMXX6aHint (4, 0, 0, 0x0b, 3), {R1, MR3}},
188     {"ld1.sa",          M, OpMXX6aHint (4, 0, 0, 0x0c, 0), {R1, MR3}},
189     {"ld1.sa.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0c, 1), {R1, MR3}},
190     {"ld1.sa.nta",      M, OpMXX6aHint (4, 0, 0, 0x0c, 3), {R1, MR3}},
191     {"ld2.sa",          M, OpMXX6aHint (4, 0, 0, 0x0d, 0), {R1, MR3}},
192     {"ld2.sa.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0d, 1), {R1, MR3}},
193     {"ld2.sa.nta",      M, OpMXX6aHint (4, 0, 0, 0x0d, 3), {R1, MR3}},
194     {"ld4.sa",          M, OpMXX6aHint (4, 0, 0, 0x0e, 0), {R1, MR3}},
195     {"ld4.sa.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0e, 1), {R1, MR3}},
196     {"ld4.sa.nta",      M, OpMXX6aHint (4, 0, 0, 0x0e, 3), {R1, MR3}},
197     {"ld8.sa",          M, OpMXX6aHint (4, 0, 0, 0x0f, 0), {R1, MR3}},
198     {"ld8.sa.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0f, 1), {R1, MR3}},
199     {"ld8.sa.nta",      M, OpMXX6aHint (4, 0, 0, 0x0f, 3), {R1, MR3}},
200     {"ld1.bias",        M, OpMXX6aHint (4, 0, 0, 0x10, 0), {R1, MR3}},
201     {"ld1.bias.nt1",    M, OpMXX6aHint (4, 0, 0, 0x10, 1), {R1, MR3}},
202     {"ld1.bias.nta",    M, OpMXX6aHint (4, 0, 0, 0x10, 3), {R1, MR3}},
203     {"ld2.bias",        M, OpMXX6aHint (4, 0, 0, 0x11, 0), {R1, MR3}},
204     {"ld2.bias.nt1",    M, OpMXX6aHint (4, 0, 0, 0x11, 1), {R1, MR3}},
205     {"ld2.bias.nta",    M, OpMXX6aHint (4, 0, 0, 0x11, 3), {R1, MR3}},
206     {"ld4.bias",        M, OpMXX6aHint (4, 0, 0, 0x12, 0), {R1, MR3}},
207     {"ld4.bias.nt1",    M, OpMXX6aHint (4, 0, 0, 0x12, 1), {R1, MR3}},
208     {"ld4.bias.nta",    M, OpMXX6aHint (4, 0, 0, 0x12, 3), {R1, MR3}},
209     {"ld8.bias",        M, OpMXX6aHint (4, 0, 0, 0x13, 0), {R1, MR3}},
210     {"ld8.bias.nt1",    M, OpMXX6aHint (4, 0, 0, 0x13, 1), {R1, MR3}},
211     {"ld8.bias.nta",    M, OpMXX6aHint (4, 0, 0, 0x13, 3), {R1, MR3}},
212     {"ld1.acq",         M, OpMXX6aHint (4, 0, 0, 0x14, 0), {R1, MR3}},
213     {"ld1.acq.nt1",     M, OpMXX6aHint (4, 0, 0, 0x14, 1), {R1, MR3}},
214     {"ld1.acq.nta",     M, OpMXX6aHint (4, 0, 0, 0x14, 3), {R1, MR3}},
215     {"ld2.acq",         M, OpMXX6aHint (4, 0, 0, 0x15, 0), {R1, MR3}},
216     {"ld2.acq.nt1",     M, OpMXX6aHint (4, 0, 0, 0x15, 1), {R1, MR3}},
217     {"ld2.acq.nta",     M, OpMXX6aHint (4, 0, 0, 0x15, 3), {R1, MR3}},
218     {"ld4.acq",         M, OpMXX6aHint (4, 0, 0, 0x16, 0), {R1, MR3}},
219     {"ld4.acq.nt1",     M, OpMXX6aHint (4, 0, 0, 0x16, 1), {R1, MR3}},
220     {"ld4.acq.nta",     M, OpMXX6aHint (4, 0, 0, 0x16, 3), {R1, MR3}},
221     {"ld8.acq",         M, OpMXX6aHint (4, 0, 0, 0x17, 0), {R1, MR3}},
222     {"ld8.acq.nt1",     M, OpMXX6aHint (4, 0, 0, 0x17, 1), {R1, MR3}},
223     {"ld8.acq.nta",     M, OpMXX6aHint (4, 0, 0, 0x17, 3), {R1, MR3}},
224     {"ld8.fill",        M, OpMXX6aHint (4, 0, 0, 0x1b, 0), {R1, MR3}},
225     {"ld8.fill.nt1",    M, OpMXX6aHint (4, 0, 0, 0x1b, 1), {R1, MR3}},
226     {"ld8.fill.nta",    M, OpMXX6aHint (4, 0, 0, 0x1b, 3), {R1, MR3}},
227     {"ld1.c.clr",       M, OpMXX6aHint (4, 0, 0, 0x20, 0), {R1, MR3}},
228     {"ld1.c.clr.nt1",   M, OpMXX6aHint (4, 0, 0, 0x20, 1), {R1, MR3}},
229     {"ld1.c.clr.nta",   M, OpMXX6aHint (4, 0, 0, 0x20, 3), {R1, MR3}},
230     {"ld2.c.clr",       M, OpMXX6aHint (4, 0, 0, 0x21, 0), {R1, MR3}},
231     {"ld2.c.clr.nt1",   M, OpMXX6aHint (4, 0, 0, 0x21, 1), {R1, MR3}},
232     {"ld2.c.clr.nta",   M, OpMXX6aHint (4, 0, 0, 0x21, 3), {R1, MR3}},
233     {"ld4.c.clr",       M, OpMXX6aHint (4, 0, 0, 0x22, 0), {R1, MR3}},
234     {"ld4.c.clr.nt1",   M, OpMXX6aHint (4, 0, 0, 0x22, 1), {R1, MR3}},
235     {"ld4.c.clr.nta",   M, OpMXX6aHint (4, 0, 0, 0x22, 3), {R1, MR3}},
236     {"ld8.c.clr",       M, OpMXX6aHint (4, 0, 0, 0x23, 0), {R1, MR3}},
237     {"ld8.c.clr.nt1",   M, OpMXX6aHint (4, 0, 0, 0x23, 1), {R1, MR3}},
238     {"ld8.c.clr.nta",   M, OpMXX6aHint (4, 0, 0, 0x23, 3), {R1, MR3}},
239     {"ld1.c.nc",        M, OpMXX6aHint (4, 0, 0, 0x24, 0), {R1, MR3}},
240     {"ld1.c.nc.nt1",    M, OpMXX6aHint (4, 0, 0, 0x24, 1), {R1, MR3}},
241     {"ld1.c.nc.nta",    M, OpMXX6aHint (4, 0, 0, 0x24, 3), {R1, MR3}},
242     {"ld2.c.nc",        M, OpMXX6aHint (4, 0, 0, 0x25, 0), {R1, MR3}},
243     {"ld2.c.nc.nt1",    M, OpMXX6aHint (4, 0, 0, 0x25, 1), {R1, MR3}},
244     {"ld2.c.nc.nta",    M, OpMXX6aHint (4, 0, 0, 0x25, 3), {R1, MR3}},
245     {"ld4.c.nc",        M, OpMXX6aHint (4, 0, 0, 0x26, 0), {R1, MR3}},
246     {"ld4.c.nc.nt1",    M, OpMXX6aHint (4, 0, 0, 0x26, 1), {R1, MR3}},
247     {"ld4.c.nc.nta",    M, OpMXX6aHint (4, 0, 0, 0x26, 3), {R1, MR3}},
248     {"ld8.c.nc",        M, OpMXX6aHint (4, 0, 0, 0x27, 0), {R1, MR3}},
249     {"ld8.c.nc.nt1",    M, OpMXX6aHint (4, 0, 0, 0x27, 1), {R1, MR3}},
250     {"ld8.c.nc.nta",    M, OpMXX6aHint (4, 0, 0, 0x27, 3), {R1, MR3}},
251     {"ld1.c.clr.acq",     M, OpMXX6aHint (4, 0, 0, 0x28, 0), {R1, MR3}},
252     {"ld1.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x28, 1), {R1, MR3}},
253     {"ld1.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x28, 3), {R1, MR3}},
254     {"ld2.c.clr.acq",     M, OpMXX6aHint (4, 0, 0, 0x29, 0), {R1, MR3}},
255     {"ld2.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x29, 1), {R1, MR3}},
256     {"ld2.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x29, 3), {R1, MR3}},
257     {"ld4.c.clr.acq",     M, OpMXX6aHint (4, 0, 0, 0x2a, 0), {R1, MR3}},
258     {"ld4.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2a, 1), {R1, MR3}},
259     {"ld4.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2a, 3), {R1, MR3}},
260     {"ld8.c.clr.acq",     M, OpMXX6aHint (4, 0, 0, 0x2b, 0), {R1, MR3}},
261     {"ld8.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2b, 1), {R1, MR3}},
262     {"ld8.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2b, 3), {R1, MR3}},
263
264     /* integer load w/increment by register */
265 #define LDINCREG(c,h) M, OpMXX6aHint (4, 1, 0, c, h), {R1, MR3, R2}, POSTINC,
266     {"ld1",             LDINCREG (0x00, 0)},
267     {"ld1.nt1",         LDINCREG (0x00, 1)},
268     {"ld1.nta",         LDINCREG (0x00, 3)},
269     {"ld2",             LDINCREG (0x01, 0)},
270     {"ld2.nt1",         LDINCREG (0x01, 1)},
271     {"ld2.nta",         LDINCREG (0x01, 3)},
272     {"ld4",             LDINCREG (0x02, 0)},
273     {"ld4.nt1",         LDINCREG (0x02, 1)},
274     {"ld4.nta",         LDINCREG (0x02, 3)},
275     {"ld8",             LDINCREG (0x03, 0)},
276     {"ld8.nt1",         LDINCREG (0x03, 1)},
277     {"ld8.nta",         LDINCREG (0x03, 3)},
278     {"ld1.s",           LDINCREG (0x04, 0)},
279     {"ld1.s.nt1",       LDINCREG (0x04, 1)},
280     {"ld1.s.nta",       LDINCREG (0x04, 3)},
281     {"ld2.s",           LDINCREG (0x05, 0)},
282     {"ld2.s.nt1",       LDINCREG (0x05, 1)},
283     {"ld2.s.nta",       LDINCREG (0x05, 3)},
284     {"ld4.s",           LDINCREG (0x06, 0)},
285     {"ld4.s.nt1",       LDINCREG (0x06, 1)},
286     {"ld4.s.nta",       LDINCREG (0x06, 3)},
287     {"ld8.s",           LDINCREG (0x07, 0)},
288     {"ld8.s.nt1",       LDINCREG (0x07, 1)},
289     {"ld8.s.nta",       LDINCREG (0x07, 3)},
290     {"ld1.a",           LDINCREG (0x08, 0)},
291     {"ld1.a.nt1",       LDINCREG (0x08, 1)},
292     {"ld1.a.nta",       LDINCREG (0x08, 3)},
293     {"ld2.a",           LDINCREG (0x09, 0)},
294     {"ld2.a.nt1",       LDINCREG (0x09, 1)},
295     {"ld2.a.nta",       LDINCREG (0x09, 3)},
296     {"ld4.a",           LDINCREG (0x0a, 0)},
297     {"ld4.a.nt1",       LDINCREG (0x0a, 1)},
298     {"ld4.a.nta",       LDINCREG (0x0a, 3)},
299     {"ld8.a",           LDINCREG (0x0b, 0)},
300     {"ld8.a.nt1",       LDINCREG (0x0b, 1)},
301     {"ld8.a.nta",       LDINCREG (0x0b, 3)},
302     {"ld1.sa",          LDINCREG (0x0c, 0)},
303     {"ld1.sa.nt1",      LDINCREG (0x0c, 1)},
304     {"ld1.sa.nta",      LDINCREG (0x0c, 3)},
305     {"ld2.sa",          LDINCREG (0x0d, 0)},
306     {"ld2.sa.nt1",      LDINCREG (0x0d, 1)},
307     {"ld2.sa.nta",      LDINCREG (0x0d, 3)},
308     {"ld4.sa",          LDINCREG (0x0e, 0)},
309     {"ld4.sa.nt1",      LDINCREG (0x0e, 1)},
310     {"ld4.sa.nta",      LDINCREG (0x0e, 3)},
311     {"ld8.sa",          LDINCREG (0x0f, 0)},
312     {"ld8.sa.nt1",      LDINCREG (0x0f, 1)},
313     {"ld8.sa.nta",      LDINCREG (0x0f, 3)},
314     {"ld1.bias",        LDINCREG (0x10, 0)},
315     {"ld1.bias.nt1",    LDINCREG (0x10, 1)},
316     {"ld1.bias.nta",    LDINCREG (0x10, 3)},
317     {"ld2.bias",        LDINCREG (0x11, 0)},
318     {"ld2.bias.nt1",    LDINCREG (0x11, 1)},
319     {"ld2.bias.nta",    LDINCREG (0x11, 3)},
320     {"ld4.bias",        LDINCREG (0x12, 0)},
321     {"ld4.bias.nt1",    LDINCREG (0x12, 1)},
322     {"ld4.bias.nta",    LDINCREG (0x12, 3)},
323     {"ld8.bias",        LDINCREG (0x13, 0)},
324     {"ld8.bias.nt1",    LDINCREG (0x13, 1)},
325     {"ld8.bias.nta",    LDINCREG (0x13, 3)},
326     {"ld1.acq",         LDINCREG (0x14, 0)},
327     {"ld1.acq.nt1",     LDINCREG (0x14, 1)},
328     {"ld1.acq.nta",     LDINCREG (0x14, 3)},
329     {"ld2.acq",         LDINCREG (0x15, 0)},
330     {"ld2.acq.nt1",     LDINCREG (0x15, 1)},
331     {"ld2.acq.nta",     LDINCREG (0x15, 3)},
332     {"ld4.acq",         LDINCREG (0x16, 0)},
333     {"ld4.acq.nt1",     LDINCREG (0x16, 1)},
334     {"ld4.acq.nta",     LDINCREG (0x16, 3)},
335     {"ld8.acq",         LDINCREG (0x17, 0)},
336     {"ld8.acq.nt1",     LDINCREG (0x17, 1)},
337     {"ld8.acq.nta",     LDINCREG (0x17, 3)},
338     {"ld8.fill",        LDINCREG (0x1b, 0)},
339     {"ld8.fill.nt1",    LDINCREG (0x1b, 1)},
340     {"ld8.fill.nta",    LDINCREG (0x1b, 3)},
341     {"ld1.c.clr",       LDINCREG (0x20, 0)},
342     {"ld1.c.clr.nt1",   LDINCREG (0x20, 1)},
343     {"ld1.c.clr.nta",   LDINCREG (0x20, 3)},
344     {"ld2.c.clr",       LDINCREG (0x21, 0)},
345     {"ld2.c.clr.nt1",   LDINCREG (0x21, 1)},
346     {"ld2.c.clr.nta",   LDINCREG (0x21, 3)},
347     {"ld4.c.clr",       LDINCREG (0x22, 0)},
348     {"ld4.c.clr.nt1",   LDINCREG (0x22, 1)},
349     {"ld4.c.clr.nta",   LDINCREG (0x22, 3)},
350     {"ld8.c.clr",       LDINCREG (0x23, 0)},
351     {"ld8.c.clr.nt1",   LDINCREG (0x23, 1)},
352     {"ld8.c.clr.nta",   LDINCREG (0x23, 3)},
353     {"ld1.c.nc",        LDINCREG (0x24, 0)},
354     {"ld1.c.nc.nt1",    LDINCREG (0x24, 1)},
355     {"ld1.c.nc.nta",    LDINCREG (0x24, 3)},
356     {"ld2.c.nc",        LDINCREG (0x25, 0)},
357     {"ld2.c.nc.nt1",    LDINCREG (0x25, 1)},
358     {"ld2.c.nc.nta",    LDINCREG (0x25, 3)},
359     {"ld4.c.nc",        LDINCREG (0x26, 0)},
360     {"ld4.c.nc.nt1",    LDINCREG (0x26, 1)},
361     {"ld4.c.nc.nta",    LDINCREG (0x26, 3)},
362     {"ld8.c.nc",        LDINCREG (0x27, 0)},
363     {"ld8.c.nc.nt1",    LDINCREG (0x27, 1)},
364     {"ld8.c.nc.nta",    LDINCREG (0x27, 3)},
365     {"ld1.c.clr.acq",     LDINCREG (0x28, 0)},
366     {"ld1.c.clr.acq.nt1", LDINCREG (0x28, 1)},
367     {"ld1.c.clr.acq.nta", LDINCREG (0x28, 3)},
368     {"ld2.c.clr.acq",     LDINCREG (0x29, 0)},
369     {"ld2.c.clr.acq.nt1", LDINCREG (0x29, 1)},
370     {"ld2.c.clr.acq.nta", LDINCREG (0x29, 3)},
371     {"ld4.c.clr.acq",     LDINCREG (0x2a, 0)},
372     {"ld4.c.clr.acq.nt1", LDINCREG (0x2a, 1)},
373     {"ld4.c.clr.acq.nta", LDINCREG (0x2a, 3)},
374     {"ld8.c.clr.acq",     LDINCREG (0x2b, 0)},
375     {"ld8.c.clr.acq.nt1", LDINCREG (0x2b, 1)},
376     {"ld8.c.clr.acq.nta", LDINCREG (0x2b, 3)},
377 #undef LDINCREG
378
379     {"st1",             M, OpMXX6aHint (4, 0, 0, 0x30, 0), {MR3, R2}},
380     {"st1.nta",         M, OpMXX6aHint (4, 0, 0, 0x30, 3), {MR3, R2}},
381     {"st2",             M, OpMXX6aHint (4, 0, 0, 0x31, 0), {MR3, R2}},
382     {"st2.nta",         M, OpMXX6aHint (4, 0, 0, 0x31, 3), {MR3, R2}},
383     {"st4",             M, OpMXX6aHint (4, 0, 0, 0x32, 0), {MR3, R2}},
384     {"st4.nta",         M, OpMXX6aHint (4, 0, 0, 0x32, 3), {MR3, R2}},
385     {"st8",             M, OpMXX6aHint (4, 0, 0, 0x33, 0), {MR3, R2}},
386     {"st8.nta",         M, OpMXX6aHint (4, 0, 0, 0x33, 3), {MR3, R2}},
387     {"st1.rel",         M, OpMXX6aHint (4, 0, 0, 0x34, 0), {MR3, R2}},
388     {"st1.rel.nta",     M, OpMXX6aHint (4, 0, 0, 0x34, 3), {MR3, R2}},
389     {"st2.rel",         M, OpMXX6aHint (4, 0, 0, 0x35, 0), {MR3, R2}},
390     {"st2.rel.nta",     M, OpMXX6aHint (4, 0, 0, 0x35, 3), {MR3, R2}},
391     {"st4.rel",         M, OpMXX6aHint (4, 0, 0, 0x36, 0), {MR3, R2}},
392     {"st4.rel.nta",     M, OpMXX6aHint (4, 0, 0, 0x36, 3), {MR3, R2}},
393     {"st8.rel",         M, OpMXX6aHint (4, 0, 0, 0x37, 0), {MR3, R2}},
394     {"st8.rel.nta",     M, OpMXX6aHint (4, 0, 0, 0x37, 3), {MR3, R2}},
395     {"st8.spill",       M, OpMXX6aHint (4, 0, 0, 0x3b, 0), {MR3, R2}},
396     {"st8.spill.nta",   M, OpMXX6aHint (4, 0, 0, 0x3b, 3), {MR3, R2}},
397
398 #define CMPXCHG(c,h)    M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2, AR_CCV}
399     {"cmpxchg1.acq",            CMPXCHG (0x00, 0)},
400     {"cmpxchg1.acq.nt1",        CMPXCHG (0x00, 1)},
401     {"cmpxchg1.acq.nta",        CMPXCHG (0x00, 3)},
402     {"cmpxchg2.acq",            CMPXCHG (0x01, 0)},
403     {"cmpxchg2.acq.nt1",        CMPXCHG (0x01, 1)},
404     {"cmpxchg2.acq.nta",        CMPXCHG (0x01, 3)},
405     {"cmpxchg4.acq",            CMPXCHG (0x02, 0)},
406     {"cmpxchg4.acq.nt1",        CMPXCHG (0x02, 1)},
407     {"cmpxchg4.acq.nta",        CMPXCHG (0x02, 3)},
408     {"cmpxchg8.acq",            CMPXCHG (0x03, 0)},
409     {"cmpxchg8.acq.nt1",        CMPXCHG (0x03, 1)},
410     {"cmpxchg8.acq.nta",        CMPXCHG (0x03, 3)},
411     {"cmpxchg1.rel",            CMPXCHG (0x04, 0)},
412     {"cmpxchg1.rel.nt1",        CMPXCHG (0x04, 1)},
413     {"cmpxchg1.rel.nta",        CMPXCHG (0x04, 3)},
414     {"cmpxchg2.rel",            CMPXCHG (0x05, 0)},
415     {"cmpxchg2.rel.nt1",        CMPXCHG (0x05, 1)},
416     {"cmpxchg2.rel.nta",        CMPXCHG (0x05, 3)},
417     {"cmpxchg4.rel",            CMPXCHG (0x06, 0)},
418     {"cmpxchg4.rel.nt1",        CMPXCHG (0x06, 1)},
419     {"cmpxchg4.rel.nta",        CMPXCHG (0x06, 3)},
420     {"cmpxchg8.rel",            CMPXCHG (0x07, 0)},
421     {"cmpxchg8.rel.nt1",        CMPXCHG (0x07, 1)},
422     {"cmpxchg8.rel.nta",        CMPXCHG (0x07, 3)},
423 #undef CMPXCHG
424     {"xchg1",             M, OpMXX6aHint (4, 0, 1, 0x08, 0), {R1, MR3, R2}},
425     {"xchg1.nt1",         M, OpMXX6aHint (4, 0, 1, 0x08, 1), {R1, MR3, R2}},
426     {"xchg1.nta",         M, OpMXX6aHint (4, 0, 1, 0x08, 3), {R1, MR3, R2}},
427     {"xchg2",             M, OpMXX6aHint (4, 0, 1, 0x09, 0), {R1, MR3, R2}},
428     {"xchg2.nt1",         M, OpMXX6aHint (4, 0, 1, 0x09, 1), {R1, MR3, R2}},
429     {"xchg2.nta",         M, OpMXX6aHint (4, 0, 1, 0x09, 3), {R1, MR3, R2}},
430     {"xchg4",             M, OpMXX6aHint (4, 0, 1, 0x0a, 0), {R1, MR3, R2}},
431     {"xchg4.nt1",         M, OpMXX6aHint (4, 0, 1, 0x0a, 1), {R1, MR3, R2}},
432     {"xchg4.nta",         M, OpMXX6aHint (4, 0, 1, 0x0a, 3), {R1, MR3, R2}},
433     {"xchg8",             M, OpMXX6aHint (4, 0, 1, 0x0b, 0), {R1, MR3, R2}},
434     {"xchg8.nt1",         M, OpMXX6aHint (4, 0, 1, 0x0b, 1), {R1, MR3, R2}},
435     {"xchg8.nta",         M, OpMXX6aHint (4, 0, 1, 0x0b, 3), {R1, MR3, R2}},
436
437     {"fetchadd4.acq",     M, OpMXX6aHint (4, 0, 1, 0x12, 0), {R1, MR3, INC3}},
438     {"fetchadd4.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x12, 1), {R1, MR3, INC3}},
439     {"fetchadd4.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x12, 3), {R1, MR3, INC3}},
440     {"fetchadd8.acq",     M, OpMXX6aHint (4, 0, 1, 0x13, 0), {R1, MR3, INC3}},
441     {"fetchadd8.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x13, 1), {R1, MR3, INC3}},
442     {"fetchadd8.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x13, 3), {R1, MR3, INC3}},
443     {"fetchadd4.rel",     M, OpMXX6aHint (4, 0, 1, 0x16, 0), {R1, MR3, INC3}},
444     {"fetchadd4.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x16, 1), {R1, MR3, INC3}},
445     {"fetchadd4.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x16, 3), {R1, MR3, INC3}},
446     {"fetchadd8.rel",     M, OpMXX6aHint (4, 0, 1, 0x17, 0), {R1, MR3, INC3}},
447     {"fetchadd8.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x17, 1), {R1, MR3, INC3}},
448     {"fetchadd8.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x17, 3), {R1, MR3, INC3}},
449
450     {"getf.sig",          M, OpMXX6a (4, 0, 1, 0x1c), {R1, F2}},
451     {"getf.exp",          M, OpMXX6a (4, 0, 1, 0x1d), {R1, F2}},
452     {"getf.s",            M, OpMXX6a (4, 0, 1, 0x1e), {R1, F2}},
453     {"getf.d",            M, OpMXX6a (4, 0, 1, 0x1f), {R1, F2}},
454
455     /* integer load w/increment by immediate */
456 #define LDINCIMMED(c,h) M, OpX6aHint (5, c, h), {R1, MR3, IMM9b}, POSTINC
457     {"ld1",             LDINCIMMED (0x00, 0)},
458     {"ld1.nt1",         LDINCIMMED (0x00, 1)},
459     {"ld1.nta",         LDINCIMMED (0x00, 3)},
460     {"ld2",             LDINCIMMED (0x01, 0)},
461     {"ld2.nt1",         LDINCIMMED (0x01, 1)},
462     {"ld2.nta",         LDINCIMMED (0x01, 3)},
463     {"ld4",             LDINCIMMED (0x02, 0)},
464     {"ld4.nt1",         LDINCIMMED (0x02, 1)},
465     {"ld4.nta",         LDINCIMMED (0x02, 3)},
466     {"ld8",             LDINCIMMED (0x03, 0)},
467     {"ld8.nt1",         LDINCIMMED (0x03, 1)},
468     {"ld8.nta",         LDINCIMMED (0x03, 3)},
469     {"ld1.s",           LDINCIMMED (0x04, 0)},
470     {"ld1.s.nt1",       LDINCIMMED (0x04, 1)},
471     {"ld1.s.nta",       LDINCIMMED (0x04, 3)},
472     {"ld2.s",           LDINCIMMED (0x05, 0)},
473     {"ld2.s.nt1",       LDINCIMMED (0x05, 1)},
474     {"ld2.s.nta",       LDINCIMMED (0x05, 3)},
475     {"ld4.s",           LDINCIMMED (0x06, 0)},
476     {"ld4.s.nt1",       LDINCIMMED (0x06, 1)},
477     {"ld4.s.nta",       LDINCIMMED (0x06, 3)},
478     {"ld8.s",           LDINCIMMED (0x07, 0)},
479     {"ld8.s.nt1",       LDINCIMMED (0x07, 1)},
480     {"ld8.s.nta",       LDINCIMMED (0x07, 3)},
481     {"ld1.a",           LDINCIMMED (0x08, 0)},
482     {"ld1.a.nt1",       LDINCIMMED (0x08, 1)},
483     {"ld1.a.nta",       LDINCIMMED (0x08, 3)},
484     {"ld2.a",           LDINCIMMED (0x09, 0)},
485     {"ld2.a.nt1",       LDINCIMMED (0x09, 1)},
486     {"ld2.a.nta",       LDINCIMMED (0x09, 3)},
487     {"ld4.a",           LDINCIMMED (0x0a, 0)},
488     {"ld4.a.nt1",       LDINCIMMED (0x0a, 1)},
489     {"ld4.a.nta",       LDINCIMMED (0x0a, 3)},
490     {"ld8.a",           LDINCIMMED (0x0b, 0)},
491     {"ld8.a.nt1",       LDINCIMMED (0x0b, 1)},
492     {"ld8.a.nta",       LDINCIMMED (0x0b, 3)},
493     {"ld1.sa",          LDINCIMMED (0x0c, 0)},
494     {"ld1.sa.nt1",      LDINCIMMED (0x0c, 1)},
495     {"ld1.sa.nta",      LDINCIMMED (0x0c, 3)},
496     {"ld2.sa",          LDINCIMMED (0x0d, 0)},
497     {"ld2.sa.nt1",      LDINCIMMED (0x0d, 1)},
498     {"ld2.sa.nta",      LDINCIMMED (0x0d, 3)},
499     {"ld4.sa",          LDINCIMMED (0x0e, 0)},
500     {"ld4.sa.nt1",      LDINCIMMED (0x0e, 1)},
501     {"ld4.sa.nta",      LDINCIMMED (0x0e, 3)},
502     {"ld8.sa",          LDINCIMMED (0x0f, 0)},
503     {"ld8.sa.nt1",      LDINCIMMED (0x0f, 1)},
504     {"ld8.sa.nta",      LDINCIMMED (0x0f, 3)},
505     {"ld1.bias",        LDINCIMMED (0x10, 0)},
506     {"ld1.bias.nt1",    LDINCIMMED (0x10, 1)},
507     {"ld1.bias.nta",    LDINCIMMED (0x10, 3)},
508     {"ld2.bias",        LDINCIMMED (0x11, 0)},
509     {"ld2.bias.nt1",    LDINCIMMED (0x11, 1)},
510     {"ld2.bias.nta",    LDINCIMMED (0x11, 3)},
511     {"ld4.bias",        LDINCIMMED (0x12, 0)},
512     {"ld4.bias.nt1",    LDINCIMMED (0x12, 1)},
513     {"ld4.bias.nta",    LDINCIMMED (0x12, 3)},
514     {"ld8.bias",        LDINCIMMED (0x13, 0)},
515     {"ld8.bias.nt1",    LDINCIMMED (0x13, 1)},
516     {"ld8.bias.nta",    LDINCIMMED (0x13, 3)},
517     {"ld1.acq",         LDINCIMMED (0x14, 0)},
518     {"ld1.acq.nt1",     LDINCIMMED (0x14, 1)},
519     {"ld1.acq.nta",     LDINCIMMED (0x14, 3)},
520     {"ld2.acq",         LDINCIMMED (0x15, 0)},
521     {"ld2.acq.nt1",     LDINCIMMED (0x15, 1)},
522     {"ld2.acq.nta",     LDINCIMMED (0x15, 3)},
523     {"ld4.acq",         LDINCIMMED (0x16, 0)},
524     {"ld4.acq.nt1",     LDINCIMMED (0x16, 1)},
525     {"ld4.acq.nta",     LDINCIMMED (0x16, 3)},
526     {"ld8.acq",         LDINCIMMED (0x17, 0)},
527     {"ld8.acq.nt1",     LDINCIMMED (0x17, 1)},
528     {"ld8.acq.nta",     LDINCIMMED (0x17, 3)},
529     {"ld8.fill",        LDINCIMMED (0x1b, 0)},
530     {"ld8.fill.nt1",    LDINCIMMED (0x1b, 1)},
531     {"ld8.fill.nta",    LDINCIMMED (0x1b, 3)},
532     {"ld1.c.clr",       LDINCIMMED (0x20, 0)},
533     {"ld1.c.clr.nt1",   LDINCIMMED (0x20, 1)},
534     {"ld1.c.clr.nta",   LDINCIMMED (0x20, 3)},
535     {"ld2.c.clr",       LDINCIMMED (0x21, 0)},
536     {"ld2.c.clr.nt1",   LDINCIMMED (0x21, 1)},
537     {"ld2.c.clr.nta",   LDINCIMMED (0x21, 3)},
538     {"ld4.c.clr",       LDINCIMMED (0x22, 0)},
539     {"ld4.c.clr.nt1",   LDINCIMMED (0x22, 1)},
540     {"ld4.c.clr.nta",   LDINCIMMED (0x22, 3)},
541     {"ld8.c.clr",       LDINCIMMED (0x23, 0)},
542     {"ld8.c.clr.nt1",   LDINCIMMED (0x23, 1)},
543     {"ld8.c.clr.nta",   LDINCIMMED (0x23, 3)},
544     {"ld1.c.nc",        LDINCIMMED (0x24, 0)},
545     {"ld1.c.nc.nt1",    LDINCIMMED (0x24, 1)},
546     {"ld1.c.nc.nta",    LDINCIMMED (0x24, 3)},
547     {"ld2.c.nc",        LDINCIMMED (0x25, 0)},
548     {"ld2.c.nc.nt1",    LDINCIMMED (0x25, 1)},
549     {"ld2.c.nc.nta",    LDINCIMMED (0x25, 3)},
550     {"ld4.c.nc",        LDINCIMMED (0x26, 0)},
551     {"ld4.c.nc.nt1",    LDINCIMMED (0x26, 1)},
552     {"ld4.c.nc.nta",    LDINCIMMED (0x26, 3)},
553     {"ld8.c.nc",        LDINCIMMED (0x27, 0)},
554     {"ld8.c.nc.nt1",    LDINCIMMED (0x27, 1)},
555     {"ld8.c.nc.nta",    LDINCIMMED (0x27, 3)},
556     {"ld1.c.clr.acq",     LDINCIMMED (0x28, 0)},
557     {"ld1.c.clr.acq.nt1", LDINCIMMED (0x28, 1)},
558     {"ld1.c.clr.acq.nta", LDINCIMMED (0x28, 3)},
559     {"ld2.c.clr.acq",     LDINCIMMED (0x29, 0)},
560     {"ld2.c.clr.acq.nt1", LDINCIMMED (0x29, 1)},
561     {"ld2.c.clr.acq.nta", LDINCIMMED (0x29, 3)},
562     {"ld4.c.clr.acq",     LDINCIMMED (0x2a, 0)},
563     {"ld4.c.clr.acq.nt1", LDINCIMMED (0x2a, 1)},
564     {"ld4.c.clr.acq.nta", LDINCIMMED (0x2a, 3)},
565     {"ld8.c.clr.acq",     LDINCIMMED (0x2b, 0)},
566     {"ld8.c.clr.acq.nt1", LDINCIMMED (0x2b, 1)},
567     {"ld8.c.clr.acq.nta", LDINCIMMED (0x2b, 3)},
568 #undef LDINCIMMED
569
570     /* store w/increment by immediate */
571 #define STINCIMMED(c,h) M, OpX6aHint (5, c, h), {MR3, R2, IMM9a}, POSTINC
572     {"st1",             STINCIMMED (0x30, 0)},
573     {"st1.nta",         STINCIMMED (0x30, 3)},
574     {"st2",             STINCIMMED (0x31, 0)},
575     {"st2.nta",         STINCIMMED (0x31, 3)},
576     {"st4",             STINCIMMED (0x32, 0)},
577     {"st4.nta",         STINCIMMED (0x32, 3)},
578     {"st8",             STINCIMMED (0x33, 0)},
579     {"st8.nta",         STINCIMMED (0x33, 3)},
580     {"st1.rel",         STINCIMMED (0x34, 0)},
581     {"st1.rel.nta",     STINCIMMED (0x34, 3)},
582     {"st2.rel",         STINCIMMED (0x35, 0)},
583     {"st2.rel.nta",     STINCIMMED (0x35, 3)},
584     {"st4.rel",         STINCIMMED (0x36, 0)},
585     {"st4.rel.nta",     STINCIMMED (0x36, 3)},
586     {"st8.rel",         STINCIMMED (0x37, 0)},
587     {"st8.rel.nta",     STINCIMMED (0x37, 3)},
588     {"st8.spill",       STINCIMMED (0x3b, 0)},
589     {"st8.spill.nta",   STINCIMMED (0x3b, 3)},
590 #undef STINCIMMED
591
592     /* floating-point load */
593     {"ldfs",            M, OpMXX6aHint (6, 0, 0, 0x02, 0), {F1, MR3}},
594     {"ldfs.nt1",        M, OpMXX6aHint (6, 0, 0, 0x02, 1), {F1, MR3}},
595     {"ldfs.nta",        M, OpMXX6aHint (6, 0, 0, 0x02, 3), {F1, MR3}},
596     {"ldfd",            M, OpMXX6aHint (6, 0, 0, 0x03, 0), {F1, MR3}},
597     {"ldfd.nt1",        M, OpMXX6aHint (6, 0, 0, 0x03, 1), {F1, MR3}},
598     {"ldfd.nta",        M, OpMXX6aHint (6, 0, 0, 0x03, 3), {F1, MR3}},
599     {"ldf8",            M, OpMXX6aHint (6, 0, 0, 0x01, 0), {F1, MR3}},
600     {"ldf8.nt1",        M, OpMXX6aHint (6, 0, 0, 0x01, 1), {F1, MR3}},
601     {"ldf8.nta",        M, OpMXX6aHint (6, 0, 0, 0x01, 3), {F1, MR3}},
602     {"ldfe",            M, OpMXX6aHint (6, 0, 0, 0x00, 0), {F1, MR3}},
603     {"ldfe.nt1",        M, OpMXX6aHint (6, 0, 0, 0x00, 1), {F1, MR3}},
604     {"ldfe.nta",        M, OpMXX6aHint (6, 0, 0, 0x00, 3), {F1, MR3}},
605     {"ldfs.s",          M, OpMXX6aHint (6, 0, 0, 0x06, 0), {F1, MR3}},
606     {"ldfs.s.nt1",      M, OpMXX6aHint (6, 0, 0, 0x06, 1), {F1, MR3}},
607     {"ldfs.s.nta",      M, OpMXX6aHint (6, 0, 0, 0x06, 3), {F1, MR3}},
608     {"ldfd.s",          M, OpMXX6aHint (6, 0, 0, 0x07, 0), {F1, MR3}},
609     {"ldfd.s.nt1",      M, OpMXX6aHint (6, 0, 0, 0x07, 1), {F1, MR3}},
610     {"ldfd.s.nta",      M, OpMXX6aHint (6, 0, 0, 0x07, 3), {F1, MR3}},
611     {"ldf8.s",          M, OpMXX6aHint (6, 0, 0, 0x05, 0), {F1, MR3}},
612     {"ldf8.s.nt1",      M, OpMXX6aHint (6, 0, 0, 0x05, 1), {F1, MR3}},
613     {"ldf8.s.nta",      M, OpMXX6aHint (6, 0, 0, 0x05, 3), {F1, MR3}},
614     {"ldfe.s",          M, OpMXX6aHint (6, 0, 0, 0x04, 0), {F1, MR3}},
615     {"ldfe.s.nt1",      M, OpMXX6aHint (6, 0, 0, 0x04, 1), {F1, MR3}},
616     {"ldfe.s.nta",      M, OpMXX6aHint (6, 0, 0, 0x04, 3), {F1, MR3}},
617     {"ldfs.a",          M, OpMXX6aHint (6, 0, 0, 0x0a, 0), {F1, MR3}},
618     {"ldfs.a.nt1",      M, OpMXX6aHint (6, 0, 0, 0x0a, 1), {F1, MR3}},
619     {"ldfs.a.nta",      M, OpMXX6aHint (6, 0, 0, 0x0a, 3), {F1, MR3}},
620     {"ldfd.a",          M, OpMXX6aHint (6, 0, 0, 0x0b, 0), {F1, MR3}},
621     {"ldfd.a.nt1",      M, OpMXX6aHint (6, 0, 0, 0x0b, 1), {F1, MR3}},
622     {"ldfd.a.nta",      M, OpMXX6aHint (6, 0, 0, 0x0b, 3), {F1, MR3}},
623     {"ldf8.a",          M, OpMXX6aHint (6, 0, 0, 0x09, 0), {F1, MR3}},
624     {"ldf8.a.nt1",      M, OpMXX6aHint (6, 0, 0, 0x09, 1), {F1, MR3}},
625     {"ldf8.a.nta",      M, OpMXX6aHint (6, 0, 0, 0x09, 3), {F1, MR3}},
626     {"ldfe.a",          M, OpMXX6aHint (6, 0, 0, 0x08, 0), {F1, MR3}},
627     {"ldfe.a.nt1",      M, OpMXX6aHint (6, 0, 0, 0x08, 1), {F1, MR3}},
628     {"ldfe.a.nta",      M, OpMXX6aHint (6, 0, 0, 0x08, 3), {F1, MR3}},
629     {"ldfs.sa",         M, OpMXX6aHint (6, 0, 0, 0x0e, 0), {F1, MR3}},
630     {"ldfs.sa.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0e, 1), {F1, MR3}},
631     {"ldfs.sa.nta",     M, OpMXX6aHint (6, 0, 0, 0x0e, 3), {F1, MR3}},
632     {"ldfd.sa",         M, OpMXX6aHint (6, 0, 0, 0x0f, 0), {F1, MR3}},
633     {"ldfd.sa.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0f, 1), {F1, MR3}},
634     {"ldfd.sa.nta",     M, OpMXX6aHint (6, 0, 0, 0x0f, 3), {F1, MR3}},
635     {"ldf8.sa",         M, OpMXX6aHint (6, 0, 0, 0x0d, 0), {F1, MR3}},
636     {"ldf8.sa.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0d, 1), {F1, MR3}},
637     {"ldf8.sa.nta",     M, OpMXX6aHint (6, 0, 0, 0x0d, 3), {F1, MR3}},
638     {"ldfe.sa",         M, OpMXX6aHint (6, 0, 0, 0x0c, 0), {F1, MR3}},
639     {"ldfe.sa.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0c, 1), {F1, MR3}},
640     {"ldfe.sa.nta",     M, OpMXX6aHint (6, 0, 0, 0x0c, 3), {F1, MR3}},
641     {"ldf.fill",        M, OpMXX6aHint (6, 0, 0, 0x1b, 0), {F1, MR3}},
642     {"ldf.fill.nt1",    M, OpMXX6aHint (6, 0, 0, 0x1b, 1), {F1, MR3}},
643     {"ldf.fill.nta",    M, OpMXX6aHint (6, 0, 0, 0x1b, 3), {F1, MR3}},
644     {"ldfs.c.clr",      M, OpMXX6aHint (6, 0, 0, 0x22, 0), {F1, MR3}},
645     {"ldfs.c.clr.nt1",  M, OpMXX6aHint (6, 0, 0, 0x22, 1), {F1, MR3}},
646     {"ldfs.c.clr.nta",  M, OpMXX6aHint (6, 0, 0, 0x22, 3), {F1, MR3}},
647     {"ldfd.c.clr",      M, OpMXX6aHint (6, 0, 0, 0x23, 0), {F1, MR3}},
648     {"ldfd.c.clr.nt1",  M, OpMXX6aHint (6, 0, 0, 0x23, 1), {F1, MR3}},
649     {"ldfd.c.clr.nta",  M, OpMXX6aHint (6, 0, 0, 0x23, 3), {F1, MR3}},
650     {"ldf8.c.clr",      M, OpMXX6aHint (6, 0, 0, 0x21, 0), {F1, MR3}},
651     {"ldf8.c.clr.nt1",  M, OpMXX6aHint (6, 0, 0, 0x21, 1), {F1, MR3}},
652     {"ldf8.c.clr.nta",  M, OpMXX6aHint (6, 0, 0, 0x21, 3), {F1, MR3}},
653     {"ldfe.c.clr",      M, OpMXX6aHint (6, 0, 0, 0x20, 0), {F1, MR3}},
654     {"ldfe.c.clr.nt1",  M, OpMXX6aHint (6, 0, 0, 0x20, 1), {F1, MR3}},
655     {"ldfe.c.clr.nta",  M, OpMXX6aHint (6, 0, 0, 0x20, 3), {F1, MR3}},
656     {"ldfs.c.nc",       M, OpMXX6aHint (6, 0, 0, 0x26, 0), {F1, MR3}},
657     {"ldfs.c.nc.nt1",   M, OpMXX6aHint (6, 0, 0, 0x26, 1), {F1, MR3}},
658     {"ldfs.c.nc.nta",   M, OpMXX6aHint (6, 0, 0, 0x26, 3), {F1, MR3}},
659     {"ldfd.c.nc",       M, OpMXX6aHint (6, 0, 0, 0x27, 0), {F1, MR3}},
660     {"ldfd.c.nc.nt1",   M, OpMXX6aHint (6, 0, 0, 0x27, 1), {F1, MR3}},
661     {"ldfd.c.nc.nta",   M, OpMXX6aHint (6, 0, 0, 0x27, 3), {F1, MR3}},
662     {"ldf8.c.nc",       M, OpMXX6aHint (6, 0, 0, 0x25, 0), {F1, MR3}},
663     {"ldf8.c.nc.nt1",   M, OpMXX6aHint (6, 0, 0, 0x25, 1), {F1, MR3}},
664     {"ldf8.c.nc.nta",   M, OpMXX6aHint (6, 0, 0, 0x25, 3), {F1, MR3}},
665     {"ldfe.c.nc",       M, OpMXX6aHint (6, 0, 0, 0x24, 0), {F1, MR3}},
666     {"ldfe.c.nc.nt1",   M, OpMXX6aHint (6, 0, 0, 0x24, 1), {F1, MR3}},
667     {"ldfe.c.nc.nta",   M, OpMXX6aHint (6, 0, 0, 0x24, 3), {F1, MR3}},
668
669     /* floating-point load w/increment by register */
670 #define FLDINCREG(c,h) M, OpMXX6aHint (6, 1, 0, c, h), {F1, MR3, R2}, POSTINC
671     {"ldfs",            FLDINCREG (0x02, 0)},
672     {"ldfs.nt1",        FLDINCREG (0x02, 1)},
673     {"ldfs.nta",        FLDINCREG (0x02, 3)},
674     {"ldfd",            FLDINCREG (0x03, 0)},
675     {"ldfd.nt1",        FLDINCREG (0x03, 1)},
676     {"ldfd.nta",        FLDINCREG (0x03, 3)},
677     {"ldf8",            FLDINCREG (0x01, 0)},
678     {"ldf8.nt1",        FLDINCREG (0x01, 1)},
679     {"ldf8.nta",        FLDINCREG (0x01, 3)},
680     {"ldfe",            FLDINCREG (0x00, 0)},
681     {"ldfe.nt1",        FLDINCREG (0x00, 1)},
682     {"ldfe.nta",        FLDINCREG (0x00, 3)},
683     {"ldfs.s",          FLDINCREG (0x06, 0)},
684     {"ldfs.s.nt1",      FLDINCREG (0x06, 1)},
685     {"ldfs.s.nta",      FLDINCREG (0x06, 3)},
686     {"ldfd.s",          FLDINCREG (0x07, 0)},
687     {"ldfd.s.nt1",      FLDINCREG (0x07, 1)},
688     {"ldfd.s.nta",      FLDINCREG (0x07, 3)},
689     {"ldf8.s",          FLDINCREG (0x05, 0)},
690     {"ldf8.s.nt1",      FLDINCREG (0x05, 1)},
691     {"ldf8.s.nta",      FLDINCREG (0x05, 3)},
692     {"ldfe.s",          FLDINCREG (0x04, 0)},
693     {"ldfe.s.nt1",      FLDINCREG (0x04, 1)},
694     {"ldfe.s.nta",      FLDINCREG (0x04, 3)},
695     {"ldfs.a",          FLDINCREG (0x0a, 0)},
696     {"ldfs.a.nt1",      FLDINCREG (0x0a, 1)},
697     {"ldfs.a.nta",      FLDINCREG (0x0a, 3)},
698     {"ldfd.a",          FLDINCREG (0x0b, 0)},
699     {"ldfd.a.nt1",      FLDINCREG (0x0b, 1)},
700     {"ldfd.a.nta",      FLDINCREG (0x0b, 3)},
701     {"ldf8.a",          FLDINCREG (0x09, 0)},
702     {"ldf8.a.nt1",      FLDINCREG (0x09, 1)},
703     {"ldf8.a.nta",      FLDINCREG (0x09, 3)},
704     {"ldfe.a",          FLDINCREG (0x08, 0)},
705     {"ldfe.a.nt1",      FLDINCREG (0x08, 1)},
706     {"ldfe.a.nta",      FLDINCREG (0x08, 3)},
707     {"ldfs.sa",         FLDINCREG (0x0e, 0)},
708     {"ldfs.sa.nt1",     FLDINCREG (0x0e, 1)},
709     {"ldfs.sa.nta",     FLDINCREG (0x0e, 3)},
710     {"ldfd.sa",         FLDINCREG (0x0f, 0)},
711     {"ldfd.sa.nt1",     FLDINCREG (0x0f, 1)},
712     {"ldfd.sa.nta",     FLDINCREG (0x0f, 3)},
713     {"ldf8.sa",         FLDINCREG (0x0d, 0)},
714     {"ldf8.sa.nt1",     FLDINCREG (0x0d, 1)},
715     {"ldf8.sa.nta",     FLDINCREG (0x0d, 3)},
716     {"ldfe.sa",         FLDINCREG (0x0c, 0)},
717     {"ldfe.sa.nt1",     FLDINCREG (0x0c, 1)},
718     {"ldfe.sa.nta",     FLDINCREG (0x0c, 3)},
719     {"ldf.fill",        FLDINCREG (0x1b, 0)},
720     {"ldf.fill.nt1",    FLDINCREG (0x1b, 1)},
721     {"ldf.fill.nta",    FLDINCREG (0x1b, 3)},
722     {"ldfs.c.clr",      FLDINCREG (0x22, 0)},
723     {"ldfs.c.clr.nt1",  FLDINCREG (0x22, 1)},
724     {"ldfs.c.clr.nta",  FLDINCREG (0x22, 3)},
725     {"ldfd.c.clr",      FLDINCREG (0x23, 0)},
726     {"ldfd.c.clr.nt1",  FLDINCREG (0x23, 1)},
727     {"ldfd.c.clr.nta",  FLDINCREG (0x23, 3)},
728     {"ldf8.c.clr",      FLDINCREG (0x21, 0)},
729     {"ldf8.c.clr.nt1",  FLDINCREG (0x21, 1)},
730     {"ldf8.c.clr.nta",  FLDINCREG (0x21, 3)},
731     {"ldfe.c.clr",      FLDINCREG (0x20, 0)},
732     {"ldfe.c.clr.nt1",  FLDINCREG (0x20, 1)},
733     {"ldfe.c.clr.nta",  FLDINCREG (0x20, 3)},
734     {"ldfs.c.nc",       FLDINCREG (0x26, 0)},
735     {"ldfs.c.nc.nt1",   FLDINCREG (0x26, 1)},
736     {"ldfs.c.nc.nta",   FLDINCREG (0x26, 3)},
737     {"ldfd.c.nc",       FLDINCREG (0x27, 0)},
738     {"ldfd.c.nc.nt1",   FLDINCREG (0x27, 1)},
739     {"ldfd.c.nc.nta",   FLDINCREG (0x27, 3)},
740     {"ldf8.c.nc",       FLDINCREG (0x25, 0)},
741     {"ldf8.c.nc.nt1",   FLDINCREG (0x25, 1)},
742     {"ldf8.c.nc.nta",   FLDINCREG (0x25, 3)},
743     {"ldfe.c.nc",       FLDINCREG (0x24, 0)},
744     {"ldfe.c.nc.nt1",   FLDINCREG (0x24, 1)},
745     {"ldfe.c.nc.nta",   FLDINCREG (0x24, 3)},
746 #undef FLDINCREG
747
748     /* floating-point store */
749     {"stfs",            M, OpMXX6aHint (6, 0, 0, 0x32, 0), {MR3, F2}},
750     {"stfs.nta",        M, OpMXX6aHint (6, 0, 0, 0x32, 3), {MR3, F2}},
751     {"stfd",            M, OpMXX6aHint (6, 0, 0, 0x33, 0), {MR3, F2}},
752     {"stfd.nta",        M, OpMXX6aHint (6, 0, 0, 0x33, 3), {MR3, F2}},
753     {"stf8",            M, OpMXX6aHint (6, 0, 0, 0x31, 0), {MR3, F2}},
754     {"stf8.nta",        M, OpMXX6aHint (6, 0, 0, 0x31, 3), {MR3, F2}},
755     {"stfe",            M, OpMXX6aHint (6, 0, 0, 0x30, 0), {MR3, F2}},
756     {"stfe.nta",        M, OpMXX6aHint (6, 0, 0, 0x30, 3), {MR3, F2}},
757     {"stf.spill",       M, OpMXX6aHint (6, 0, 0, 0x3b, 0), {MR3, F2}},
758     {"stf.spill.nta",   M, OpMXX6aHint (6, 0, 0, 0x3b, 3), {MR3, F2}},
759
760     /* floating-point load pair */
761     {"ldfps",           M2, OpMXX6aHint (6, 0, 1, 0x02, 0), {F1, F2, MR3}},
762     {"ldfps.nt1",       M2, OpMXX6aHint (6, 0, 1, 0x02, 1), {F1, F2, MR3}},
763     {"ldfps.nta",       M2, OpMXX6aHint (6, 0, 1, 0x02, 3), {F1, F2, MR3}},
764     {"ldfpd",           M2, OpMXX6aHint (6, 0, 1, 0x03, 0), {F1, F2, MR3}},
765     {"ldfpd.nt1",       M2, OpMXX6aHint (6, 0, 1, 0x03, 1), {F1, F2, MR3}},
766     {"ldfpd.nta",       M2, OpMXX6aHint (6, 0, 1, 0x03, 3), {F1, F2, MR3}},
767     {"ldfp8",           M2, OpMXX6aHint (6, 0, 1, 0x01, 0), {F1, F2, MR3}},
768     {"ldfp8.nt1",       M2, OpMXX6aHint (6, 0, 1, 0x01, 1), {F1, F2, MR3}},
769     {"ldfp8.nta",       M2, OpMXX6aHint (6, 0, 1, 0x01, 3), {F1, F2, MR3}},
770     {"ldfps.s",         M2, OpMXX6aHint (6, 0, 1, 0x06, 0), {F1, F2, MR3}},
771     {"ldfps.s.nt1",     M2, OpMXX6aHint (6, 0, 1, 0x06, 1), {F1, F2, MR3}},
772     {"ldfps.s.nta",     M2, OpMXX6aHint (6, 0, 1, 0x06, 3), {F1, F2, MR3}},
773     {"ldfpd.s",         M2, OpMXX6aHint (6, 0, 1, 0x07, 0), {F1, F2, MR3}},
774     {"ldfpd.s.nt1",     M2, OpMXX6aHint (6, 0, 1, 0x07, 1), {F1, F2, MR3}},
775     {"ldfpd.s.nta",     M2, OpMXX6aHint (6, 0, 1, 0x07, 3), {F1, F2, MR3}},
776     {"ldfp8.s",         M2, OpMXX6aHint (6, 0, 1, 0x05, 0), {F1, F2, MR3}},
777     {"ldfp8.s.nt1",     M2, OpMXX6aHint (6, 0, 1, 0x05, 1), {F1, F2, MR3}},
778     {"ldfp8.s.nta",     M2, OpMXX6aHint (6, 0, 1, 0x05, 3), {F1, F2, MR3}},
779     {"ldfps.a",         M2, OpMXX6aHint (6, 0, 1, 0x0a, 0), {F1, F2, MR3}},
780     {"ldfps.a.nt1",     M2, OpMXX6aHint (6, 0, 1, 0x0a, 1), {F1, F2, MR3}},
781     {"ldfps.a.nta",     M2, OpMXX6aHint (6, 0, 1, 0x0a, 3), {F1, F2, MR3}},
782     {"ldfpd.a",         M2, OpMXX6aHint (6, 0, 1, 0x0b, 0), {F1, F2, MR3}},
783     {"ldfpd.a.nt1",     M2, OpMXX6aHint (6, 0, 1, 0x0b, 1), {F1, F2, MR3}},
784     {"ldfpd.a.nta",     M2, OpMXX6aHint (6, 0, 1, 0x0b, 3), {F1, F2, MR3}},
785     {"ldfp8.a",         M2, OpMXX6aHint (6, 0, 1, 0x09, 0), {F1, F2, MR3}},
786     {"ldfp8.a.nt1",     M2, OpMXX6aHint (6, 0, 1, 0x09, 1), {F1, F2, MR3}},
787     {"ldfp8.a.nta",     M2, OpMXX6aHint (6, 0, 1, 0x09, 3), {F1, F2, MR3}},
788     {"ldfps.sa",        M2, OpMXX6aHint (6, 0, 1, 0x0e, 0), {F1, F2, MR3}},
789     {"ldfps.sa.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0e, 1), {F1, F2, MR3}},
790     {"ldfps.sa.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0e, 3), {F1, F2, MR3}},
791     {"ldfpd.sa",        M2, OpMXX6aHint (6, 0, 1, 0x0f, 0), {F1, F2, MR3}},
792     {"ldfpd.sa.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0f, 1), {F1, F2, MR3}},
793     {"ldfpd.sa.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0f, 3), {F1, F2, MR3}},
794     {"ldfp8.sa",        M2, OpMXX6aHint (6, 0, 1, 0x0d, 0), {F1, F2, MR3}},
795     {"ldfp8.sa.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0d, 1), {F1, F2, MR3}},
796     {"ldfp8.sa.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0d, 3), {F1, F2, MR3}},
797     {"ldfps.c.clr",     M2, OpMXX6aHint (6, 0, 1, 0x22, 0), {F1, F2, MR3}},
798     {"ldfps.c.clr.nt1", M2, OpMXX6aHint (6, 0, 1, 0x22, 1), {F1, F2, MR3}},
799     {"ldfps.c.clr.nta", M2, OpMXX6aHint (6, 0, 1, 0x22, 3), {F1, F2, MR3}},
800     {"ldfpd.c.clr",     M2, OpMXX6aHint (6, 0, 1, 0x23, 0), {F1, F2, MR3}},
801     {"ldfpd.c.clr.nt1", M2, OpMXX6aHint (6, 0, 1, 0x23, 1), {F1, F2, MR3}},
802     {"ldfpd.c.clr.nta", M2, OpMXX6aHint (6, 0, 1, 0x23, 3), {F1, F2, MR3}},
803     {"ldfp8.c.clr",     M2, OpMXX6aHint (6, 0, 1, 0x21, 0), {F1, F2, MR3}},
804     {"ldfp8.c.clr.nt1", M2, OpMXX6aHint (6, 0, 1, 0x21, 1), {F1, F2, MR3}},
805     {"ldfp8.c.clr.nta", M2, OpMXX6aHint (6, 0, 1, 0x21, 3), {F1, F2, MR3}},
806     {"ldfps.c.nc",      M2, OpMXX6aHint (6, 0, 1, 0x26, 0), {F1, F2, MR3}},
807     {"ldfps.c.nc.nt1",  M2, OpMXX6aHint (6, 0, 1, 0x26, 1), {F1, F2, MR3}},
808     {"ldfps.c.nc.nta",  M2, OpMXX6aHint (6, 0, 1, 0x26, 3), {F1, F2, MR3}},
809     {"ldfpd.c.nc",      M2, OpMXX6aHint (6, 0, 1, 0x27, 0), {F1, F2, MR3}},
810     {"ldfpd.c.nc.nt1",  M2, OpMXX6aHint (6, 0, 1, 0x27, 1), {F1, F2, MR3}},
811     {"ldfpd.c.nc.nta",  M2, OpMXX6aHint (6, 0, 1, 0x27, 3), {F1, F2, MR3}},
812     {"ldfp8.c.nc",      M2, OpMXX6aHint (6, 0, 1, 0x25, 0), {F1, F2, MR3}},
813     {"ldfp8.c.nc.nt1",  M2, OpMXX6aHint (6, 0, 1, 0x25, 1), {F1, F2, MR3}},
814     {"ldfp8.c.nc.nta",  M2, OpMXX6aHint (6, 0, 1, 0x25, 3), {F1, F2, MR3}},
815
816     /* floating-point load pair w/increment by immediate */
817 #define LD(a,b,c) M2, OpMXX6aHint (6, 1, 1, a, b), {F1, F2, MR3, c}, POSTINC
818     {"ldfps",           LD (0x02, 0, C8)},
819     {"ldfps.nt1",       LD (0x02, 1, C8)},
820     {"ldfps.nta",       LD (0x02, 3, C8)},
821     {"ldfpd",           LD (0x03, 0, C16)},
822     {"ldfpd.nt1",       LD (0x03, 1, C16)},
823     {"ldfpd.nta",       LD (0x03, 3, C16)},
824     {"ldfp8",           LD (0x01, 0, C16)},
825     {"ldfp8.nt1",       LD (0x01, 1, C16)},
826     {"ldfp8.nta",       LD (0x01, 3, C16)},
827     {"ldfps.s",         LD (0x06, 0, C8)},
828     {"ldfps.s.nt1",     LD (0x06, 1, C8)},
829     {"ldfps.s.nta",     LD (0x06, 3, C8)},
830     {"ldfpd.s",         LD (0x07, 0, C16)},
831     {"ldfpd.s.nt1",     LD (0x07, 1, C16)},
832     {"ldfpd.s.nta",     LD (0x07, 3, C16)},
833     {"ldfp8.s",         LD (0x05, 0, C16)},
834     {"ldfp8.s.nt1",     LD (0x05, 1, C16)},
835     {"ldfp8.s.nta",     LD (0x05, 3, C16)},
836     {"ldfps.a",         LD (0x0a, 0, C8)},
837     {"ldfps.a.nt1",     LD (0x0a, 1, C8)},
838     {"ldfps.a.nta",     LD (0x0a, 3, C8)},
839     {"ldfpd.a",         LD (0x0b, 0, C16)},
840     {"ldfpd.a.nt1",     LD (0x0b, 1, C16)},
841     {"ldfpd.a.nta",     LD (0x0b, 3, C16)},
842     {"ldfp8.a",         LD (0x09, 0, C16)},
843     {"ldfp8.a.nt1",     LD (0x09, 1, C16)},
844     {"ldfp8.a.nta",     LD (0x09, 3, C16)},
845     {"ldfps.sa",        LD (0x0e, 0, C8)},
846     {"ldfps.sa.nt1",    LD (0x0e, 1, C8)},
847     {"ldfps.sa.nta",    LD (0x0e, 3, C8)},
848     {"ldfpd.sa",        LD (0x0f, 0, C16)},
849     {"ldfpd.sa.nt1",    LD (0x0f, 1, C16)},
850     {"ldfpd.sa.nta",    LD (0x0f, 3, C16)},
851     {"ldfp8.sa",        LD (0x0d, 0, C16)},
852     {"ldfp8.sa.nt1",    LD (0x0d, 1, C16)},
853     {"ldfp8.sa.nta",    LD (0x0d, 3, C16)},
854     {"ldfps.c.clr",     LD (0x22, 0, C8)},
855     {"ldfps.c.clr.nt1", LD (0x22, 1, C8)},
856     {"ldfps.c.clr.nta", LD (0x22, 3, C8)},
857     {"ldfpd.c.clr",     LD (0x23, 0, C16)},
858     {"ldfpd.c.clr.nt1", LD (0x23, 1, C16)},
859     {"ldfpd.c.clr.nta", LD (0x23, 3, C16)},
860     {"ldfp8.c.clr",     LD (0x21, 0, C16)},
861     {"ldfp8.c.clr.nt1", LD (0x21, 1, C16)},
862     {"ldfp8.c.clr.nta", LD (0x21, 3, C16)},
863     {"ldfps.c.nc",      LD (0x26, 0, C8)},
864     {"ldfps.c.nc.nt1",  LD (0x26, 1, C8)},
865     {"ldfps.c.nc.nta",  LD (0x26, 3, C8)},
866     {"ldfpd.c.nc",      LD (0x27, 0, C16)},
867     {"ldfpd.c.nc.nt1",  LD (0x27, 1, C16)},
868     {"ldfpd.c.nc.nta",  LD (0x27, 3, C16)},
869     {"ldfp8.c.nc",      LD (0x25, 0, C16)},
870     {"ldfp8.c.nc.nt1",  LD (0x25, 1, C16)},
871     {"ldfp8.c.nc.nta",  LD (0x25, 3, C16)},
872 #undef LD
873
874     /* line prefetch */
875     {"lfetch",                  M0, OpMXX6aHint (6, 0, 0, 0x2c, 0), {MR3}},
876     {"lfetch.nt1",              M0, OpMXX6aHint (6, 0, 0, 0x2c, 1), {MR3}},
877     {"lfetch.nt2",              M0, OpMXX6aHint (6, 0, 0, 0x2c, 2), {MR3}},
878     {"lfetch.nta",              M0, OpMXX6aHint (6, 0, 0, 0x2c, 3), {MR3}},
879     {"lfetch.excl",             M0, OpMXX6aHint (6, 0, 0, 0x2d, 0), {MR3}},
880     {"lfetch.excl.nt1",         M0, OpMXX6aHint (6, 0, 0, 0x2d, 1), {MR3}},
881     {"lfetch.excl.nt2",         M0, OpMXX6aHint (6, 0, 0, 0x2d, 2), {MR3}},
882     {"lfetch.excl.nta",         M0, OpMXX6aHint (6, 0, 0, 0x2d, 3), {MR3}},
883     {"lfetch.fault",            M0, OpMXX6aHint (6, 0, 0, 0x2e, 0), {MR3}},
884     {"lfetch.fault.nt1",        M0, OpMXX6aHint (6, 0, 0, 0x2e, 1), {MR3}},
885     {"lfetch.fault.nt2",        M0, OpMXX6aHint (6, 0, 0, 0x2e, 2), {MR3}},
886     {"lfetch.fault.nta",        M0, OpMXX6aHint (6, 0, 0, 0x2e, 3), {MR3}},
887     {"lfetch.fault.excl",       M0, OpMXX6aHint (6, 0, 0, 0x2f, 0), {MR3}},
888     {"lfetch.fault.excl.nt1",   M0, OpMXX6aHint (6, 0, 0, 0x2f, 1), {MR3}},
889     {"lfetch.fault.excl.nt2",   M0, OpMXX6aHint (6, 0, 0, 0x2f, 2), {MR3}},
890     {"lfetch.fault.excl.nta",   M0, OpMXX6aHint (6, 0, 0, 0x2f, 3), {MR3}},
891
892     /* line prefetch w/increment by register */
893 #define LFETCHINCREG(c,h) M0, OpMXX6aHint (6, 1, 0, c, h), {MR3, R2}, POSTINC
894     {"lfetch",                  LFETCHINCREG (0x2c, 0)},
895     {"lfetch.nt1",              LFETCHINCREG (0x2c, 1)},
896     {"lfetch.nt2",              LFETCHINCREG (0x2c, 2)},
897     {"lfetch.nta",              LFETCHINCREG (0x2c, 3)},
898     {"lfetch.excl",             LFETCHINCREG (0x2d, 0)},
899     {"lfetch.excl.nt1",         LFETCHINCREG (0x2d, 1)},
900     {"lfetch.excl.nt2",         LFETCHINCREG (0x2d, 2)},
901     {"lfetch.excl.nta",         LFETCHINCREG (0x2d, 3)},
902     {"lfetch.fault",            LFETCHINCREG (0x2e, 0)},
903     {"lfetch.fault.nt1",        LFETCHINCREG (0x2e, 1)},
904     {"lfetch.fault.nt2",        LFETCHINCREG (0x2e, 2)},
905     {"lfetch.fault.nta",        LFETCHINCREG (0x2e, 3)},
906     {"lfetch.fault.excl",       LFETCHINCREG (0x2f, 0)},
907     {"lfetch.fault.excl.nt1",   LFETCHINCREG (0x2f, 1)},
908     {"lfetch.fault.excl.nt2",   LFETCHINCREG (0x2f, 2)},
909     {"lfetch.fault.excl.nta",   LFETCHINCREG (0x2f, 3)},
910 #undef LFETCHINCREG
911
912     /* semaphore operations */
913     {"setf.sig",        M, OpMXX6a (6, 0, 1, 0x1c), {F1, R2}},
914     {"setf.exp",        M, OpMXX6a (6, 0, 1, 0x1d), {F1, R2}},
915     {"setf.s",          M, OpMXX6a (6, 0, 1, 0x1e), {F1, R2}},
916     {"setf.d",          M, OpMXX6a (6, 0, 1, 0x1f), {F1, R2}},
917
918     /* floating-point load w/increment by immediate */
919 #define FLDINCIMMED(c,h) M, OpX6aHint (7, c, h), {F1, MR3, IMM9b}, POSTINC
920     {"ldfs",            FLDINCIMMED (0x02, 0)},
921     {"ldfs.nt1",        FLDINCIMMED (0x02, 1)},
922     {"ldfs.nta",        FLDINCIMMED (0x02, 3)},
923     {"ldfd",            FLDINCIMMED (0x03, 0)},
924     {"ldfd.nt1",        FLDINCIMMED (0x03, 1)},
925     {"ldfd.nta",        FLDINCIMMED (0x03, 3)},
926     {"ldf8",            FLDINCIMMED (0x01, 0)},
927     {"ldf8.nt1",        FLDINCIMMED (0x01, 1)},
928     {"ldf8.nta",        FLDINCIMMED (0x01, 3)},
929     {"ldfe",            FLDINCIMMED (0x00, 0)},
930     {"ldfe.nt1",        FLDINCIMMED (0x00, 1)},
931     {"ldfe.nta",        FLDINCIMMED (0x00, 3)},
932     {"ldfs.s",          FLDINCIMMED (0x06, 0)},
933     {"ldfs.s.nt1",      FLDINCIMMED (0x06, 1)},
934     {"ldfs.s.nta",      FLDINCIMMED (0x06, 3)},
935     {"ldfd.s",          FLDINCIMMED (0x07, 0)},
936     {"ldfd.s.nt1",      FLDINCIMMED (0x07, 1)},
937     {"ldfd.s.nta",      FLDINCIMMED (0x07, 3)},
938     {"ldf8.s",          FLDINCIMMED (0x05, 0)},
939     {"ldf8.s.nt1",      FLDINCIMMED (0x05, 1)},
940     {"ldf8.s.nta",      FLDINCIMMED (0x05, 3)},
941     {"ldfe.s",          FLDINCIMMED (0x04, 0)},
942     {"ldfe.s.nt1",      FLDINCIMMED (0x04, 1)},
943     {"ldfe.s.nta",      FLDINCIMMED (0x04, 3)},
944     {"ldfs.a",          FLDINCIMMED (0x0a, 0)},
945     {"ldfs.a.nt1",      FLDINCIMMED (0x0a, 1)},
946     {"ldfs.a.nta",      FLDINCIMMED (0x0a, 3)},
947     {"ldfd.a",          FLDINCIMMED (0x0b, 0)},
948     {"ldfd.a.nt1",      FLDINCIMMED (0x0b, 1)},
949     {"ldfd.a.nta",      FLDINCIMMED (0x0b, 3)},
950     {"ldf8.a",          FLDINCIMMED (0x09, 0)},
951     {"ldf8.a.nt1",      FLDINCIMMED (0x09, 1)},
952     {"ldf8.a.nta",      FLDINCIMMED (0x09, 3)},
953     {"ldfe.a",          FLDINCIMMED (0x08, 0)},
954     {"ldfe.a.nt1",      FLDINCIMMED (0x08, 1)},
955     {"ldfe.a.nta",      FLDINCIMMED (0x08, 3)},
956     {"ldfs.sa",         FLDINCIMMED (0x0e, 0)},
957     {"ldfs.sa.nt1",     FLDINCIMMED (0x0e, 1)},
958     {"ldfs.sa.nta",     FLDINCIMMED (0x0e, 3)},
959     {"ldfd.sa",         FLDINCIMMED (0x0f, 0)},
960     {"ldfd.sa.nt1",     FLDINCIMMED (0x0f, 1)},
961     {"ldfd.sa.nta",     FLDINCIMMED (0x0f, 3)},
962     {"ldf8.sa",         FLDINCIMMED (0x0d, 0)},
963     {"ldf8.sa.nt1",     FLDINCIMMED (0x0d, 1)},
964     {"ldf8.sa.nta",     FLDINCIMMED (0x0d, 3)},
965     {"ldfe.sa",         FLDINCIMMED (0x0c, 0)},
966     {"ldfe.sa.nt1",     FLDINCIMMED (0x0c, 1)},
967     {"ldfe.sa.nta",     FLDINCIMMED (0x0c, 3)},
968     {"ldf.fill",        FLDINCIMMED (0x1b, 0)},
969     {"ldf.fill.nt1",    FLDINCIMMED (0x1b, 1)},
970     {"ldf.fill.nta",    FLDINCIMMED (0x1b, 3)},
971     {"ldfs.c.clr",      FLDINCIMMED (0x22, 0)},
972     {"ldfs.c.clr.nt1",  FLDINCIMMED (0x22, 1)},
973     {"ldfs.c.clr.nta",  FLDINCIMMED (0x22, 3)},
974     {"ldfd.c.clr",      FLDINCIMMED (0x23, 0)},
975     {"ldfd.c.clr.nt1",  FLDINCIMMED (0x23, 1)},
976     {"ldfd.c.clr.nta",  FLDINCIMMED (0x23, 3)},
977     {"ldf8.c.clr",      FLDINCIMMED (0x21, 0)},
978     {"ldf8.c.clr.nt1",  FLDINCIMMED (0x21, 1)},
979     {"ldf8.c.clr.nta",  FLDINCIMMED (0x21, 3)},
980     {"ldfe.c.clr",      FLDINCIMMED (0x20, 0)},
981     {"ldfe.c.clr.nt1",  FLDINCIMMED (0x20, 1)},
982     {"ldfe.c.clr.nta",  FLDINCIMMED (0x20, 3)},
983     {"ldfs.c.nc",       FLDINCIMMED (0x26, 0)},
984     {"ldfs.c.nc.nt1",   FLDINCIMMED (0x26, 1)},
985     {"ldfs.c.nc.nta",   FLDINCIMMED (0x26, 3)},
986     {"ldfd.c.nc",       FLDINCIMMED (0x27, 0)},
987     {"ldfd.c.nc.nt1",   FLDINCIMMED (0x27, 1)},
988     {"ldfd.c.nc.nta",   FLDINCIMMED (0x27, 3)},
989     {"ldf8.c.nc",       FLDINCIMMED (0x25, 0)},
990     {"ldf8.c.nc.nt1",   FLDINCIMMED (0x25, 1)},
991     {"ldf8.c.nc.nta",   FLDINCIMMED (0x25, 3)},
992     {"ldfe.c.nc",       FLDINCIMMED (0x24, 0)},
993     {"ldfe.c.nc.nt1",   FLDINCIMMED (0x24, 1)},
994     {"ldfe.c.nc.nta",   FLDINCIMMED (0x24, 3)},
995 #undef FLDINCIMMED
996
997     /* floating-point store w/increment by immediate */
998 #define FSTINCIMMED(c,h) M, OpX6aHint (7, c, h), {MR3, F2, IMM9a}, POSTINC
999     {"stfs",            FSTINCIMMED (0x32, 0)},
1000     {"stfs.nta",        FSTINCIMMED (0x32, 3)},
1001     {"stfd",            FSTINCIMMED (0x33, 0)},
1002     {"stfd.nta",        FSTINCIMMED (0x33, 3)},
1003     {"stf8",            FSTINCIMMED (0x31, 0)},
1004     {"stf8.nta",        FSTINCIMMED (0x31, 3)},
1005     {"stfe",            FSTINCIMMED (0x30, 0)},
1006     {"stfe.nta",        FSTINCIMMED (0x30, 3)},
1007     {"stf.spill",       FSTINCIMMED (0x3b, 0)},
1008     {"stf.spill.nta",   FSTINCIMMED (0x3b, 3)},
1009 #undef FSTINCIMMED
1010
1011     /* line prefetch w/increment by immediate */
1012 #define LFETCHINCIMMED(c,h) M0, OpX6aHint (7, c, h), {MR3, IMM9b}, POSTINC
1013     {"lfetch",                  LFETCHINCIMMED (0x2c, 0)},
1014     {"lfetch.nt1",              LFETCHINCIMMED (0x2c, 1)},
1015     {"lfetch.nt2",              LFETCHINCIMMED (0x2c, 2)},
1016     {"lfetch.nta",              LFETCHINCIMMED (0x2c, 3)},
1017     {"lfetch.excl",             LFETCHINCIMMED (0x2d, 0)},
1018     {"lfetch.excl.nt1",         LFETCHINCIMMED (0x2d, 1)},
1019     {"lfetch.excl.nt2",         LFETCHINCIMMED (0x2d, 2)},
1020     {"lfetch.excl.nta",         LFETCHINCIMMED (0x2d, 3)},
1021     {"lfetch.fault",            LFETCHINCIMMED (0x2e, 0)},
1022     {"lfetch.fault.nt1",        LFETCHINCIMMED (0x2e, 1)},
1023     {"lfetch.fault.nt2",        LFETCHINCIMMED (0x2e, 2)},
1024     {"lfetch.fault.nta",        LFETCHINCIMMED (0x2e, 3)},
1025     {"lfetch.fault.excl",       LFETCHINCIMMED (0x2f, 0)},
1026     {"lfetch.fault.excl.nt1",   LFETCHINCIMMED (0x2f, 1)},
1027     {"lfetch.fault.excl.nt2",   LFETCHINCIMMED (0x2f, 2)},
1028     {"lfetch.fault.excl.nta",   LFETCHINCIMMED (0x2f, 3)},
1029 #undef LFETCHINCIMMED
1030
1031     {0}
1032   };
1033
1034 #undef M0
1035 #undef M
1036 #undef M2
1037 #undef bM
1038 #undef bX
1039 #undef bX2
1040 #undef bX3
1041 #undef bX4
1042 #undef bX6a
1043 #undef bX6b
1044 #undef bHint
1045 #undef mM
1046 #undef mX
1047 #undef mX2
1048 #undef mX3
1049 #undef mX4
1050 #undef mX6a
1051 #undef mX6b
1052 #undef mHint
1053 #undef OpX3
1054 #undef OpX3X6b
1055 #undef OpX3X4
1056 #undef OpX3X4X2
1057 #undef OpX6aHint
1058 #undef OpXX6aHint
1059 #undef OpMXX6a
1060 #undef OpMXX6aHint