update copyright dates
[external/binutils.git] / opcodes / ia64-opc-f.c
1 /* ia64-opc-f.c -- IA-64 `F' opcode table.
2    Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009
3    Free Software Foundation, Inc.
4    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
5
6    This file is part of the GNU opcodes library.
7
8    This library is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3, or (at your option)
11    any later version.
12
13    It is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this file; see the file COPYING.  If not, write to the
20    Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21    MA 02110-1301, USA.  */
22
23 #include "ia64-opc.h"
24
25 #define f0      IA64_TYPE_F, 0
26 #define f       IA64_TYPE_F, 1
27 #define f2      IA64_TYPE_F, 2
28
29 #define bF2(x)  (((ia64_insn) ((x) & 0x7f)) << 13)
30 #define bF4(x)  (((ia64_insn) ((x) & 0x7f)) << 27)
31 #define bQ(x)   (((ia64_insn) ((x) & 0x1)) << 36)
32 #define bRa(x)  (((ia64_insn) ((x) & 0x1)) << 33)
33 #define bRb(x)  (((ia64_insn) ((x) & 0x1)) << 36)
34 #define bSf(x)  (((ia64_insn) ((x) & 0x3)) << 34)
35 #define bTa(x)  (((ia64_insn) ((x) & 0x1)) << 12)
36 #define bXa(x)  (((ia64_insn) ((x) & 0x1)) << 36)
37 #define bXb(x)  (((ia64_insn) ((x) & 0x1)) << 33)
38 #define bX2(x)  (((ia64_insn) ((x) & 0x3)) << 34)
39 #define bX6(x)  (((ia64_insn) ((x) & 0x3f)) << 27)
40 #define bY(x)   (((ia64_insn) ((x) & 0x1)) << 26)
41
42 #define mF2     bF2 (-1)
43 #define mF4     bF4 (-1)
44 #define mQ      bQ (-1)
45 #define mRa     bRa (-1)
46 #define mRb     bRb (-1)
47 #define mSf     bSf (-1)
48 #define mTa     bTa (-1)
49 #define mXa     bXa (-1)
50 #define mXb     bXb (-1)
51 #define mX2     bX2 (-1)
52 #define mX6     bX6 (-1)
53 #define mY      bY (-1)
54
55 #define OpXa(a,b)       (bOp (a) | bXa (b)), (mOp | mXa)
56 #define OpXaSf(a,b,c)   (bOp (a) | bXa (b) | bSf (c)), (mOp | mXa | mSf)
57 #define OpXaSfF2(a,b,c,d) \
58         (bOp (a) | bXa (b) | bSf (c) | bF2 (d)), (mOp | mXa | mSf | mF2)
59 #define OpXaSfF4(a,b,c,d) \
60         (bOp (a) | bXa (b) | bSf (c) | bF4 (d)), (mOp | mXa | mSf | mF4)
61 #define OpXaSfF2F4(a,b,c,d,e) \
62         (bOp (a) | bXa (b) | bSf (c) | bF2 (d) | bF4 (e)), \
63         (mOp | mXa | mSf | mF2 | mF4)
64 #define OpXaX2(a,b,c)   (bOp (a) | bXa (b) | bX2 (c)), (mOp | mXa | mX2)
65 #define OpXaX2F2(a,b,c,d) \
66         (bOp (a) | bXa (b) | bX2 (c) | bF2 (d)), (mOp | mXa | mX2 | mF2)
67 #define OpRaRbTaSf(a,b,c,d,e) \
68         (bOp (a) | bRa (b) | bRb (c) | bTa (d) | bSf (e)), \
69         (mOp | mRa | mRb | mTa | mSf)
70 #define OpTa(a,b)       (bOp (a) | bTa (b)), (mOp | mTa)
71 #define OpXbQSf(a,b,c,d) \
72         (bOp (a) | bXb (b) | bQ (c) | bSf (d)), (mOp | mXb | mQ | mSf)
73 #define OpXbX6(a,b,c) \
74         (bOp (a) | bXb (b) | bX6 (c)), (mOp | mXb | mX6)
75 #define OpXbX6Y(a,b,c,d) \
76         (bOp (a) | bXb (b) | bX6 (c) | bY (d)), (mOp | mXb | mX6 | mY)
77 #define OpXbX6F2(a,b,c,d) \
78         (bOp (a) | bXb (b) | bX6 (c) | bF2 (d)), (mOp | mXb | mX6 | mF2)
79 #define OpXbX6Sf(a,b,c,d) \
80         (bOp (a) | bXb (b) | bX6 (c) | bSf (d)), (mOp | mXb | mX6 | mSf)
81
82 /* Used to initialise unused fields in ia64_opcode struct,
83    in order to stop gcc from complaining.  */
84 #define EMPTY 0,0,NULL
85
86 struct ia64_opcode ia64_opcodes_f[] =
87   {
88     /* F-type instruction encodings (sorted according to major opcode).  */
89
90     {"frcpa.s0",        f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, EMPTY},
91     {"frcpa",           f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO, 0, NULL},
92     {"frcpa.s1",        f2, OpXbQSf (0, 1, 0, 1), {F1, P2, F2, F3}, EMPTY},
93     {"frcpa.s2",        f2, OpXbQSf (0, 1, 0, 2), {F1, P2, F2, F3}, EMPTY},
94     {"frcpa.s3",        f2, OpXbQSf (0, 1, 0, 3), {F1, P2, F2, F3}, EMPTY},
95
96     {"frsqrta.s0",      f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, EMPTY},
97     {"frsqrta",         f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, PSEUDO, 0, NULL},
98     {"frsqrta.s1",      f2, OpXbQSf (0, 1, 1, 1), {F1, P2, F3}, EMPTY},
99     {"frsqrta.s2",      f2, OpXbQSf (0, 1, 1, 2), {F1, P2, F3}, EMPTY},
100     {"frsqrta.s3",      f2, OpXbQSf (0, 1, 1, 3), {F1, P2, F3}, EMPTY},
101
102     {"fmin.s0",         f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, EMPTY},
103     {"fmin",            f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
104     {"fmin.s1",         f, OpXbX6Sf (0, 0, 0x14, 1), {F1, F2, F3}, EMPTY},
105     {"fmin.s2",         f, OpXbX6Sf (0, 0, 0x14, 2), {F1, F2, F3}, EMPTY},
106     {"fmin.s3",         f, OpXbX6Sf (0, 0, 0x14, 3), {F1, F2, F3}, EMPTY},
107     {"fmax.s0",         f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, EMPTY},
108     {"fmax",            f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
109     {"fmax.s1",         f, OpXbX6Sf (0, 0, 0x15, 1), {F1, F2, F3}, EMPTY},
110     {"fmax.s2",         f, OpXbX6Sf (0, 0, 0x15, 2), {F1, F2, F3}, EMPTY},
111     {"fmax.s3",         f, OpXbX6Sf (0, 0, 0x15, 3), {F1, F2, F3}, EMPTY},
112     {"famin.s0",        f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, EMPTY},
113     {"famin",           f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
114     {"famin.s1",        f, OpXbX6Sf (0, 0, 0x16, 1), {F1, F2, F3}, EMPTY},
115     {"famin.s2",        f, OpXbX6Sf (0, 0, 0x16, 2), {F1, F2, F3}, EMPTY},
116     {"famin.s3",        f, OpXbX6Sf (0, 0, 0x16, 3), {F1, F2, F3}, EMPTY},
117     {"famax.s0",        f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, EMPTY},
118     {"famax",           f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
119     {"famax.s1",        f, OpXbX6Sf (0, 0, 0x17, 1), {F1, F2, F3}, EMPTY},
120     {"famax.s2",        f, OpXbX6Sf (0, 0, 0x17, 2), {F1, F2, F3}, EMPTY},
121     {"famax.s3",        f, OpXbX6Sf (0, 0, 0x17, 3), {F1, F2, F3}, EMPTY},
122
123     {"mov",             f, OpXbX6 (0, 0, 0x10), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
124     {"fabs",            f, OpXbX6F2 (0, 0, 0x10, 0), {F1, F3}, PSEUDO, 0, NULL},
125     {"fneg",            f, OpXbX6   (0, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
126     {"fnegabs",         f, OpXbX6F2 (0, 0, 0x11, 0), {F1, F3}, PSEUDO, 0, NULL},
127     {"fmerge.s",        f, OpXbX6   (0, 0, 0x10), {F1, F2, F3}, EMPTY},
128     {"fmerge.ns",       f, OpXbX6   (0, 0, 0x11), {F1, F2, F3}, EMPTY},
129
130     {"fmerge.se",       f, OpXbX6 (0, 0, 0x12), {F1, F2, F3}, EMPTY},
131     {"fmix.lr",         f, OpXbX6 (0, 0, 0x39), {F1, F2, F3}, EMPTY},
132     {"fmix.r",          f, OpXbX6 (0, 0, 0x3a), {F1, F2, F3}, EMPTY},
133     {"fmix.l",          f, OpXbX6 (0, 0, 0x3b), {F1, F2, F3}, EMPTY},
134     {"fsxt.r",          f, OpXbX6 (0, 0, 0x3c), {F1, F2, F3}, EMPTY},
135     {"fsxt.l",          f, OpXbX6 (0, 0, 0x3d), {F1, F2, F3}, EMPTY},
136     {"fpack",           f, OpXbX6 (0, 0, 0x28), {F1, F2, F3}, EMPTY},
137     {"fswap",           f, OpXbX6 (0, 0, 0x34), {F1, F2, F3}, EMPTY},
138     {"fswap.nl",        f, OpXbX6 (0, 0, 0x35), {F1, F2, F3}, EMPTY},
139     {"fswap.nr",        f, OpXbX6 (0, 0, 0x36), {F1, F2, F3}, EMPTY},
140     {"fand",            f, OpXbX6 (0, 0, 0x2c), {F1, F2, F3}, EMPTY},
141     {"fandcm",          f, OpXbX6 (0, 0, 0x2d), {F1, F2, F3}, EMPTY},
142     {"for",             f, OpXbX6 (0, 0, 0x2e), {F1, F2, F3}, EMPTY},
143     {"fxor",            f, OpXbX6 (0, 0, 0x2f), {F1, F2, F3}, EMPTY},
144
145     {"fcvt.fx.s0",              f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, EMPTY},
146     {"fcvt.fx",                 f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, PSEUDO, 0, NULL},
147     {"fcvt.fx.s1",              f, OpXbX6Sf (0, 0, 0x18, 1), {F1, F2}, EMPTY},
148     {"fcvt.fx.s2",              f, OpXbX6Sf (0, 0, 0x18, 2), {F1, F2}, EMPTY},
149     {"fcvt.fx.s3",              f, OpXbX6Sf (0, 0, 0x18, 3), {F1, F2}, EMPTY},
150     {"fcvt.fxu.s0",             f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, EMPTY},
151     {"fcvt.fxu",                f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, PSEUDO, 0, NULL},
152     {"fcvt.fxu.s1",             f, OpXbX6Sf (0, 0, 0x19, 1), {F1, F2}, EMPTY},
153     {"fcvt.fxu.s2",             f, OpXbX6Sf (0, 0, 0x19, 2), {F1, F2}, EMPTY},
154     {"fcvt.fxu.s3",             f, OpXbX6Sf (0, 0, 0x19, 3), {F1, F2}, EMPTY},
155     {"fcvt.fx.trunc.s0",        f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, EMPTY},
156     {"fcvt.fx.trunc",           f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, PSEUDO, 0, NULL},
157     {"fcvt.fx.trunc.s1",        f, OpXbX6Sf (0, 0, 0x1a, 1), {F1, F2}, EMPTY},
158     {"fcvt.fx.trunc.s2",        f, OpXbX6Sf (0, 0, 0x1a, 2), {F1, F2}, EMPTY},
159     {"fcvt.fx.trunc.s3",        f, OpXbX6Sf (0, 0, 0x1a, 3), {F1, F2}, EMPTY},
160     {"fcvt.fxu.trunc.s0",       f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, EMPTY},
161     {"fcvt.fxu.trunc",          f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, PSEUDO, 0, NULL},
162     {"fcvt.fxu.trunc.s1",       f, OpXbX6Sf (0, 0, 0x1b, 1), {F1, F2}, EMPTY},
163     {"fcvt.fxu.trunc.s2",       f, OpXbX6Sf (0, 0, 0x1b, 2), {F1, F2}, EMPTY},
164     {"fcvt.fxu.trunc.s3",       f, OpXbX6Sf (0, 0, 0x1b, 3), {F1, F2}, EMPTY},
165
166     {"fcvt.xf",         f, OpXbX6 (0, 0, 0x1c), {F1, F2}, EMPTY},
167
168     {"fsetc.s0",        f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, EMPTY},
169     {"fsetc",           f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, PSEUDO, 0, NULL},
170     {"fsetc.s1",        f0, OpXbX6Sf (0, 0, 0x04, 1), {IMMU7a, IMMU7b}, EMPTY},
171     {"fsetc.s2",        f0, OpXbX6Sf (0, 0, 0x04, 2), {IMMU7a, IMMU7b}, EMPTY},
172     {"fsetc.s3",        f0, OpXbX6Sf (0, 0, 0x04, 3), {IMMU7a, IMMU7b}, EMPTY},
173     {"fclrf.s0",        f0, OpXbX6Sf (0, 0, 0x05, 0), {}, EMPTY},
174     {"fclrf",           f0, OpXbX6Sf (0, 0, 0x05, 0), {0}, PSEUDO, 0, NULL},
175     {"fclrf.s1",        f0, OpXbX6Sf (0, 0, 0x05, 1), {}, EMPTY},
176     {"fclrf.s2",        f0, OpXbX6Sf (0, 0, 0x05, 2), {}, EMPTY},
177     {"fclrf.s3",        f0, OpXbX6Sf (0, 0, 0x05, 3), {}, EMPTY},
178     {"fchkf.s0",        f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, EMPTY},
179     {"fchkf",           f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, PSEUDO, 0, NULL},
180     {"fchkf.s1",        f0, OpXbX6Sf (0, 0, 0x08, 1), {TGT25}, EMPTY},
181     {"fchkf.s2",        f0, OpXbX6Sf (0, 0, 0x08, 2), {TGT25}, EMPTY},
182     {"fchkf.s3",        f0, OpXbX6Sf (0, 0, 0x08, 3), {TGT25}, EMPTY},
183
184     {"break.f",         f0, OpXbX6 (0, 0, 0x00), {IMMU21}, EMPTY},
185     {"nop.f",           f0, OpXbX6Y (0, 0, 0x01, 0), {IMMU21}, EMPTY},
186     {"hint.f",          f0, OpXbX6Y (0, 0, 0x01, 1), {IMMU21}, EMPTY},
187
188     {"fprcpa.s0",       f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, EMPTY},
189     {"fprcpa",          f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO, 0, NULL},
190     {"fprcpa.s1",       f2, OpXbQSf (1, 1, 0, 1), {F1, P2, F2, F3}, EMPTY},
191     {"fprcpa.s2",       f2, OpXbQSf (1, 1, 0, 2), {F1, P2, F2, F3}, EMPTY},
192     {"fprcpa.s3",       f2, OpXbQSf (1, 1, 0, 3), {F1, P2, F2, F3}, EMPTY},
193
194     {"fprsqrta.s0",     f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, EMPTY},
195     {"fprsqrta",        f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, PSEUDO, 0, NULL},
196     {"fprsqrta.s1",     f2, OpXbQSf (1, 1, 1, 1), {F1, P2, F3}, EMPTY},
197     {"fprsqrta.s2",     f2, OpXbQSf (1, 1, 1, 2), {F1, P2, F3}, EMPTY},
198     {"fprsqrta.s3",     f2, OpXbQSf (1, 1, 1, 3), {F1, P2, F3}, EMPTY},
199
200     {"fpmin.s0",        f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, EMPTY},
201     {"fpmin",           f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
202     {"fpmin.s1",        f, OpXbX6Sf (1, 0, 0x14, 1), {F1, F2, F3}, EMPTY},
203     {"fpmin.s2",        f, OpXbX6Sf (1, 0, 0x14, 2), {F1, F2, F3}, EMPTY},
204     {"fpmin.s3",        f, OpXbX6Sf (1, 0, 0x14, 3), {F1, F2, F3}, EMPTY},
205     {"fpmax.s0",        f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, EMPTY},
206     {"fpmax",           f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
207     {"fpmax.s1",        f, OpXbX6Sf (1, 0, 0x15, 1), {F1, F2, F3}, EMPTY},
208     {"fpmax.s2",        f, OpXbX6Sf (1, 0, 0x15, 2), {F1, F2, F3}, EMPTY},
209     {"fpmax.s3",        f, OpXbX6Sf (1, 0, 0x15, 3), {F1, F2, F3}, EMPTY},
210     {"fpamin.s0",       f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, EMPTY},
211     {"fpamin",          f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
212     {"fpamin.s1",       f, OpXbX6Sf (1, 0, 0x16, 1), {F1, F2, F3}, EMPTY},
213     {"fpamin.s2",       f, OpXbX6Sf (1, 0, 0x16, 2), {F1, F2, F3}, EMPTY},
214     {"fpamin.s3",       f, OpXbX6Sf (1, 0, 0x16, 3), {F1, F2, F3}, EMPTY},
215     {"fpamax.s0",       f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, EMPTY},
216     {"fpamax",          f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
217     {"fpamax.s1",       f, OpXbX6Sf (1, 0, 0x17, 1), {F1, F2, F3}, EMPTY},
218     {"fpamax.s2",       f, OpXbX6Sf (1, 0, 0x17, 2), {F1, F2, F3}, EMPTY},
219     {"fpamax.s3",       f, OpXbX6Sf (1, 0, 0x17, 3), {F1, F2, F3}, EMPTY},
220
221     {"fpcmp.eq.s0",     f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, EMPTY},
222     {"fpcmp.eq",        f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
223     {"fpcmp.eq.s1",     f, OpXbX6Sf (1, 0, 0x30, 1), {F1, F2, F3}, EMPTY},
224     {"fpcmp.eq.s2",     f, OpXbX6Sf (1, 0, 0x30, 2), {F1, F2, F3}, EMPTY},
225     {"fpcmp.eq.s3",     f, OpXbX6Sf (1, 0, 0x30, 3), {F1, F2, F3}, EMPTY},
226     {"fpcmp.lt.s0",     f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, EMPTY},
227     {"fpcmp.lt",        f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
228     {"fpcmp.lt.s1",     f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F2, F3}, EMPTY},
229     {"fpcmp.lt.s2",     f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F2, F3}, EMPTY},
230     {"fpcmp.lt.s3",     f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F2, F3}, EMPTY},
231     {"fpcmp.le.s0",     f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, EMPTY},
232     {"fpcmp.le",        f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
233     {"fpcmp.le.s1",     f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F2, F3}, EMPTY},
234     {"fpcmp.le.s2",     f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F2, F3}, EMPTY},
235     {"fpcmp.le.s3",     f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F2, F3}, EMPTY},
236     {"fpcmp.gt.s0",     f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
237     {"fpcmp.gt",        f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
238     {"fpcmp.gt.s1",     f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
239     {"fpcmp.gt.s2",     f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
240     {"fpcmp.gt.s3",     f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
241     {"fpcmp.ge.s0",     f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
242     {"fpcmp.ge",        f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
243     {"fpcmp.ge.s1",     f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
244     {"fpcmp.ge.s2",     f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
245     {"fpcmp.ge.s3",     f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
246     {"fpcmp.unord.s0",  f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, EMPTY},
247     {"fpcmp.unord",     f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
248     {"fpcmp.unord.s1",  f, OpXbX6Sf (1, 0, 0x33, 1), {F1, F2, F3}, EMPTY},
249     {"fpcmp.unord.s2",  f, OpXbX6Sf (1, 0, 0x33, 2), {F1, F2, F3}, EMPTY},
250     {"fpcmp.unord.s3",  f, OpXbX6Sf (1, 0, 0x33, 3), {F1, F2, F3}, EMPTY},
251     {"fpcmp.neq.s0",    f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, EMPTY},
252     {"fpcmp.neq",       f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
253     {"fpcmp.neq.s1",    f, OpXbX6Sf (1, 0, 0x34, 1), {F1, F2, F3}, EMPTY},
254     {"fpcmp.neq.s2",    f, OpXbX6Sf (1, 0, 0x34, 2), {F1, F2, F3}, EMPTY},
255     {"fpcmp.neq.s3",    f, OpXbX6Sf (1, 0, 0x34, 3), {F1, F2, F3}, EMPTY},
256     {"fpcmp.nlt.s0",    f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, EMPTY},
257     {"fpcmp.nlt",       f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
258     {"fpcmp.nlt.s1",    f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F2, F3}, EMPTY},
259     {"fpcmp.nlt.s2",    f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F2, F3}, EMPTY},
260     {"fpcmp.nlt.s3",    f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F2, F3}, EMPTY},
261     {"fpcmp.nle.s0",    f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, EMPTY},
262     {"fpcmp.nle",       f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
263     {"fpcmp.nle.s1",    f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F2, F3}, EMPTY},
264     {"fpcmp.nle.s2",    f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F2, F3}, EMPTY},
265     {"fpcmp.nle.s3",    f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F2, F3}, EMPTY},
266     {"fpcmp.ngt.s0",    f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
267     {"fpcmp.ngt",       f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
268     {"fpcmp.ngt.s1",    f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
269     {"fpcmp.ngt.s2",    f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
270     {"fpcmp.ngt.s3",    f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
271     {"fpcmp.nge.s0",    f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
272     {"fpcmp.nge",       f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
273     {"fpcmp.nge.s1",    f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
274     {"fpcmp.nge.s2",    f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
275     {"fpcmp.nge.s3",    f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
276     {"fpcmp.ord.s0",    f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, EMPTY},
277     {"fpcmp.ord",       f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
278     {"fpcmp.ord.s1",    f, OpXbX6Sf (1, 0, 0x37, 1), {F1, F2, F3}, EMPTY},
279     {"fpcmp.ord.s2",    f, OpXbX6Sf (1, 0, 0x37, 2), {F1, F2, F3}, EMPTY},
280     {"fpcmp.ord.s3",    f, OpXbX6Sf (1, 0, 0x37, 3), {F1, F2, F3}, EMPTY},
281
282     {"fpabs",           f, OpXbX6F2 (1, 0, 0x10, 0), {F1, F3}, PSEUDO, 0, NULL},
283     {"fpneg",           f, OpXbX6   (1, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
284     {"fpnegabs",        f, OpXbX6F2 (1, 0, 0x11, 0), {F1, F3}, PSEUDO, 0, NULL},
285     {"fpmerge.s",       f, OpXbX6   (1, 0, 0x10), {F1, F2, F3}, EMPTY},
286     {"fpmerge.ns",      f, OpXbX6   (1, 0, 0x11), {F1, F2, F3}, EMPTY},
287     {"fpmerge.se",      f, OpXbX6 (1, 0, 0x12), {F1, F2, F3}, EMPTY},
288
289     {"fpcvt.fx.s0",             f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, EMPTY},
290     {"fpcvt.fx",                f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, PSEUDO, 0, NULL},
291     {"fpcvt.fx.s1",             f, OpXbX6Sf (1, 0, 0x18, 1), {F1, F2}, EMPTY},
292     {"fpcvt.fx.s2",             f, OpXbX6Sf (1, 0, 0x18, 2), {F1, F2}, EMPTY},
293     {"fpcvt.fx.s3",             f, OpXbX6Sf (1, 0, 0x18, 3), {F1, F2}, EMPTY},
294     {"fpcvt.fxu.s0",            f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, EMPTY},
295     {"fpcvt.fxu",               f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, PSEUDO, 0, NULL},
296     {"fpcvt.fxu.s1",            f, OpXbX6Sf (1, 0, 0x19, 1), {F1, F2}, EMPTY},
297     {"fpcvt.fxu.s2",            f, OpXbX6Sf (1, 0, 0x19, 2), {F1, F2}, EMPTY},
298     {"fpcvt.fxu.s3",            f, OpXbX6Sf (1, 0, 0x19, 3), {F1, F2}, EMPTY},
299     {"fpcvt.fx.trunc.s0",       f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, EMPTY},
300     {"fpcvt.fx.trunc",          f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, PSEUDO, 0, NULL},
301     {"fpcvt.fx.trunc.s1",       f, OpXbX6Sf (1, 0, 0x1a, 1), {F1, F2}, EMPTY},
302     {"fpcvt.fx.trunc.s2",       f, OpXbX6Sf (1, 0, 0x1a, 2), {F1, F2}, EMPTY},
303     {"fpcvt.fx.trunc.s3",       f, OpXbX6Sf (1, 0, 0x1a, 3), {F1, F2}, EMPTY},
304     {"fpcvt.fxu.trunc.s0",      f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, EMPTY},
305     {"fpcvt.fxu.trunc",         f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, PSEUDO, 0, NULL},
306     {"fpcvt.fxu.trunc.s1",      f, OpXbX6Sf (1, 0, 0x1b, 1), {F1, F2}, EMPTY},
307     {"fpcvt.fxu.trunc.s2",      f, OpXbX6Sf (1, 0, 0x1b, 2), {F1, F2}, EMPTY},
308     {"fpcvt.fxu.trunc.s3",      f, OpXbX6Sf (1, 0, 0x1b, 3), {F1, F2}, EMPTY},
309
310     {"fcmp.eq.s0",        f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, EMPTY},
311     {"fcmp.eq",           f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
312     {"fcmp.eq.s1",        f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P1, P2, F2, F3}, EMPTY},
313     {"fcmp.eq.s2",        f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P1, P2, F2, F3}, EMPTY},
314     {"fcmp.eq.s3",        f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P1, P2, F2, F3}, EMPTY},
315     {"fcmp.lt.s0",        f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, EMPTY},
316     {"fcmp.lt",           f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
317     {"fcmp.lt.s1",        f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F2, F3}, EMPTY},
318     {"fcmp.lt.s2",        f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F2, F3}, EMPTY},
319     {"fcmp.lt.s3",        f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F2, F3}, EMPTY},
320     {"fcmp.le.s0",        f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, EMPTY},
321     {"fcmp.le",           f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
322     {"fcmp.le.s1",        f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F2, F3}, EMPTY},
323     {"fcmp.le.s2",        f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F2, F3}, EMPTY},
324     {"fcmp.le.s3",        f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F2, F3}, EMPTY},
325     {"fcmp.unord.s0",     f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, EMPTY},
326     {"fcmp.unord",        f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
327     {"fcmp.unord.s1",     f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P1, P2, F2, F3}, EMPTY},
328     {"fcmp.unord.s2",     f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P1, P2, F2, F3}, EMPTY},
329     {"fcmp.unord.s3",     f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P1, P2, F2, F3}, EMPTY},
330     {"fcmp.eq.unc.s0",    f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, EMPTY},
331     {"fcmp.eq.unc",       f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
332     {"fcmp.eq.unc.s1",    f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P1, P2, F2, F3}, EMPTY},
333     {"fcmp.eq.unc.s2",    f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P1, P2, F2, F3}, EMPTY},
334     {"fcmp.eq.unc.s3",    f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P1, P2, F2, F3}, EMPTY},
335     {"fcmp.lt.unc.s0",    f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, EMPTY},
336     {"fcmp.lt.unc",       f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
337     {"fcmp.lt.unc.s1",    f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F2, F3}, EMPTY},
338     {"fcmp.lt.unc.s2",    f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F2, F3}, EMPTY},
339     {"fcmp.lt.unc.s3",    f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F2, F3}, EMPTY},
340     {"fcmp.le.unc.s0",    f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, EMPTY},
341     {"fcmp.le.unc",       f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
342     {"fcmp.le.unc.s1",    f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F2, F3}, EMPTY},
343     {"fcmp.le.unc.s2",    f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F2, F3}, EMPTY},
344     {"fcmp.le.unc.s3",    f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F2, F3}, EMPTY},
345     {"fcmp.unord.unc.s0", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, EMPTY},
346     {"fcmp.unord.unc",    f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
347     {"fcmp.unord.unc.s1", f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P1, P2, F2, F3}, EMPTY},
348     {"fcmp.unord.unc.s2", f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P1, P2, F2, F3}, EMPTY},
349     {"fcmp.unord.unc.s3", f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P1, P2, F2, F3}, EMPTY},
350
351     /* pseudo-ops of the above */
352     {"fcmp.gt.s0",        f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, EMPTY},
353     {"fcmp.gt",           f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
354     {"fcmp.gt.s1",        f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F3, F2}, EMPTY},
355     {"fcmp.gt.s2",        f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F3, F2}, EMPTY},
356     {"fcmp.gt.s3",        f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F3, F2}, EMPTY},
357     {"fcmp.ge.s0",        f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, EMPTY},
358     {"fcmp.ge",           f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
359     {"fcmp.ge.s1",        f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F3, F2}, EMPTY},
360     {"fcmp.ge.s2",        f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F3, F2}, EMPTY},
361     {"fcmp.ge.s3",        f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F3, F2}, EMPTY},
362     {"fcmp.neq.s0",       f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, EMPTY},
363     {"fcmp.neq",          f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
364     {"fcmp.neq.s1",       f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P2, P1, F2, F3}, EMPTY},
365     {"fcmp.neq.s2",       f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P2, P1, F2, F3}, EMPTY},
366     {"fcmp.neq.s3",       f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P2, P1, F2, F3}, EMPTY},
367     {"fcmp.nlt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, EMPTY},
368     {"fcmp.nlt",          f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
369     {"fcmp.nlt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F2, F3}, EMPTY},
370     {"fcmp.nlt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F2, F3}, EMPTY},
371     {"fcmp.nlt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F2, F3}, EMPTY},
372     {"fcmp.nle.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, EMPTY},
373     {"fcmp.nle",          f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
374     {"fcmp.nle.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F2, F3}, EMPTY},
375     {"fcmp.nle.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F2, F3}, EMPTY},
376     {"fcmp.nle.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F2, F3}, EMPTY},
377     {"fcmp.ngt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, EMPTY},
378     {"fcmp.ngt",          f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
379     {"fcmp.ngt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F3, F2}, EMPTY},
380     {"fcmp.ngt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F3, F2}, EMPTY},
381     {"fcmp.ngt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F3, F2}, EMPTY},
382     {"fcmp.nge.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, EMPTY},
383     {"fcmp.nge",          f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
384     {"fcmp.nge.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F3, F2}, EMPTY},
385     {"fcmp.nge.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F3, F2}, EMPTY},
386     {"fcmp.nge.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F3, F2}, EMPTY},
387     {"fcmp.ord.s0",       f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, EMPTY},
388     {"fcmp.ord",          f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
389     {"fcmp.ord.s1",       f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P2, P1, F2, F3}, EMPTY},
390     {"fcmp.ord.s2",       f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P2, P1, F2, F3}, EMPTY},
391     {"fcmp.ord.s3",       f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P2, P1, F2, F3}, EMPTY},
392     {"fcmp.gt.unc.s0",    f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, EMPTY},
393     {"fcmp.gt.unc",       f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
394     {"fcmp.gt.unc.s1",    f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F3, F2}, EMPTY},
395     {"fcmp.gt.unc.s2",    f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F3, F2}, EMPTY},
396     {"fcmp.gt.unc.s3",    f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F3, F2}, EMPTY},
397     {"fcmp.ge.unc.s0",    f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, EMPTY},
398     {"fcmp.ge.unc",       f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
399     {"fcmp.ge.unc.s1",    f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F3, F2}, EMPTY},
400     {"fcmp.ge.unc.s2",    f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F3, F2}, EMPTY},
401     {"fcmp.ge.unc.s3",    f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F3, F2}, EMPTY},
402     {"fcmp.neq.unc.s0",   f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, EMPTY},
403     {"fcmp.neq.unc",      f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
404     {"fcmp.neq.unc.s1",   f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P2, P1, F2, F3}, EMPTY},
405     {"fcmp.neq.unc.s2",   f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P2, P1, F2, F3}, EMPTY},
406     {"fcmp.neq.unc.s3",   f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P2, P1, F2, F3}, EMPTY},
407     {"fcmp.nlt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, EMPTY},
408     {"fcmp.nlt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
409     {"fcmp.nlt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F2, F3}, EMPTY},
410     {"fcmp.nlt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F2, F3}, EMPTY},
411     {"fcmp.nlt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F2, F3}, EMPTY},
412     {"fcmp.nle.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, EMPTY},
413     {"fcmp.nle.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
414     {"fcmp.nle.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F2, F3}, EMPTY},
415     {"fcmp.nle.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F2, F3}, EMPTY},
416     {"fcmp.nle.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F2, F3}, EMPTY},
417     {"fcmp.ngt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, EMPTY},
418     {"fcmp.ngt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
419     {"fcmp.ngt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F3, F2}, EMPTY},
420     {"fcmp.ngt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F3, F2}, EMPTY},
421     {"fcmp.ngt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F3, F2}, EMPTY},
422     {"fcmp.nge.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, EMPTY},
423     {"fcmp.nge.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
424     {"fcmp.nge.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F3, F2}, EMPTY},
425     {"fcmp.nge.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F3, F2}, EMPTY},
426     {"fcmp.nge.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F3, F2}, EMPTY},
427     {"fcmp.ord.unc.s0",   f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, EMPTY},
428     {"fcmp.ord.unc",      f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
429     {"fcmp.ord.unc.s1",   f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P2, P1, F2, F3}, EMPTY},
430     {"fcmp.ord.unc.s2",   f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P2, P1, F2, F3}, EMPTY},
431     {"fcmp.ord.unc.s3",   f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P2, P1, F2, F3}, EMPTY},
432
433     {"fclass.m",        f2, OpTa (5, 0), {P1, P2, F2, IMMU9}, EMPTY},
434     {"fclass.nm",       f2, OpTa (5, 0), {P2, P1, F2, IMMU9}, PSEUDO, 0, NULL},
435     {"fclass.m.unc",    f2, OpTa (5, 1), {P1, P2, F2, IMMU9}, EMPTY},
436     {"fclass.nm.unc",   f2, OpTa (5, 1), {P2, P1, F2, IMMU9}, PSEUDO, 0, NULL},
437
438     /* note: fnorm and fcvt.xuf have identical encodings! */
439     {"fnorm.s0",        f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
440     {"fnorm",           f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
441     {"fnorm.s1",        f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
442     {"fnorm.s2",        f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
443     {"fnorm.s3",        f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
444     {"fnorm.s.s0",      f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
445     {"fnorm.s",         f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
446     {"fnorm.s.s1",      f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
447     {"fnorm.s.s2",      f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
448     {"fnorm.s.s3",      f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
449     {"fcvt.xuf.s0",     f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
450     {"fcvt.xuf",        f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
451     {"fcvt.xuf.s1",     f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
452     {"fcvt.xuf.s2",     f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
453     {"fcvt.xuf.s3",     f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
454     {"fcvt.xuf.s.s0",   f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
455     {"fcvt.xuf.s",      f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
456     {"fcvt.xuf.s.s1",   f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
457     {"fcvt.xuf.s.s2",   f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
458     {"fcvt.xuf.s.s3",   f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
459     {"fadd.s0",         f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
460     {"fadd",            f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
461     {"fadd.s1",         f, OpXaSfF4 (0x8, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
462     {"fadd.s2",         f, OpXaSfF4 (0x8, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
463     {"fadd.s3",         f, OpXaSfF4 (0x8, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
464     {"fadd.s.s0",       f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
465     {"fadd.s",          f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
466     {"fadd.s.s1",       f, OpXaSfF4 (0x8, 1, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
467     {"fadd.s.s2",       f, OpXaSfF4 (0x8, 1, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
468     {"fadd.s.s3",       f, OpXaSfF4 (0x8, 1, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
469     {"fmpy.s0",         f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
470     {"fmpy",            f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
471     {"fmpy.s1",         f, OpXaSfF2 (0x8, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
472     {"fmpy.s2",         f, OpXaSfF2 (0x8, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
473     {"fmpy.s3",         f, OpXaSfF2 (0x8, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
474     {"fmpy.s.s0",       f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
475     {"fmpy.s",          f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
476     {"fmpy.s.s1",       f, OpXaSfF2 (0x8, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
477     {"fmpy.s.s2",       f, OpXaSfF2 (0x8, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
478     {"fmpy.s.s3",       f, OpXaSfF2 (0x8, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
479     {"fma.s0",          f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, EMPTY},
480     {"fma",             f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
481     {"fma.s1",          f, OpXaSf (0x8, 0, 1), {F1, F3, F4, F2}, EMPTY},
482     {"fma.s2",          f, OpXaSf (0x8, 0, 2), {F1, F3, F4, F2}, EMPTY},
483     {"fma.s3",          f, OpXaSf (0x8, 0, 3), {F1, F3, F4, F2}, EMPTY},
484     {"fma.s.s0",        f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, EMPTY},
485     {"fma.s",           f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
486     {"fma.s.s1",        f, OpXaSf (0x8, 1, 1), {F1, F3, F4, F2}, EMPTY},
487     {"fma.s.s2",        f, OpXaSf (0x8, 1, 2), {F1, F3, F4, F2}, EMPTY},
488     {"fma.s.s3",        f, OpXaSf (0x8, 1, 3), {F1, F3, F4, F2}, EMPTY},
489
490     {"fnorm.d.s0",      f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
491     {"fnorm.d",         f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
492     {"fnorm.d.s1",      f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
493     {"fnorm.d.s2",      f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
494     {"fnorm.d.s3",      f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
495     {"fcvt.xuf.d.s0",   f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
496     {"fcvt.xuf.d",      f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
497     {"fcvt.xuf.d.s1",   f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
498     {"fcvt.xuf.d.s2",   f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
499     {"fcvt.xuf.d.s3",   f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
500     {"fadd.d.s0",       f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
501     {"fadd.d",          f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
502     {"fadd.d.s1",       f, OpXaSfF4 (0x9, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
503     {"fadd.d.s2",       f, OpXaSfF4 (0x9, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
504     {"fadd.d.s3",       f, OpXaSfF4 (0x9, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
505     {"fmpy.d.s0",       f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
506     {"fmpy.d",          f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
507     {"fmpy.d.s1",       f, OpXaSfF2 (0x9, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
508     {"fmpy.d.s2",       f, OpXaSfF2 (0x9, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
509     {"fmpy.d.s3",       f, OpXaSfF2 (0x9, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
510     {"fma.d.s0",        f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, EMPTY},
511     {"fma.d",           f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
512     {"fma.d.s1",        f, OpXaSf (0x9, 0, 1), {F1, F3, F4, F2}, EMPTY},
513     {"fma.d.s2",        f, OpXaSf (0x9, 0, 2), {F1, F3, F4, F2}, EMPTY},
514     {"fma.d.s3",        f, OpXaSf (0x9, 0, 3), {F1, F3, F4, F2}, EMPTY},
515
516     {"fpmpy.s0",        f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
517     {"fpmpy",           f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
518     {"fpmpy.s1",        f, OpXaSfF2 (0x9, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
519     {"fpmpy.s2",        f, OpXaSfF2 (0x9, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
520     {"fpmpy.s3",        f, OpXaSfF2 (0x9, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
521     {"fpma.s0",         f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, EMPTY},
522     {"fpma",            f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
523     {"fpma.s1",         f, OpXaSf   (0x9, 1, 1), {F1, F3, F4, F2}, EMPTY},
524     {"fpma.s2",         f, OpXaSf   (0x9, 1, 2), {F1, F3, F4, F2}, EMPTY},
525     {"fpma.s3",         f, OpXaSf   (0x9, 1, 3), {F1, F3, F4, F2}, EMPTY},
526
527     {"fsub.s0",         f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
528     {"fsub",            f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
529     {"fsub.s1",         f, OpXaSfF4 (0xa, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
530     {"fsub.s2",         f, OpXaSfF4 (0xa, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
531     {"fsub.s3",         f, OpXaSfF4 (0xa, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
532     {"fsub.s.s0",       f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
533     {"fsub.s",          f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
534     {"fsub.s.s1",       f, OpXaSfF4 (0xa, 1, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
535     {"fsub.s.s2",       f, OpXaSfF4 (0xa, 1, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
536     {"fsub.s.s3",       f, OpXaSfF4 (0xa, 1, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
537     {"fms.s0",          f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, EMPTY},
538     {"fms",             f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
539     {"fms.s1",          f, OpXaSf   (0xa, 0, 1), {F1, F3, F4, F2}, EMPTY},
540     {"fms.s2",          f, OpXaSf   (0xa, 0, 2), {F1, F3, F4, F2}, EMPTY},
541     {"fms.s3",          f, OpXaSf   (0xa, 0, 3), {F1, F3, F4, F2}, EMPTY},
542     {"fms.s.s0",        f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, EMPTY},
543     {"fms.s",           f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
544     {"fms.s.s1",        f, OpXaSf   (0xa, 1, 1), {F1, F3, F4, F2}, EMPTY},
545     {"fms.s.s2",        f, OpXaSf   (0xa, 1, 2), {F1, F3, F4, F2}, EMPTY},
546     {"fms.s.s3",        f, OpXaSf   (0xa, 1, 3), {F1, F3, F4, F2}, EMPTY},
547     {"fsub.d.s0",       f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
548     {"fsub.d",          f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
549     {"fsub.d.s1",       f, OpXaSfF4 (0xb, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
550     {"fsub.d.s2",       f, OpXaSfF4 (0xb, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
551     {"fsub.d.s3",       f, OpXaSfF4 (0xb, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
552     {"fms.d.s0",        f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, EMPTY},
553     {"fms.d",           f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
554     {"fms.d.s1",        f, OpXaSf   (0xb, 0, 1), {F1, F3, F4, F2}, EMPTY},
555     {"fms.d.s2",        f, OpXaSf   (0xb, 0, 2), {F1, F3, F4, F2}, EMPTY},
556     {"fms.d.s3",        f, OpXaSf   (0xb, 0, 3), {F1, F3, F4, F2}, EMPTY},
557
558     {"fpms.s0",         f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, EMPTY},
559     {"fpms",            f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
560     {"fpms.s1",         f, OpXaSf (0xb, 1, 1), {F1, F3, F4, F2}, EMPTY},
561     {"fpms.s2",         f, OpXaSf (0xb, 1, 2), {F1, F3, F4, F2}, EMPTY},
562     {"fpms.s3",         f, OpXaSf (0xb, 1, 3), {F1, F3, F4, F2}, EMPTY},
563
564     {"fnmpy.s0",        f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
565     {"fnmpy",           f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
566     {"fnmpy.s1",        f, OpXaSfF2 (0xc, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
567     {"fnmpy.s2",        f, OpXaSfF2 (0xc, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
568     {"fnmpy.s3",        f, OpXaSfF2 (0xc, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
569     {"fnmpy.s.s0",      f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
570     {"fnmpy.s",         f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
571     {"fnmpy.s.s1",      f, OpXaSfF2 (0xc, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
572     {"fnmpy.s.s2",      f, OpXaSfF2 (0xc, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
573     {"fnmpy.s.s3",      f, OpXaSfF2 (0xc, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
574     {"fnma.s0",         f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, EMPTY},
575     {"fnma",            f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
576     {"fnma.s1",         f, OpXaSf (0xc, 0, 1), {F1, F3, F4, F2}, EMPTY},
577     {"fnma.s2",         f, OpXaSf (0xc, 0, 2), {F1, F3, F4, F2}, EMPTY},
578     {"fnma.s3",         f, OpXaSf (0xc, 0, 3), {F1, F3, F4, F2}, EMPTY},
579     {"fnma.s.s0",       f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, EMPTY},
580     {"fnma.s",          f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
581     {"fnma.s.s1",       f, OpXaSf (0xc, 1, 1), {F1, F3, F4, F2}, EMPTY},
582     {"fnma.s.s2",       f, OpXaSf (0xc, 1, 2), {F1, F3, F4, F2}, EMPTY},
583     {"fnma.s.s3",       f, OpXaSf (0xc, 1, 3), {F1, F3, F4, F2}, EMPTY},
584     {"fnmpy.d.s0",      f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
585     {"fnmpy.d",         f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
586     {"fnmpy.d.s1",      f, OpXaSfF2 (0xd, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
587     {"fnmpy.d.s2",      f, OpXaSfF2 (0xd, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
588     {"fnmpy.d.s3",      f, OpXaSfF2 (0xd, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
589     {"fnma.d.s0",       f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, EMPTY},
590     {"fnma.d",          f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
591     {"fnma.d.s1",       f, OpXaSf (0xd, 0, 1), {F1, F3, F4, F2}, EMPTY},
592     {"fnma.d.s2",       f, OpXaSf (0xd, 0, 2), {F1, F3, F4, F2}, EMPTY},
593     {"fnma.d.s3",       f, OpXaSf (0xd, 0, 3), {F1, F3, F4, F2}, EMPTY},
594
595     {"fpnmpy.s0",       f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
596     {"fpnmpy",          f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
597     {"fpnmpy.s1",       f, OpXaSfF2 (0xd, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
598     {"fpnmpy.s2",       f, OpXaSfF2 (0xd, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
599     {"fpnmpy.s3",       f, OpXaSfF2 (0xd, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
600     {"fpnma.s0",        f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, EMPTY},
601     {"fpnma",           f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
602     {"fpnma.s1",        f, OpXaSf   (0xd, 1, 1), {F1, F3, F4, F2}, EMPTY},
603     {"fpnma.s2",        f, OpXaSf   (0xd, 1, 2), {F1, F3, F4, F2}, EMPTY},
604     {"fpnma.s3",        f, OpXaSf   (0xd, 1, 3), {F1, F3, F4, F2}, EMPTY},
605
606     {"xmpy.l",          f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
607     {"xmpy.lu",         f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
608     {"xmpy.h",          f, OpXaX2F2 (0xe, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
609     {"xmpy.hu",         f, OpXaX2F2 (0xe, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
610     {"xma.l",           f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, EMPTY},
611     {"xma.lu",          f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
612     {"xma.h",           f, OpXaX2 (0xe, 1, 3), {F1, F3, F4, F2}, EMPTY},
613     {"xma.hu",          f, OpXaX2 (0xe, 1, 2), {F1, F3, F4, F2}, EMPTY},
614
615     {"fselect",         f, OpXa (0xe, 0), {F1, F3, F4, F2}, EMPTY},
616
617     {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
618   };
619
620 #undef f0
621 #undef f
622 #undef f2
623 #undef bF2
624 #undef bF4
625 #undef bQ
626 #undef bRa
627 #undef bRb
628 #undef bSf
629 #undef bTa
630 #undef bXa
631 #undef bXb
632 #undef bX2
633 #undef bX6
634 #undef mF2
635 #undef mF4
636 #undef mQ
637 #undef mRa
638 #undef mRb
639 #undef mSf
640 #undef mTa
641 #undef mXa
642 #undef mXb
643 #undef mX2
644 #undef mX6
645 #undef OpXa
646 #undef OpXaSf
647 #undef OpXaSfF2
648 #undef OpXaSfF4
649 #undef OpXaSfF2F4
650 #undef OpXaX2
651 #undef OpRaRbTaSf
652 #undef OpTa
653 #undef OpXbQSf
654 #undef OpXbX6
655 #undef OpXbX6F2
656 #undef OpXbX6Sf
657 #undef EMPTY