OSDN Git Service

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