]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/binutils/include/opcode/convex.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / binutils / include / opcode / convex.h
1 /* Information for instruction disassembly on the Convex.
2    Copyright 1989, 1993, 2002 Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
19
20 #define xxx 0
21 #define rrr 1
22 #define rr 2
23 #define rxr 3
24 #define r 4
25 #define nops 5
26 #define nr 6
27 #define pcrel 7
28 #define lr 8
29 #define rxl 9
30 #define rlr 10
31 #define rrl 11
32 #define iml 12
33 #define imr 13
34 #define a1r 14
35 #define a1l 15
36 #define a2r 16
37 #define a2l 17
38 #define a3 18
39 #define a4 19
40 #define a5 20
41 #define V 1
42 #define S 2
43 #define VM 3
44 #define A 4
45 #define VL 5
46 #define VS 6
47 #define VLS 7
48 #define PSW 8
49 /* Prevent an error during "make depend".  */
50 #if !defined (PC)
51 #define PC 9
52 #endif
53 #define ITR 10
54 #define VV 11
55 #define ITSR 12
56 #define TOC 13
57 #define CIR 14
58 #define TTR 15
59 #define VMU 16
60 #define VML 17
61 #define ICR 18
62 #define TCPU 19
63 #define CPUID 20
64 #define TID 21
65
66 const char *op[] = {
67   "",
68   "v0\0v1\0v2\0v3\0v4\0v5\0v6\0v7",
69   "s0\0s1\0s2\0s3\0s4\0s5\0s6\0s7",
70   "vm",
71   "sp\0a1\0a2\0a3\0a4\0a5\0ap\0fp",
72   "vl",
73   "vs",
74   "vls",
75   "psw",
76   "pc",
77   "itr",
78   "vv",
79   "itsr",
80   "toc",
81   "cir",
82   "ttr",
83   "vmu",
84   "vml",
85   "icr",
86   "tcpu",
87   "cpuid",
88   "tid",
89 };
90
91 const struct formstr format0[] = {
92   {0,0,rrr,V,S,S},      /* mov */
93   {0,0,rrr,S,S,V},      /* mov */
94   {1,1,rrr,V,V,V},      /* merg.t */
95   {2,1,rrr,V,V,V},      /* mask.t */
96   {1,2,rrr,V,S,V},      /* merg.f */
97   {2,2,rrr,V,S,V},      /* mask.f */
98   {1,1,rrr,V,S,V},      /* merg.t */
99   {2,1,rrr,V,S,V},      /* mask.t */
100   {3,3,rrr,V,V,V},      /* mul.s */
101   {3,4,rrr,V,V,V},      /* mul.d */
102   {4,3,rrr,V,V,V},      /* div.s */
103   {4,4,rrr,V,V,V},      /* div.d */
104   {3,3,rrr,V,S,V},      /* mul.s */
105   {3,4,rrr,V,S,V},      /* mul.d */
106   {4,3,rrr,V,S,V},      /* div.s */
107   {4,4,rrr,V,S,V},      /* div.d */
108   {5,0,rrr,V,V,V},      /* and */
109   {6,0,rrr,V,V,V},      /* or */
110   {7,0,rrr,V,V,V},      /* xor */
111   {8,0,rrr,V,V,V},      /* shf */
112   {5,0,rrr,V,S,V},      /* and */
113   {6,0,rrr,V,S,V},      /* or */
114   {7,0,rrr,V,S,V},      /* xor */
115   {8,0,rrr,V,S,V},      /* shf */
116   {9,3,rrr,V,V,V},      /* add.s */
117   {9,4,rrr,V,V,V},      /* add.d */
118   {10,3,rrr,V,V,V},     /* sub.s */
119   {10,4,rrr,V,V,V},     /* sub.d */
120   {9,3,rrr,V,S,V},      /* add.s */
121   {9,4,rrr,V,S,V},      /* add.d */
122   {10,3,rrr,V,S,V},     /* sub.s */
123   {10,4,rrr,V,S,V},     /* sub.d */
124   {9,5,rrr,V,V,V},      /* add.b */
125   {9,6,rrr,V,V,V},      /* add.h */
126   {9,7,rrr,V,V,V},      /* add.w */
127   {9,8,rrr,V,V,V},      /* add.l */
128   {9,5,rrr,V,S,V},      /* add.b */
129   {9,6,rrr,V,S,V},      /* add.h */
130   {9,7,rrr,V,S,V},      /* add.w */
131   {9,8,rrr,V,S,V},      /* add.l */
132   {10,5,rrr,V,V,V},     /* sub.b */
133   {10,6,rrr,V,V,V},     /* sub.h */
134   {10,7,rrr,V,V,V},     /* sub.w */
135   {10,8,rrr,V,V,V},     /* sub.l */
136   {10,5,rrr,V,S,V},     /* sub.b */
137   {10,6,rrr,V,S,V},     /* sub.h */
138   {10,7,rrr,V,S,V},     /* sub.w */
139   {10,8,rrr,V,S,V},     /* sub.l */
140   {3,5,rrr,V,V,V},      /* mul.b */
141   {3,6,rrr,V,V,V},      /* mul.h */
142   {3,7,rrr,V,V,V},      /* mul.w */
143   {3,8,rrr,V,V,V},      /* mul.l */
144   {3,5,rrr,V,S,V},      /* mul.b */
145   {3,6,rrr,V,S,V},      /* mul.h */
146   {3,7,rrr,V,S,V},      /* mul.w */
147   {3,8,rrr,V,S,V},      /* mul.l */
148   {4,5,rrr,V,V,V},      /* div.b */
149   {4,6,rrr,V,V,V},      /* div.h */
150   {4,7,rrr,V,V,V},      /* div.w */
151   {4,8,rrr,V,V,V},      /* div.l */
152   {4,5,rrr,V,S,V},      /* div.b */
153   {4,6,rrr,V,S,V},      /* div.h */
154   {4,7,rrr,V,S,V},      /* div.w */
155   {4,8,rrr,V,S,V},      /* div.l */
156 };
157
158 const struct formstr format1[] = {
159   {11,0,xxx,0,0,0},     /* exit */
160   {12,0,a3,0,0,0},      /* jmp */
161   {13,2,a3,0,0,0},      /* jmpi.f */
162   {13,1,a3,0,0,0},      /* jmpi.t */
163   {14,2,a3,0,0,0},      /* jmpa.f */
164   {14,1,a3,0,0,0},      /* jmpa.t */
165   {15,2,a3,0,0,0},      /* jmps.f */
166   {15,1,a3,0,0,0},      /* jmps.t */
167   {16,0,a3,0,0,0},      /* tac */
168   {17,0,a1r,A,0,0},     /* ldea */
169   {18,8,a1l,VLS,0,0},   /* ld.l */
170   {18,9,a1l,VM,0,0},    /* ld.x */
171   {19,0,a3,0,0,0},      /* tas */
172   {20,0,a3,0,0,0},      /* pshea */
173   {21,8,a2l,VLS,0,0},   /* st.l */
174   {21,9,a2l,VM,0,0},    /* st.x */
175   {0,0,0,0,0,0},
176   {0,0,0,0,0,0},
177   {0,0,0,0,0,0},
178   {0,0,0,0,0,0},
179   {0,0,0,0,0,0},
180   {0,0,0,0,0,0},
181   {0,0,0,0,0,0},
182   {0,0,0,0,0,0},
183   {0,0,0,0,0,0},
184   {0,0,0,0,0,0},
185   {0,0,0,0,0,0},
186   {0,0,0,0,0,0},
187   {0,0,0,0,0,0},
188   {0,0,0,0,0,0},
189   {0,0,0,0,0,0},
190   {0,0,0,0,0,0},
191   {22,0,a3,0,0,0},      /* call */
192   {23,0,a3,0,0,0},      /* calls */
193   {24,0,a3,0,0,0},      /* callq */
194   {25,0,a1r,A,0,0},     /* pfork */
195   {26,5,a2r,S,0,0},     /* ste.b */
196   {26,6,a2r,S,0,0},     /* ste.h */
197   {26,7,a2r,S,0,0},     /* ste.w */
198   {26,8,a2r,S,0,0},     /* ste.l */
199   {18,5,a1r,A,0,0},     /* ld.b */
200   {18,6,a1r,A,0,0},     /* ld.h */
201   {18,7,a1r,A,0,0},     /* ld.w */
202   {27,7,a1r,A,0,0},     /* incr.w */
203   {21,5,a2r,A,0,0},     /* st.b */
204   {21,6,a2r,A,0,0},     /* st.h */
205   {21,7,a2r,A,0,0},     /* st.w */
206   {27,8,a1r,S,0,0},     /* incr.l */
207   {18,5,a1r,S,0,0},     /* ld.b */
208   {18,6,a1r,S,0,0},     /* ld.h */
209   {18,7,a1r,S,0,0},     /* ld.w */
210   {18,8,a1r,S,0,0},     /* ld.l */
211   {21,5,a2r,S,0,0},     /* st.b */
212   {21,6,a2r,S,0,0},     /* st.h */
213   {21,7,a2r,S,0,0},     /* st.w */
214   {21,8,a2r,S,0,0},     /* st.l */
215   {18,5,a1r,V,0,0},     /* ld.b */
216   {18,6,a1r,V,0,0},     /* ld.h */
217   {18,7,a1r,V,0,0},     /* ld.w */
218   {18,8,a1r,V,0,0},     /* ld.l */
219   {21,5,a2r,V,0,0},     /* st.b */
220   {21,6,a2r,V,0,0},     /* st.h */
221   {21,7,a2r,V,0,0},     /* st.w */
222   {21,8,a2r,V,0,0},     /* st.l */
223 };
224
225 const struct formstr format2[] = {
226   {28,5,rr,A,A,0},      /* cvtw.b */
227   {28,6,rr,A,A,0},      /* cvtw.h */
228   {29,7,rr,A,A,0},      /* cvtb.w */
229   {30,7,rr,A,A,0},      /* cvth.w */
230   {28,5,rr,S,S,0},      /* cvtw.b */
231   {28,6,rr,S,S,0},      /* cvtw.h */
232   {29,7,rr,S,S,0},      /* cvtb.w */
233   {30,7,rr,S,S,0},      /* cvth.w */
234   {28,3,rr,S,S,0},      /* cvtw.s */
235   {31,7,rr,S,S,0},      /* cvts.w */
236   {32,3,rr,S,S,0},      /* cvtd.s */
237   {31,4,rr,S,S,0},      /* cvts.d */
238   {31,8,rr,S,S,0},      /* cvts.l */
239   {32,8,rr,S,S,0},      /* cvtd.l */
240   {33,3,rr,S,S,0},      /* cvtl.s */
241   {33,4,rr,S,S,0},      /* cvtl.d */
242   {34,0,rr,A,A,0},      /* ldpa */
243   {8,0,nr,A,0,0},       /* shf */
244   {18,6,nr,A,0,0},      /* ld.h */
245   {18,7,nr,A,0,0},      /* ld.w */
246   {33,7,rr,S,S,0},      /* cvtl.w */
247   {28,8,rr,S,S,0},      /* cvtw.l */
248   {35,1,rr,S,S,0},      /* plc.t */
249   {36,0,rr,S,S,0},      /* tzc */
250   {37,6,rr,A,A,0},      /* eq.h */
251   {37,7,rr,A,A,0},      /* eq.w */
252   {37,6,nr,A,0,0},      /* eq.h */
253   {37,7,nr,A,0,0},      /* eq.w */
254   {37,5,rr,S,S,0},      /* eq.b */
255   {37,6,rr,S,S,0},      /* eq.h */
256   {37,7,rr,S,S,0},      /* eq.w */
257   {37,8,rr,S,S,0},      /* eq.l */
258   {38,6,rr,A,A,0},      /* leu.h */
259   {38,7,rr,A,A,0},      /* leu.w */
260   {38,6,nr,A,0,0},      /* leu.h */
261   {38,7,nr,A,0,0},      /* leu.w */
262   {38,5,rr,S,S,0},      /* leu.b */
263   {38,6,rr,S,S,0},      /* leu.h */
264   {38,7,rr,S,S,0},      /* leu.w */
265   {38,8,rr,S,S,0},      /* leu.l */
266   {39,6,rr,A,A,0},      /* ltu.h */
267   {39,7,rr,A,A,0},      /* ltu.w */
268   {39,6,nr,A,0,0},      /* ltu.h */
269   {39,7,nr,A,0,0},      /* ltu.w */
270   {39,5,rr,S,S,0},      /* ltu.b */
271   {39,6,rr,S,S,0},      /* ltu.h */
272   {39,7,rr,S,S,0},      /* ltu.w */
273   {39,8,rr,S,S,0},      /* ltu.l */
274   {40,6,rr,A,A,0},      /* le.h */
275   {40,7,rr,A,A,0},      /* le.w */
276   {40,6,nr,A,0,0},      /* le.h */
277   {40,7,nr,A,0,0},      /* le.w */
278   {40,5,rr,S,S,0},      /* le.b */
279   {40,6,rr,S,S,0},      /* le.h */
280   {40,7,rr,S,S,0},      /* le.w */
281   {40,8,rr,S,S,0},      /* le.l */
282   {41,6,rr,A,A,0},      /* lt.h */
283   {41,7,rr,A,A,0},      /* lt.w */
284   {41,6,nr,A,0,0},      /* lt.h */
285   {41,7,nr,A,0,0},      /* lt.w */
286   {41,5,rr,S,S,0},      /* lt.b */
287   {41,6,rr,S,S,0},      /* lt.h */
288   {41,7,rr,S,S,0},      /* lt.w */
289   {41,8,rr,S,S,0},      /* lt.l */
290   {9,7,rr,S,A,0},       /* add.w */
291   {8,0,rr,A,A,0},       /* shf */
292   {0,0,rr,A,A,0},       /* mov */
293   {0,0,rr,S,A,0},       /* mov */
294   {0,7,rr,S,S,0},       /* mov.w */
295   {8,0,rr,S,S,0},       /* shf */
296   {0,0,rr,S,S,0},       /* mov */
297   {0,0,rr,A,S,0},       /* mov */
298   {5,0,rr,A,A,0},       /* and */
299   {6,0,rr,A,A,0},       /* or */
300   {7,0,rr,A,A,0},       /* xor */
301   {42,0,rr,A,A,0},      /* not */
302   {5,0,rr,S,S,0},       /* and */
303   {6,0,rr,S,S,0},       /* or */
304   {7,0,rr,S,S,0},       /* xor */
305   {42,0,rr,S,S,0},      /* not */
306   {40,3,rr,S,S,0},      /* le.s */
307   {40,4,rr,S,S,0},      /* le.d */
308   {41,3,rr,S,S,0},      /* lt.s */
309   {41,4,rr,S,S,0},      /* lt.d */
310   {9,3,rr,S,S,0},       /* add.s */
311   {9,4,rr,S,S,0},       /* add.d */
312   {10,3,rr,S,S,0},      /* sub.s */
313   {10,4,rr,S,S,0},      /* sub.d */
314   {37,3,rr,S,S,0},      /* eq.s */
315   {37,4,rr,S,S,0},      /* eq.d */
316   {43,6,rr,A,A,0},      /* neg.h */
317   {43,7,rr,A,A,0},      /* neg.w */
318   {3,3,rr,S,S,0},       /* mul.s */
319   {3,4,rr,S,S,0},       /* mul.d */
320   {4,3,rr,S,S,0},       /* div.s */
321   {4,4,rr,S,S,0},       /* div.d */
322   {9,6,rr,A,A,0},       /* add.h */
323   {9,7,rr,A,A,0},       /* add.w */
324   {9,6,nr,A,0,0},       /* add.h */
325   {9,7,nr,A,0,0},       /* add.w */
326   {9,5,rr,S,S,0},       /* add.b */
327   {9,6,rr,S,S,0},       /* add.h */
328   {9,7,rr,S,S,0},       /* add.w */
329   {9,8,rr,S,S,0},       /* add.l */
330   {10,6,rr,A,A,0},      /* sub.h */
331   {10,7,rr,A,A,0},      /* sub.w */
332   {10,6,nr,A,0,0},      /* sub.h */
333   {10,7,nr,A,0,0},      /* sub.w */
334   {10,5,rr,S,S,0},      /* sub.b */
335   {10,6,rr,S,S,0},      /* sub.h */
336   {10,7,rr,S,S,0},      /* sub.w */
337   {10,8,rr,S,S,0},      /* sub.l */
338   {3,6,rr,A,A,0},       /* mul.h */
339   {3,7,rr,A,A,0},       /* mul.w */
340   {3,6,nr,A,0,0},       /* mul.h */
341   {3,7,nr,A,0,0},       /* mul.w */
342   {3,5,rr,S,S,0},       /* mul.b */
343   {3,6,rr,S,S,0},       /* mul.h */
344   {3,7,rr,S,S,0},       /* mul.w */
345   {3,8,rr,S,S,0},       /* mul.l */
346   {4,6,rr,A,A,0},       /* div.h */
347   {4,7,rr,A,A,0},       /* div.w */
348   {4,6,nr,A,0,0},       /* div.h */
349   {4,7,nr,A,0,0},       /* div.w */
350   {4,5,rr,S,S,0},       /* div.b */
351   {4,6,rr,S,S,0},       /* div.h */
352   {4,7,rr,S,S,0},       /* div.w */
353   {4,8,rr,S,S,0},       /* div.l */
354 };
355
356 const struct formstr format3[] = {
357   {32,3,rr,V,V,0},      /* cvtd.s */
358   {31,4,rr,V,V,0},      /* cvts.d */
359   {33,4,rr,V,V,0},      /* cvtl.d */
360   {32,8,rr,V,V,0},      /* cvtd.l */
361   {0,0,rrl,S,S,VM},     /* mov */
362   {0,0,rlr,S,VM,S},     /* mov */
363   {0,0,0,0,0,0},
364   {44,0,rr,S,S,0},      /* lop */
365   {36,0,rr,V,V,0},      /* tzc */
366   {44,0,rr,V,V,0},      /* lop */
367   {0,0,0,0,0,0},
368   {42,0,rr,V,V,0},      /* not */
369   {8,0,rr,S,V,0},       /* shf */
370   {35,1,rr,V,V,0},      /* plc.t */
371   {45,2,rr,V,V,0},      /* cprs.f */
372   {45,1,rr,V,V,0},      /* cprs.t */
373   {37,3,rr,V,V,0},      /* eq.s */
374   {37,4,rr,V,V,0},      /* eq.d */
375   {43,3,rr,V,V,0},      /* neg.s */
376   {43,4,rr,V,V,0},      /* neg.d */
377   {37,3,rr,S,V,0},      /* eq.s */
378   {37,4,rr,S,V,0},      /* eq.d */
379   {43,3,rr,S,S,0},      /* neg.s */
380   {43,4,rr,S,S,0},      /* neg.d */
381   {40,3,rr,V,V,0},      /* le.s */
382   {40,4,rr,V,V,0},      /* le.d */
383   {41,3,rr,V,V,0},      /* lt.s */
384   {41,4,rr,V,V,0},      /* lt.d */
385   {40,3,rr,S,V,0},      /* le.s */
386   {40,4,rr,S,V,0},      /* le.d */
387   {41,3,rr,S,V,0},      /* lt.s */
388   {41,4,rr,S,V,0},      /* lt.d */
389   {37,5,rr,V,V,0},      /* eq.b */
390   {37,6,rr,V,V,0},      /* eq.h */
391   {37,7,rr,V,V,0},      /* eq.w */
392   {37,8,rr,V,V,0},      /* eq.l */
393   {37,5,rr,S,V,0},      /* eq.b */
394   {37,6,rr,S,V,0},      /* eq.h */
395   {37,7,rr,S,V,0},      /* eq.w */
396   {37,8,rr,S,V,0},      /* eq.l */
397   {40,5,rr,V,V,0},      /* le.b */
398   {40,6,rr,V,V,0},      /* le.h */
399   {40,7,rr,V,V,0},      /* le.w */
400   {40,8,rr,V,V,0},      /* le.l */
401   {40,5,rr,S,V,0},      /* le.b */
402   {40,6,rr,S,V,0},      /* le.h */
403   {40,7,rr,S,V,0},      /* le.w */
404   {40,8,rr,S,V,0},      /* le.l */
405   {41,5,rr,V,V,0},      /* lt.b */
406   {41,6,rr,V,V,0},      /* lt.h */
407   {41,7,rr,V,V,0},      /* lt.w */
408   {41,8,rr,V,V,0},      /* lt.l */
409   {41,5,rr,S,V,0},      /* lt.b */
410   {41,6,rr,S,V,0},      /* lt.h */
411   {41,7,rr,S,V,0},      /* lt.w */
412   {41,8,rr,S,V,0},      /* lt.l */
413   {43,5,rr,V,V,0},      /* neg.b */
414   {43,6,rr,V,V,0},      /* neg.h */
415   {43,7,rr,V,V,0},      /* neg.w */
416   {43,8,rr,V,V,0},      /* neg.l */
417   {43,5,rr,S,S,0},      /* neg.b */
418   {43,6,rr,S,S,0},      /* neg.h */
419   {43,7,rr,S,S,0},      /* neg.w */
420   {43,8,rr,S,S,0},      /* neg.l */
421 };
422
423 const struct formstr format4[] = {
424   {46,0,nops,0,0,0},    /* nop */
425   {47,0,pcrel,0,0,0},   /* br */
426   {48,2,pcrel,0,0,0},   /* bri.f */
427   {48,1,pcrel,0,0,0},   /* bri.t */
428   {49,2,pcrel,0,0,0},   /* bra.f */
429   {49,1,pcrel,0,0,0},   /* bra.t */
430   {50,2,pcrel,0,0,0},   /* brs.f */
431   {50,1,pcrel,0,0,0},   /* brs.t */
432 };
433
434 const struct formstr format5[] = {
435   {51,5,rr,V,V,0},      /* ldvi.b */
436   {51,6,rr,V,V,0},      /* ldvi.h */
437   {51,7,rr,V,V,0},      /* ldvi.w */
438   {51,8,rr,V,V,0},      /* ldvi.l */
439   {28,3,rr,V,V,0},      /* cvtw.s */
440   {31,7,rr,V,V,0},      /* cvts.w */
441   {28,8,rr,V,V,0},      /* cvtw.l */
442   {33,7,rr,V,V,0},      /* cvtl.w */
443   {52,5,rxr,V,V,0},     /* stvi.b */
444   {52,6,rxr,V,V,0},     /* stvi.h */
445   {52,7,rxr,V,V,0},     /* stvi.w */
446   {52,8,rxr,V,V,0},     /* stvi.l */
447   {52,5,rxr,S,V,0},     /* stvi.b */
448   {52,6,rxr,S,V,0},     /* stvi.h */
449   {52,7,rxr,S,V,0},     /* stvi.w */
450   {52,8,rxr,S,V,0},     /* stvi.l */
451 };
452
453 const struct formstr format6[] = {
454   {53,0,r,A,0,0},       /* ldsdr */
455   {54,0,r,A,0,0},       /* ldkdr */
456   {55,3,r,S,0,0},       /* ln.s */
457   {55,4,r,S,0,0},       /* ln.d */
458   {56,0,nops,0,0,0},    /* patu */
459   {57,0,r,A,0,0},       /* pate */
460   {58,0,nops,0,0,0},    /* pich */
461   {59,0,nops,0,0,0},    /* plch */
462   {0,0,lr,PSW,A,0},     /* mov */
463   {0,0,rxl,A,PSW,0},    /* mov */
464   {0,0,lr,PC,A,0},      /* mov */
465   {60,0,r,S,0,0},       /* idle */
466   {0,0,lr,ITR,S,0},     /* mov */
467   {0,0,rxl,S,ITR,0},    /* mov */
468   {0,0,0,0,0,0},
469   {0,0,rxl,S,ITSR,0},   /* mov */
470   {61,0,nops,0,0,0},    /* rtnq */
471   {62,0,nops,0,0,0},    /* cfork */
472   {63,0,nops,0,0,0},    /* rtn */
473   {64,0,nops,0,0,0},    /* wfork */
474   {65,0,nops,0,0,0},    /* join */
475   {66,0,nops,0,0,0},    /* rtnc */
476   {67,3,r,S,0,0},       /* exp.s */
477   {67,4,r,S,0,0},       /* exp.d */
478   {68,3,r,S,0,0},       /* sin.s */
479   {68,4,r,S,0,0},       /* sin.d */
480   {0,0,0,0,0,0},
481   {0,0,0,0,0,0},
482   {69,3,r,S,0,0},       /* cos.s */
483   {69,4,r,S,0,0},       /* cos.d */
484   {0,0,0,0,0,0},
485   {0,0,0,0,0,0},
486   {70,7,r,A,0,0},       /* psh.w */
487   {0,0,0,0,0,0},
488   {71,7,r,A,0,0},       /* pop.w */
489   {0,0,0,0,0,0},
490   {70,7,r,S,0,0},       /* psh.w */
491   {70,8,r,S,0,0},       /* psh.l */
492   {71,7,r,S,0,0},       /* pop.w */
493   {71,8,r,S,0,0},       /* pop.l */
494   {72,0,nops,0,0,0},    /* eni */
495   {73,0,nops,0,0,0},    /* dsi */
496   {74,0,nops,0,0,0},    /* bkpt */
497   {75,0,nops,0,0,0},    /* msync */
498   {76,0,r,S,0,0},       /* mski */
499   {77,0,r,S,0,0},       /* xmti */
500   {0,0,rxl,S,VV,0},     /* mov */
501   {78,0,nops,0,0,0},    /* tstvv */
502   {0,0,lr,VS,A,0},      /* mov */
503   {0,0,rxl,A,VS,0},     /* mov */
504   {0,0,lr,VL,A,0},      /* mov */
505   {0,0,rxl,A,VL,0},     /* mov */
506   {0,7,lr,VS,S,0},      /* mov.w */
507   {0,7,rxl,S,VS,0},     /* mov.w */
508   {0,7,lr,VL,S,0},      /* mov.w */
509   {0,7,rxl,S,VL,0},     /* mov.w */
510   {79,0,r,A,0,0},       /* diag */
511   {80,0,nops,0,0,0},    /* pbkpt */
512   {81,3,r,S,0,0},       /* sqrt.s */
513   {81,4,r,S,0,0},       /* sqrt.d */
514   {82,0,nops,0,0,0},    /* casr */
515   {0,0,0,0,0,0},
516   {83,3,r,S,0,0},       /* atan.s */
517   {83,4,r,S,0,0},       /* atan.d */
518 };
519
520 const struct formstr format7[] = {
521   {84,5,r,V,0,0},       /* sum.b */
522   {84,6,r,V,0,0},       /* sum.h */
523   {84,7,r,V,0,0},       /* sum.w */
524   {84,8,r,V,0,0},       /* sum.l */
525   {85,0,r,V,0,0},       /* all */
526   {86,0,r,V,0,0},       /* any */
527   {87,0,r,V,0,0},       /* parity */
528   {0,0,0,0,0,0},
529   {88,5,r,V,0,0},       /* max.b */
530   {88,6,r,V,0,0},       /* max.h */
531   {88,7,r,V,0,0},       /* max.w */
532   {88,8,r,V,0,0},       /* max.l */
533   {89,5,r,V,0,0},       /* min.b */
534   {89,6,r,V,0,0},       /* min.h */
535   {89,7,r,V,0,0},       /* min.w */
536   {89,8,r,V,0,0},       /* min.l */
537   {84,3,r,V,0,0},       /* sum.s */
538   {84,4,r,V,0,0},       /* sum.d */
539   {90,3,r,V,0,0},       /* prod.s */
540   {90,4,r,V,0,0},       /* prod.d */
541   {88,3,r,V,0,0},       /* max.s */
542   {88,4,r,V,0,0},       /* max.d */
543   {89,3,r,V,0,0},       /* min.s */
544   {89,4,r,V,0,0},       /* min.d */
545   {90,5,r,V,0,0},       /* prod.b */
546   {90,6,r,V,0,0},       /* prod.h */
547   {90,7,r,V,0,0},       /* prod.w */
548   {90,8,r,V,0,0},       /* prod.l */
549   {35,2,lr,VM,S,0},     /* plc.f */
550   {35,1,lr,VM,S,0},     /* plc.t */
551   {0,0,0,0,0,0},
552   {0,0,0,0,0,0},
553 };
554
555 const struct formstr formatx[] = {
556   {0,0,0,0,0,0},
557 };
558
559 const struct formstr format1a[] = {
560   {91,0,imr,A,0,0},     /* halt */
561   {92,0,a4,0,0,0},      /* sysc */
562   {18,6,imr,A,0,0},     /* ld.h */
563   {18,7,imr,A,0,0},     /* ld.w */
564   {5,0,imr,A,0,0},      /* and */
565   {6,0,imr,A,0,0},      /* or */
566   {7,0,imr,A,0,0},      /* xor */
567   {8,0,imr,A,0,0},      /* shf */
568   {9,6,imr,A,0,0},      /* add.h */
569   {9,7,imr,A,0,0},      /* add.w */
570   {10,6,imr,A,0,0},     /* sub.h */
571   {10,7,imr,A,0,0},     /* sub.w */
572   {3,6,imr,A,0,0},      /* mul.h */
573   {3,7,imr,A,0,0},      /* mul.w */
574   {4,6,imr,A,0,0},      /* div.h */
575   {4,7,imr,A,0,0},      /* div.w */
576   {18,7,iml,VL,0,0},    /* ld.w */
577   {18,7,iml,VS,0,0},    /* ld.w */
578   {0,0,0,0,0,0},
579   {8,7,imr,S,0,0},      /* shf.w */
580   {93,0,a5,0,0,0},      /* trap */
581   {0,0,0,0,0,0},
582   {37,6,imr,A,0,0},     /* eq.h */
583   {37,7,imr,A,0,0},     /* eq.w */
584   {38,6,imr,A,0,0},     /* leu.h */
585   {38,7,imr,A,0,0},     /* leu.w */
586   {39,6,imr,A,0,0},     /* ltu.h */
587   {39,7,imr,A,0,0},     /* ltu.w */
588   {40,6,imr,A,0,0},     /* le.h */
589   {40,7,imr,A,0,0},     /* le.w */
590   {41,6,imr,A,0,0},     /* lt.h */
591   {41,7,imr,A,0,0},     /* lt.w */
592 };
593
594 const struct formstr format1b[] = {
595   {18,4,imr,S,0,0},     /* ld.d */
596   {18,10,imr,S,0,0},    /* ld.u */
597   {18,8,imr,S,0,0},     /* ld.l */
598   {18,7,imr,S,0,0},     /* ld.w */
599   {5,0,imr,S,0,0},      /* and */
600   {6,0,imr,S,0,0},      /* or */
601   {7,0,imr,S,0,0},      /* xor */
602   {8,0,imr,S,0,0},      /* shf */
603   {9,6,imr,S,0,0},      /* add.h */
604   {9,7,imr,S,0,0},      /* add.w */
605   {10,6,imr,S,0,0},     /* sub.h */
606   {10,7,imr,S,0,0},     /* sub.w */
607   {3,6,imr,S,0,0},      /* mul.h */
608   {3,7,imr,S,0,0},      /* mul.w */
609   {4,6,imr,S,0,0},      /* div.h */
610   {4,7,imr,S,0,0},      /* div.w */
611   {9,3,imr,S,0,0},      /* add.s */
612   {10,3,imr,S,0,0},     /* sub.s */
613   {3,3,imr,S,0,0},      /* mul.s */
614   {4,3,imr,S,0,0},      /* div.s */
615   {40,3,imr,S,0,0},     /* le.s */
616   {41,3,imr,S,0,0},     /* lt.s */
617   {37,6,imr,S,0,0},     /* eq.h */
618   {37,7,imr,S,0,0},     /* eq.w */
619   {38,6,imr,S,0,0},     /* leu.h */
620   {38,7,imr,S,0,0},     /* leu.w */
621   {39,6,imr,S,0,0},     /* ltu.h */
622   {39,7,imr,S,0,0},     /* ltu.w */
623   {40,6,imr,S,0,0},     /* le.h */
624   {40,7,imr,S,0,0},     /* le.w */
625   {41,6,imr,S,0,0},     /* lt.h */
626   {41,7,imr,S,0,0},     /* lt.w */
627 };
628
629 const struct formstr e0_format0[] = {
630   {10,3,rrr,S,V,V},     /* sub.s */
631   {10,4,rrr,S,V,V},     /* sub.d */
632   {4,3,rrr,S,V,V},      /* div.s */
633   {4,4,rrr,S,V,V},      /* div.d */
634   {10,11,rrr,S,V,V},    /* sub.s.f */
635   {10,12,rrr,S,V,V},    /* sub.d.f */
636   {4,11,rrr,S,V,V},     /* div.s.f */
637   {4,12,rrr,S,V,V},     /* div.d.f */
638   {3,11,rrr,V,V,V},     /* mul.s.f */
639   {3,12,rrr,V,V,V},     /* mul.d.f */
640   {4,11,rrr,V,V,V},     /* div.s.f */
641   {4,12,rrr,V,V,V},     /* div.d.f */
642   {3,11,rrr,V,S,V},     /* mul.s.f */
643   {3,12,rrr,V,S,V},     /* mul.d.f */
644   {4,11,rrr,V,S,V},     /* div.s.f */
645   {4,12,rrr,V,S,V},     /* div.d.f */
646   {5,2,rrr,V,V,V},      /* and.f */
647   {6,2,rrr,V,V,V},      /* or.f */
648   {7,2,rrr,V,V,V},      /* xor.f */
649   {8,2,rrr,V,V,V},      /* shf.f */
650   {5,2,rrr,V,S,V},      /* and.f */
651   {6,2,rrr,V,S,V},      /* or.f */
652   {7,2,rrr,V,S,V},      /* xor.f */
653   {8,2,rrr,V,S,V},      /* shf.f */
654   {9,11,rrr,V,V,V},     /* add.s.f */
655   {9,12,rrr,V,V,V},     /* add.d.f */
656   {10,11,rrr,V,V,V},    /* sub.s.f */
657   {10,12,rrr,V,V,V},    /* sub.d.f */
658   {9,11,rrr,V,S,V},     /* add.s.f */
659   {9,12,rrr,V,S,V},     /* add.d.f */
660   {10,11,rrr,V,S,V},    /* sub.s.f */
661   {10,12,rrr,V,S,V},    /* sub.d.f */
662   {9,13,rrr,V,V,V},     /* add.b.f */
663   {9,14,rrr,V,V,V},     /* add.h.f */
664   {9,15,rrr,V,V,V},     /* add.w.f */
665   {9,16,rrr,V,V,V},     /* add.l.f */
666   {9,13,rrr,V,S,V},     /* add.b.f */
667   {9,14,rrr,V,S,V},     /* add.h.f */
668   {9,15,rrr,V,S,V},     /* add.w.f */
669   {9,16,rrr,V,S,V},     /* add.l.f */
670   {10,13,rrr,V,V,V},    /* sub.b.f */
671   {10,14,rrr,V,V,V},    /* sub.h.f */
672   {10,15,rrr,V,V,V},    /* sub.w.f */
673   {10,16,rrr,V,V,V},    /* sub.l.f */
674   {10,13,rrr,V,S,V},    /* sub.b.f */
675   {10,14,rrr,V,S,V},    /* sub.h.f */
676   {10,15,rrr,V,S,V},    /* sub.w.f */
677   {10,16,rrr,V,S,V},    /* sub.l.f */
678   {3,13,rrr,V,V,V},     /* mul.b.f */
679   {3,14,rrr,V,V,V},     /* mul.h.f */
680   {3,15,rrr,V,V,V},     /* mul.w.f */
681   {3,16,rrr,V,V,V},     /* mul.l.f */
682   {3,13,rrr,V,S,V},     /* mul.b.f */
683   {3,14,rrr,V,S,V},     /* mul.h.f */
684   {3,15,rrr,V,S,V},     /* mul.w.f */
685   {3,16,rrr,V,S,V},     /* mul.l.f */
686   {4,13,rrr,V,V,V},     /* div.b.f */
687   {4,14,rrr,V,V,V},     /* div.h.f */
688   {4,15,rrr,V,V,V},     /* div.w.f */
689   {4,16,rrr,V,V,V},     /* div.l.f */
690   {4,13,rrr,V,S,V},     /* div.b.f */
691   {4,14,rrr,V,S,V},     /* div.h.f */
692   {4,15,rrr,V,S,V},     /* div.w.f */
693   {4,16,rrr,V,S,V},     /* div.l.f */
694 };
695
696 const struct formstr e0_format1[] = {
697   {0,0,0,0,0,0},
698   {94,0,a3,0,0,0},      /* tst */
699   {95,0,a3,0,0,0},      /* lck */
700   {96,0,a3,0,0,0},      /* ulk */
701   {17,0,a1r,S,0,0},     /* ldea */
702   {97,0,a1r,A,0,0},     /* spawn */
703   {98,0,a1r,A,0,0},     /* ldcmr */
704   {99,0,a2r,A,0,0},     /* stcmr */
705   {100,0,a1r,A,0,0},    /* popr */
706   {101,0,a2r,A,0,0},    /* pshr */
707   {102,7,a1r,A,0,0},    /* rcvr.w */
708   {103,7,a2r,A,0,0},    /* matm.w */
709   {104,7,a2r,A,0,0},    /* sndr.w */
710   {104,8,a2r,S,0,0},    /* sndr.l */
711   {102,8,a1r,S,0,0},    /* rcvr.l */
712   {103,8,a2r,S,0,0},    /* matm.l */
713   {0,0,0,0,0,0},
714   {0,0,0,0,0,0},
715   {0,0,0,0,0,0},
716   {0,0,0,0,0,0},
717   {0,0,0,0,0,0},
718   {0,0,0,0,0,0},
719   {0,0,0,0,0,0},
720   {0,0,0,0,0,0},
721   {0,0,0,0,0,0},
722   {0,0,0,0,0,0},
723   {0,0,0,0,0,0},
724   {0,0,0,0,0,0},
725   {0,0,0,0,0,0},
726   {0,0,0,0,0,0},
727   {0,0,0,0,0,0},
728   {0,0,0,0,0,0},
729   {105,7,a2r,A,0,0},    /* putr.w */
730   {105,8,a2r,S,0,0},    /* putr.l */
731   {106,7,a1r,A,0,0},    /* getr.w */
732   {106,8,a1r,S,0,0},    /* getr.l */
733   {26,13,a2r,S,0,0},    /* ste.b.f */
734   {26,14,a2r,S,0,0},    /* ste.h.f */
735   {26,15,a2r,S,0,0},    /* ste.w.f */
736   {26,16,a2r,S,0,0},    /* ste.l.f */
737   {107,7,a2r,A,0,0},    /* matr.w */
738   {108,7,a2r,A,0,0},    /* mat.w */
739   {109,7,a1r,A,0,0},    /* get.w */
740   {110,7,a1r,A,0,0},    /* rcv.w */
741   {0,0,0,0,0,0},
742   {111,7,a1r,A,0,0},    /* inc.w */
743   {112,7,a2r,A,0,0},    /* put.w */
744   {113,7,a2r,A,0,0},    /* snd.w */
745   {107,8,a2r,S,0,0},    /* matr.l */
746   {108,8,a2r,S,0,0},    /* mat.l */
747   {109,8,a1r,S,0,0},    /* get.l */
748   {110,8,a1r,S,0,0},    /* rcv.l */
749   {0,0,0,0,0,0},
750   {111,8,a1r,S,0,0},    /* inc.l */
751   {112,8,a2r,S,0,0},    /* put.l */
752   {113,8,a2r,S,0,0},    /* snd.l */
753   {18,13,a1r,V,0,0},    /* ld.b.f */
754   {18,14,a1r,V,0,0},    /* ld.h.f */
755   {18,15,a1r,V,0,0},    /* ld.w.f */
756   {18,16,a1r,V,0,0},    /* ld.l.f */
757   {21,13,a2r,V,0,0},    /* st.b.f */
758   {21,14,a2r,V,0,0},    /* st.h.f */
759   {21,15,a2r,V,0,0},    /* st.w.f */
760   {21,16,a2r,V,0,0},    /* st.l.f */
761 };
762
763 const struct formstr e0_format2[] = {
764   {28,5,rr,V,V,0},      /* cvtw.b */
765   {28,6,rr,V,V,0},      /* cvtw.h */
766   {29,7,rr,V,V,0},      /* cvtb.w */
767   {30,7,rr,V,V,0},      /* cvth.w */
768   {28,13,rr,V,V,0},     /* cvtw.b.f */
769   {28,14,rr,V,V,0},     /* cvtw.h.f */
770   {29,15,rr,V,V,0},     /* cvtb.w.f */
771   {30,15,rr,V,V,0},     /* cvth.w.f */
772   {31,8,rr,V,V,0},      /* cvts.l */
773   {32,7,rr,V,V,0},      /* cvtd.w */
774   {33,3,rr,V,V,0},      /* cvtl.s */
775   {28,4,rr,V,V,0},      /* cvtw.d */
776   {31,16,rr,V,V,0},     /* cvts.l.f */
777   {32,15,rr,V,V,0},     /* cvtd.w.f */
778   {33,11,rr,V,V,0},     /* cvtl.s.f */
779   {28,12,rr,V,V,0},     /* cvtw.d.f */
780   {114,0,rr,S,S,0},     /* enal */
781   {8,7,rr,S,S,0},       /* shf.w */
782   {115,0,rr,S,S,0},     /* enag */
783   {0,0,0,0,0,0},
784   {28,4,rr,S,S,0},      /* cvtw.d */
785   {32,7,rr,S,S,0},      /* cvtd.w */
786   {0,0,0,0,0,0},
787   {0,0,0,0,0,0},
788   {0,0,0,0,0,0},
789   {0,0,0,0,0,0},
790   {0,0,0,0,0,0},
791   {0,0,0,0,0,0},
792   {116,3,rr,S,S,0},     /* frint.s */
793   {116,4,rr,S,S,0},     /* frint.d */
794   {0,0,0,0,0,0},
795   {0,0,0,0,0,0},
796   {0,0,0,0,0,0},
797   {0,0,0,0,0,0},
798   {0,0,0,0,0,0},
799   {0,0,0,0,0,0},
800   {0,0,0,0,0,0},
801   {0,0,0,0,0,0},
802   {0,0,0,0,0,0},
803   {0,0,0,0,0,0},
804   {0,0,0,0,0,0},
805   {0,0,0,0,0,0},
806   {0,0,0,0,0,0},
807   {0,0,0,0,0,0},
808   {0,0,0,0,0,0},
809   {0,0,0,0,0,0},
810   {0,0,0,0,0,0},
811   {0,0,0,0,0,0},
812   {0,0,0,0,0,0},
813   {0,0,0,0,0,0},
814   {0,0,0,0,0,0},
815   {0,0,0,0,0,0},
816   {0,0,0,0,0,0},
817   {0,0,0,0,0,0},
818   {0,0,0,0,0,0},
819   {0,0,0,0,0,0},
820   {0,0,0,0,0,0},
821   {0,0,0,0,0,0},
822   {0,0,0,0,0,0},
823   {0,0,0,0,0,0},
824   {0,0,0,0,0,0},
825   {0,0,0,0,0,0},
826   {0,0,0,0,0,0},
827   {0,0,0,0,0,0},
828   {0,0,0,0,0,0},
829   {0,0,0,0,0,0},
830   {0,0,0,0,0,0},
831   {0,0,0,0,0,0},
832   {0,0,0,0,0,0},
833   {0,0,0,0,0,0},
834   {0,0,0,0,0,0},
835   {0,0,0,0,0,0},
836   {0,0,0,0,0,0},
837   {0,0,0,0,0,0},
838   {0,0,0,0,0,0},
839   {0,0,0,0,0,0},
840   {0,0,0,0,0,0},
841   {0,0,0,0,0,0},
842   {0,0,0,0,0,0},
843   {0,0,0,0,0,0},
844   {0,0,0,0,0,0},
845   {0,0,0,0,0,0},
846   {0,0,0,0,0,0},
847   {0,0,0,0,0,0},
848   {0,0,0,0,0,0},
849   {0,0,0,0,0,0},
850   {0,0,0,0,0,0},
851   {0,0,0,0,0,0},
852   {0,0,0,0,0,0},
853   {0,0,0,0,0,0},
854   {0,0,0,0,0,0},
855   {0,0,0,0,0,0},
856   {0,0,0,0,0,0},
857   {0,0,0,0,0,0},
858   {0,0,0,0,0,0},
859   {0,0,0,0,0,0},
860   {0,0,0,0,0,0},
861   {0,0,0,0,0,0},
862   {116,3,rr,V,V,0},     /* frint.s */
863   {116,4,rr,V,V,0},     /* frint.d */
864   {0,0,0,0,0,0},
865   {0,0,0,0,0,0},
866   {116,11,rr,V,V,0},    /* frint.s.f */
867   {116,12,rr,V,V,0},    /* frint.d.f */
868   {0,0,0,0,0,0},
869   {0,0,0,0,0,0},
870   {0,0,0,0,0,0},
871   {0,0,0,0,0,0},
872   {0,0,0,0,0,0},
873   {0,0,0,0,0,0},
874   {0,0,0,0,0,0},
875   {0,0,0,0,0,0},
876   {0,0,0,0,0,0},
877   {0,0,0,0,0,0},
878   {0,0,0,0,0,0},
879   {0,0,0,0,0,0},
880   {81,3,rr,V,V,0},      /* sqrt.s */
881   {81,4,rr,V,V,0},      /* sqrt.d */
882   {0,0,0,0,0,0},
883   {0,0,0,0,0,0},
884   {0,0,0,0,0,0},
885   {0,0,0,0,0,0},
886   {0,0,0,0,0,0},
887   {0,0,0,0,0,0},
888   {81,11,rr,V,V,0},     /* sqrt.s.f */
889   {81,12,rr,V,V,0},     /* sqrt.d.f */
890   {0,0,0,0,0,0},
891   {0,0,0,0,0,0},
892 };
893
894 const struct formstr e0_format3[] = {
895   {32,11,rr,V,V,0},     /* cvtd.s.f */
896   {31,12,rr,V,V,0},     /* cvts.d.f */
897   {33,12,rr,V,V,0},     /* cvtl.d.f */
898   {32,16,rr,V,V,0},     /* cvtd.l.f */
899   {0,0,0,0,0,0},
900   {0,0,0,0,0,0},
901   {0,0,0,0,0,0},
902   {0,0,0,0,0,0},
903   {36,2,rr,V,V,0},      /* tzc.f */
904   {44,2,rr,V,V,0},      /* lop.f */
905   {117,2,rr,V,V,0},     /* xpnd.f */
906   {42,2,rr,V,V,0},      /* not.f */
907   {8,2,rr,S,V,0},       /* shf.f */
908   {35,17,rr,V,V,0},     /* plc.t.f */
909   {0,0,0,0,0,0},
910   {0,0,0,0,0,0},
911   {37,11,rr,V,V,0},     /* eq.s.f */
912   {37,12,rr,V,V,0},     /* eq.d.f */
913   {43,11,rr,V,V,0},     /* neg.s.f */
914   {43,12,rr,V,V,0},     /* neg.d.f */
915   {37,11,rr,S,V,0},     /* eq.s.f */
916   {37,12,rr,S,V,0},     /* eq.d.f */
917   {0,0,0,0,0,0},
918   {0,0,0,0,0,0},
919   {40,11,rr,V,V,0},     /* le.s.f */
920   {40,12,rr,V,V,0},     /* le.d.f */
921   {41,11,rr,V,V,0},     /* lt.s.f */
922   {41,12,rr,V,V,0},     /* lt.d.f */
923   {40,11,rr,S,V,0},     /* le.s.f */
924   {40,12,rr,S,V,0},     /* le.d.f */
925   {41,11,rr,S,V,0},     /* lt.s.f */
926   {41,12,rr,S,V,0},     /* lt.d.f */
927   {37,13,rr,V,V,0},     /* eq.b.f */
928   {37,14,rr,V,V,0},     /* eq.h.f */
929   {37,15,rr,V,V,0},     /* eq.w.f */
930   {37,16,rr,V,V,0},     /* eq.l.f */
931   {37,13,rr,S,V,0},     /* eq.b.f */
932   {37,14,rr,S,V,0},     /* eq.h.f */
933   {37,15,rr,S,V,0},     /* eq.w.f */
934   {37,16,rr,S,V,0},     /* eq.l.f */
935   {40,13,rr,V,V,0},     /* le.b.f */
936   {40,14,rr,V,V,0},     /* le.h.f */
937   {40,15,rr,V,V,0},     /* le.w.f */
938   {40,16,rr,V,V,0},     /* le.l.f */
939   {40,13,rr,S,V,0},     /* le.b.f */
940   {40,14,rr,S,V,0},     /* le.h.f */
941   {40,15,rr,S,V,0},     /* le.w.f */
942   {40,16,rr,S,V,0},     /* le.l.f */
943   {41,13,rr,V,V,0},     /* lt.b.f */
944   {41,14,rr,V,V,0},     /* lt.h.f */
945   {41,15,rr,V,V,0},     /* lt.w.f */
946   {41,16,rr,V,V,0},     /* lt.l.f */
947   {41,13,rr,S,V,0},     /* lt.b.f */
948   {41,14,rr,S,V,0},     /* lt.h.f */
949   {41,15,rr,S,V,0},     /* lt.w.f */
950   {41,16,rr,S,V,0},     /* lt.l.f */
951   {43,13,rr,V,V,0},     /* neg.b.f */
952   {43,14,rr,V,V,0},     /* neg.h.f */
953   {43,15,rr,V,V,0},     /* neg.w.f */
954   {43,16,rr,V,V,0},     /* neg.l.f */
955   {0,0,0,0,0,0},
956   {0,0,0,0,0,0},
957   {0,0,0,0,0,0},
958   {0,0,0,0,0,0},
959 };
960
961 const struct formstr e0_format4[] = {
962   {0,0,0,0,0,0},
963   {0,0,0,0,0,0},
964   {0,0,0,0,0,0},
965   {0,0,0,0,0,0},
966   {0,0,0,0,0,0},
967   {0,0,0,0,0,0},
968   {0,0,0,0,0,0},
969   {0,0,0,0,0,0},
970 };
971
972 const struct formstr e0_format5[] = {
973   {51,13,rr,V,V,0},     /* ldvi.b.f */
974   {51,14,rr,V,V,0},     /* ldvi.h.f */
975   {51,15,rr,V,V,0},     /* ldvi.w.f */
976   {51,16,rr,V,V,0},     /* ldvi.l.f */
977   {28,11,rr,V,V,0},     /* cvtw.s.f */
978   {31,15,rr,V,V,0},     /* cvts.w.f */
979   {28,16,rr,V,V,0},     /* cvtw.l.f */
980   {33,15,rr,V,V,0},     /* cvtl.w.f */
981   {52,13,rxr,V,V,0},    /* stvi.b.f */
982   {52,14,rxr,V,V,0},    /* stvi.h.f */
983   {52,15,rxr,V,V,0},    /* stvi.w.f */
984   {52,16,rxr,V,V,0},    /* stvi.l.f */
985   {52,13,rxr,S,V,0},    /* stvi.b.f */
986   {52,14,rxr,S,V,0},    /* stvi.h.f */
987   {52,15,rxr,S,V,0},    /* stvi.w.f */
988   {52,16,rxr,S,V,0},    /* stvi.l.f */
989 };
990
991 const struct formstr e0_format6[] = {
992   {0,0,rxl,S,CIR,0},    /* mov */
993   {0,0,lr,CIR,S,0},     /* mov */
994   {0,0,lr,TOC,S,0},     /* mov */
995   {0,0,lr,CPUID,S,0},   /* mov */
996   {0,0,rxl,S,TTR,0},    /* mov */
997   {0,0,lr,TTR,S,0},     /* mov */
998   {118,0,nops,0,0,0},   /* ctrsl */
999   {119,0,nops,0,0,0},   /* ctrsg */
1000   {0,0,rxl,S,VMU,0},    /* mov */
1001   {0,0,lr,VMU,S,0},     /* mov */
1002   {0,0,rxl,S,VML,0},    /* mov */
1003   {0,0,lr,VML,S,0},     /* mov */
1004   {0,0,rxl,S,ICR,0},    /* mov */
1005   {0,0,lr,ICR,S,0},     /* mov */
1006   {0,0,rxl,S,TCPU,0},   /* mov */
1007   {0,0,lr,TCPU,S,0},    /* mov */
1008   {0,0,0,0,0,0},
1009   {0,0,0,0,0,0},
1010   {0,0,0,0,0,0},
1011   {0,0,0,0,0,0},
1012   {120,0,nops,0,0,0},   /* stop */
1013   {0,0,0,0,0,0},
1014   {0,0,rxl,S,TID,0},    /* mov */
1015   {0,0,lr,TID,S,0},     /* mov */
1016   {0,0,0,0,0,0},
1017   {0,0,0,0,0,0},
1018   {0,0,0,0,0,0},
1019   {0,0,0,0,0,0},
1020   {0,0,0,0,0,0},
1021   {0,0,0,0,0,0},
1022   {0,0,0,0,0,0},
1023   {0,0,0,0,0,0},
1024   {0,0,0,0,0,0},
1025   {0,0,0,0,0,0},
1026   {0,0,0,0,0,0},
1027   {0,0,0,0,0,0},
1028   {0,0,0,0,0,0},
1029   {0,0,0,0,0,0},
1030   {0,0,0,0,0,0},
1031   {0,0,0,0,0,0},
1032   {0,0,0,0,0,0},
1033   {0,0,0,0,0,0},
1034   {0,0,0,0,0,0},
1035   {0,0,0,0,0,0},
1036   {0,0,0,0,0,0},
1037   {0,0,0,0,0,0},
1038   {0,0,0,0,0,0},
1039   {0,0,0,0,0,0},
1040   {0,0,0,0,0,0},
1041   {0,0,0,0,0,0},
1042   {0,0,0,0,0,0},
1043   {0,0,0,0,0,0},
1044   {0,0,0,0,0,0},
1045   {0,0,0,0,0,0},
1046   {0,0,0,0,0,0},
1047   {0,0,0,0,0,0},
1048   {0,0,0,0,0,0},
1049   {0,0,0,0,0,0},
1050   {0,0,0,0,0,0},
1051   {0,0,0,0,0,0},
1052   {0,0,0,0,0,0},
1053   {0,0,0,0,0,0},
1054   {0,0,0,0,0,0},
1055   {0,0,0,0,0,0},
1056 };
1057
1058 const struct formstr e0_format7[] = {
1059   {84,13,r,V,0,0},      /* sum.b.f */
1060   {84,14,r,V,0,0},      /* sum.h.f */
1061   {84,15,r,V,0,0},      /* sum.w.f */
1062   {84,16,r,V,0,0},      /* sum.l.f */
1063   {85,2,r,V,0,0},       /* all.f */
1064   {86,2,r,V,0,0},       /* any.f */
1065   {87,2,r,V,0,0},       /* parity.f */
1066   {0,0,0,0,0,0},
1067   {88,13,r,V,0,0},      /* max.b.f */
1068   {88,14,r,V,0,0},      /* max.h.f */
1069   {88,15,r,V,0,0},      /* max.w.f */
1070   {88,16,r,V,0,0},      /* max.l.f */
1071   {89,13,r,V,0,0},      /* min.b.f */
1072   {89,14,r,V,0,0},      /* min.h.f */
1073   {89,15,r,V,0,0},      /* min.w.f */
1074   {89,16,r,V,0,0},      /* min.l.f */
1075   {84,11,r,V,0,0},      /* sum.s.f */
1076   {84,12,r,V,0,0},      /* sum.d.f */
1077   {90,11,r,V,0,0},      /* prod.s.f */
1078   {90,12,r,V,0,0},      /* prod.d.f */
1079   {88,11,r,V,0,0},      /* max.s.f */
1080   {88,12,r,V,0,0},      /* max.d.f */
1081   {89,11,r,V,0,0},      /* min.s.f */
1082   {89,12,r,V,0,0},      /* min.d.f */
1083   {90,13,r,V,0,0},      /* prod.b.f */
1084   {90,14,r,V,0,0},      /* prod.h.f */
1085   {90,15,r,V,0,0},      /* prod.w.f */
1086   {90,16,r,V,0,0},      /* prod.l.f */
1087   {0,0,0,0,0,0},
1088   {0,0,0,0,0,0},
1089   {0,0,0,0,0,0},
1090   {0,0,0,0,0,0},
1091 };
1092
1093 const struct formstr e1_format0[] = {
1094   {0,0,0,0,0,0},
1095   {0,0,0,0,0,0},
1096   {0,0,0,0,0,0},
1097   {0,0,0,0,0,0},
1098   {10,18,rrr,S,V,V},    /* sub.s.t */
1099   {10,19,rrr,S,V,V},    /* sub.d.t */
1100   {4,18,rrr,S,V,V},     /* div.s.t */
1101   {4,19,rrr,S,V,V},     /* div.d.t */
1102   {3,18,rrr,V,V,V},     /* mul.s.t */
1103   {3,19,rrr,V,V,V},     /* mul.d.t */
1104   {4,18,rrr,V,V,V},     /* div.s.t */
1105   {4,19,rrr,V,V,V},     /* div.d.t */
1106   {3,18,rrr,V,S,V},     /* mul.s.t */
1107   {3,19,rrr,V,S,V},     /* mul.d.t */
1108   {4,18,rrr,V,S,V},     /* div.s.t */
1109   {4,19,rrr,V,S,V},     /* div.d.t */
1110   {5,1,rrr,V,V,V},      /* and.t */
1111   {6,1,rrr,V,V,V},      /* or.t */
1112   {7,1,rrr,V,V,V},      /* xor.t */
1113   {8,1,rrr,V,V,V},      /* shf.t */
1114   {5,1,rrr,V,S,V},      /* and.t */
1115   {6,1,rrr,V,S,V},      /* or.t */
1116   {7,1,rrr,V,S,V},      /* xor.t */
1117   {8,1,rrr,V,S,V},      /* shf.t */
1118   {9,18,rrr,V,V,V},     /* add.s.t */
1119   {9,19,rrr,V,V,V},     /* add.d.t */
1120   {10,18,rrr,V,V,V},    /* sub.s.t */
1121   {10,19,rrr,V,V,V},    /* sub.d.t */
1122   {9,18,rrr,V,S,V},     /* add.s.t */
1123   {9,19,rrr,V,S,V},     /* add.d.t */
1124   {10,18,rrr,V,S,V},    /* sub.s.t */
1125   {10,19,rrr,V,S,V},    /* sub.d.t */
1126   {9,20,rrr,V,V,V},     /* add.b.t */
1127   {9,21,rrr,V,V,V},     /* add.h.t */
1128   {9,22,rrr,V,V,V},     /* add.w.t */
1129   {9,23,rrr,V,V,V},     /* add.l.t */
1130   {9,20,rrr,V,S,V},     /* add.b.t */
1131   {9,21,rrr,V,S,V},     /* add.h.t */
1132   {9,22,rrr,V,S,V},     /* add.w.t */
1133   {9,23,rrr,V,S,V},     /* add.l.t */
1134   {10,20,rrr,V,V,V},    /* sub.b.t */
1135   {10,21,rrr,V,V,V},    /* sub.h.t */
1136   {10,22,rrr,V,V,V},    /* sub.w.t */
1137   {10,23,rrr,V,V,V},    /* sub.l.t */
1138   {10,20,rrr,V,S,V},    /* sub.b.t */
1139   {10,21,rrr,V,S,V},    /* sub.h.t */
1140   {10,22,rrr,V,S,V},    /* sub.w.t */
1141   {10,23,rrr,V,S,V},    /* sub.l.t */
1142   {3,20,rrr,V,V,V},     /* mul.b.t */
1143   {3,21,rrr,V,V,V},     /* mul.h.t */
1144   {3,22,rrr,V,V,V},     /* mul.w.t */
1145   {3,23,rrr,V,V,V},     /* mul.l.t */
1146   {3,20,rrr,V,S,V},     /* mul.b.t */
1147   {3,21,rrr,V,S,V},     /* mul.h.t */
1148   {3,22,rrr,V,S,V},     /* mul.w.t */
1149   {3,23,rrr,V,S,V},     /* mul.l.t */
1150   {4,20,rrr,V,V,V},     /* div.b.t */
1151   {4,21,rrr,V,V,V},     /* div.h.t */
1152   {4,22,rrr,V,V,V},     /* div.w.t */
1153   {4,23,rrr,V,V,V},     /* div.l.t */
1154   {4,20,rrr,V,S,V},     /* div.b.t */
1155   {4,21,rrr,V,S,V},     /* div.h.t */
1156   {4,22,rrr,V,S,V},     /* div.w.t */
1157   {4,23,rrr,V,S,V},     /* div.l.t */
1158 };
1159
1160 const struct formstr e1_format1[] = {
1161   {0,0,0,0,0,0},
1162   {0,0,0,0,0,0},
1163   {0,0,0,0,0,0},
1164   {0,0,0,0,0,0},
1165   {0,0,0,0,0,0},
1166   {0,0,0,0,0,0},
1167   {0,0,0,0,0,0},
1168   {0,0,0,0,0,0},
1169   {0,0,0,0,0,0},
1170   {0,0,0,0,0,0},
1171   {0,0,0,0,0,0},
1172   {0,0,0,0,0,0},
1173   {0,0,0,0,0,0},
1174   {0,0,0,0,0,0},
1175   {0,0,0,0,0,0},
1176   {0,0,0,0,0,0},
1177   {0,0,0,0,0,0},
1178   {0,0,0,0,0,0},
1179   {0,0,0,0,0,0},
1180   {0,0,0,0,0,0},
1181   {0,0,0,0,0,0},
1182   {0,0,0,0,0,0},
1183   {0,0,0,0,0,0},
1184   {0,0,0,0,0,0},
1185   {0,0,0,0,0,0},
1186   {0,0,0,0,0,0},
1187   {0,0,0,0,0,0},
1188   {0,0,0,0,0,0},
1189   {0,0,0,0,0,0},
1190   {0,0,0,0,0,0},
1191   {0,0,0,0,0,0},
1192   {0,0,0,0,0,0},
1193   {0,0,0,0,0,0},
1194   {0,0,0,0,0,0},
1195   {0,0,0,0,0,0},
1196   {0,0,0,0,0,0},
1197   {26,20,a2r,S,0,0},    /* ste.b.t */
1198   {26,21,a2r,S,0,0},    /* ste.h.t */
1199   {26,22,a2r,S,0,0},    /* ste.w.t */
1200   {26,23,a2r,S,0,0},    /* ste.l.t */
1201   {0,0,0,0,0,0},
1202   {0,0,0,0,0,0},
1203   {0,0,0,0,0,0},
1204   {0,0,0,0,0,0},
1205   {0,0,0,0,0,0},
1206   {0,0,0,0,0,0},
1207   {0,0,0,0,0,0},
1208   {0,0,0,0,0,0},
1209   {0,0,0,0,0,0},
1210   {0,0,0,0,0,0},
1211   {0,0,0,0,0,0},
1212   {0,0,0,0,0,0},
1213   {0,0,0,0,0,0},
1214   {0,0,0,0,0,0},
1215   {0,0,0,0,0,0},
1216   {0,0,0,0,0,0},
1217   {18,20,a1r,V,0,0},    /* ld.b.t */
1218   {18,21,a1r,V,0,0},    /* ld.h.t */
1219   {18,22,a1r,V,0,0},    /* ld.w.t */
1220   {18,23,a1r,V,0,0},    /* ld.l.t */
1221   {21,20,a2r,V,0,0},    /* st.b.t */
1222   {21,21,a2r,V,0,0},    /* st.h.t */
1223   {21,22,a2r,V,0,0},    /* st.w.t */
1224   {21,23,a2r,V,0,0},    /* st.l.t */
1225 };
1226
1227 const struct formstr e1_format2[] = {
1228   {0,0,0,0,0,0},
1229   {0,0,0,0,0,0},
1230   {0,0,0,0,0,0},
1231   {0,0,0,0,0,0},
1232   {28,20,rr,V,V,0},     /* cvtw.b.t */
1233   {28,21,rr,V,V,0},     /* cvtw.h.t */
1234   {29,22,rr,V,V,0},     /* cvtb.w.t */
1235   {30,22,rr,V,V,0},     /* cvth.w.t */
1236   {0,0,0,0,0,0},
1237   {0,0,0,0,0,0},
1238   {0,0,0,0,0,0},
1239   {0,0,0,0,0,0},
1240   {31,23,rr,V,V,0},     /* cvts.l.t */
1241   {32,22,rr,V,V,0},     /* cvtd.w.t */
1242   {33,18,rr,V,V,0},     /* cvtl.s.t */
1243   {28,19,rr,V,V,0},     /* cvtw.d.t */
1244   {0,0,0,0,0,0},
1245   {0,0,0,0,0,0},
1246   {0,0,0,0,0,0},
1247   {0,0,0,0,0,0},
1248   {0,0,0,0,0,0},
1249   {0,0,0,0,0,0},
1250   {0,0,0,0,0,0},
1251   {0,0,0,0,0,0},
1252   {0,0,0,0,0,0},
1253   {0,0,0,0,0,0},
1254   {0,0,0,0,0,0},
1255   {0,0,0,0,0,0},
1256   {0,0,0,0,0,0},
1257   {0,0,0,0,0,0},
1258   {0,0,0,0,0,0},
1259   {0,0,0,0,0,0},
1260   {0,0,0,0,0,0},
1261   {0,0,0,0,0,0},
1262   {0,0,0,0,0,0},
1263   {0,0,0,0,0,0},
1264   {0,0,0,0,0,0},
1265   {0,0,0,0,0,0},
1266   {0,0,0,0,0,0},
1267   {0,0,0,0,0,0},
1268   {0,0,0,0,0,0},
1269   {0,0,0,0,0,0},
1270   {0,0,0,0,0,0},
1271   {0,0,0,0,0,0},
1272   {0,0,0,0,0,0},
1273   {0,0,0,0,0,0},
1274   {0,0,0,0,0,0},
1275   {0,0,0,0,0,0},
1276   {0,0,0,0,0,0},
1277   {0,0,0,0,0,0},
1278   {0,0,0,0,0,0},
1279   {0,0,0,0,0,0},
1280   {0,0,0,0,0,0},
1281   {0,0,0,0,0,0},
1282   {0,0,0,0,0,0},
1283   {0,0,0,0,0,0},
1284   {0,0,0,0,0,0},
1285   {0,0,0,0,0,0},
1286   {0,0,0,0,0,0},
1287   {0,0,0,0,0,0},
1288   {0,0,0,0,0,0},
1289   {0,0,0,0,0,0},
1290   {0,0,0,0,0,0},
1291   {0,0,0,0,0,0},
1292   {0,0,0,0,0,0},
1293   {0,0,0,0,0,0},
1294   {0,0,0,0,0,0},
1295   {0,0,0,0,0,0},
1296   {0,0,0,0,0,0},
1297   {0,0,0,0,0,0},
1298   {0,0,0,0,0,0},
1299   {0,0,0,0,0,0},
1300   {0,0,0,0,0,0},
1301   {0,0,0,0,0,0},
1302   {0,0,0,0,0,0},
1303   {0,0,0,0,0,0},
1304   {0,0,0,0,0,0},
1305   {0,0,0,0,0,0},
1306   {0,0,0,0,0,0},
1307   {0,0,0,0,0,0},
1308   {0,0,0,0,0,0},
1309   {0,0,0,0,0,0},
1310   {0,0,0,0,0,0},
1311   {0,0,0,0,0,0},
1312   {0,0,0,0,0,0},
1313   {0,0,0,0,0,0},
1314   {0,0,0,0,0,0},
1315   {0,0,0,0,0,0},
1316   {0,0,0,0,0,0},
1317   {0,0,0,0,0,0},
1318   {0,0,0,0,0,0},
1319   {0,0,0,0,0,0},
1320   {0,0,0,0,0,0},
1321   {0,0,0,0,0,0},
1322   {0,0,0,0,0,0},
1323   {0,0,0,0,0,0},
1324   {0,0,0,0,0,0},
1325   {0,0,0,0,0,0},
1326   {0,0,0,0,0,0},
1327   {0,0,0,0,0,0},
1328   {0,0,0,0,0,0},
1329   {0,0,0,0,0,0},
1330   {116,18,rr,V,V,0},    /* frint.s.t */
1331   {116,19,rr,V,V,0},    /* frint.d.t */
1332   {0,0,0,0,0,0},
1333   {0,0,0,0,0,0},
1334   {0,0,0,0,0,0},
1335   {0,0,0,0,0,0},
1336   {0,0,0,0,0,0},
1337   {0,0,0,0,0,0},
1338   {0,0,0,0,0,0},
1339   {0,0,0,0,0,0},
1340   {0,0,0,0,0,0},
1341   {0,0,0,0,0,0},
1342   {0,0,0,0,0,0},
1343   {0,0,0,0,0,0},
1344   {0,0,0,0,0,0},
1345   {0,0,0,0,0,0},
1346   {0,0,0,0,0,0},
1347   {0,0,0,0,0,0},
1348   {0,0,0,0,0,0},
1349   {0,0,0,0,0,0},
1350   {0,0,0,0,0,0},
1351   {0,0,0,0,0,0},
1352   {81,18,rr,V,V,0},     /* sqrt.s.t */
1353   {81,19,rr,V,V,0},     /* sqrt.d.t */
1354   {0,0,0,0,0,0},
1355   {0,0,0,0,0,0},
1356 };
1357
1358 const struct formstr e1_format3[] = {
1359   {32,18,rr,V,V,0},     /* cvtd.s.t */
1360   {31,19,rr,V,V,0},     /* cvts.d.t */
1361   {33,19,rr,V,V,0},     /* cvtl.d.t */
1362   {32,23,rr,V,V,0},     /* cvtd.l.t */
1363   {0,0,0,0,0,0},
1364   {0,0,0,0,0,0},
1365   {0,0,0,0,0,0},
1366   {0,0,0,0,0,0},
1367   {36,1,rr,V,V,0},      /* tzc.t */
1368   {44,1,rr,V,V,0},      /* lop.t */
1369   {117,1,rr,V,V,0},     /* xpnd.t */
1370   {42,1,rr,V,V,0},      /* not.t */
1371   {8,1,rr,S,V,0},       /* shf.t */
1372   {35,24,rr,V,V,0},     /* plc.t.t */
1373   {0,0,0,0,0,0},
1374   {0,0,0,0,0,0},
1375   {37,18,rr,V,V,0},     /* eq.s.t */
1376   {37,19,rr,V,V,0},     /* eq.d.t */
1377   {43,18,rr,V,V,0},     /* neg.s.t */
1378   {43,19,rr,V,V,0},     /* neg.d.t */
1379   {37,18,rr,S,V,0},     /* eq.s.t */
1380   {37,19,rr,S,V,0},     /* eq.d.t */
1381   {0,0,0,0,0,0},
1382   {0,0,0,0,0,0},
1383   {40,18,rr,V,V,0},     /* le.s.t */
1384   {40,19,rr,V,V,0},     /* le.d.t */
1385   {41,18,rr,V,V,0},     /* lt.s.t */
1386   {41,19,rr,V,V,0},     /* lt.d.t */
1387   {40,18,rr,S,V,0},     /* le.s.t */
1388   {40,19,rr,S,V,0},     /* le.d.t */
1389   {41,18,rr,S,V,0},     /* lt.s.t */
1390   {41,19,rr,S,V,0},     /* lt.d.t */
1391   {37,20,rr,V,V,0},     /* eq.b.t */
1392   {37,21,rr,V,V,0},     /* eq.h.t */
1393   {37,22,rr,V,V,0},     /* eq.w.t */
1394   {37,23,rr,V,V,0},     /* eq.l.t */
1395   {37,20,rr,S,V,0},     /* eq.b.t */
1396   {37,21,rr,S,V,0},     /* eq.h.t */
1397   {37,22,rr,S,V,0},     /* eq.w.t */
1398   {37,23,rr,S,V,0},     /* eq.l.t */
1399   {40,20,rr,V,V,0},     /* le.b.t */
1400   {40,21,rr,V,V,0},     /* le.h.t */
1401   {40,22,rr,V,V,0},     /* le.w.t */
1402   {40,23,rr,V,V,0},     /* le.l.t */
1403   {40,20,rr,S,V,0},     /* le.b.t */
1404   {40,21,rr,S,V,0},     /* le.h.t */
1405   {40,22,rr,S,V,0},     /* le.w.t */
1406   {40,23,rr,S,V,0},     /* le.l.t */
1407   {41,20,rr,V,V,0},     /* lt.b.t */
1408   {41,21,rr,V,V,0},     /* lt.h.t */
1409   {41,22,rr,V,V,0},     /* lt.w.t */
1410   {41,23,rr,V,V,0},     /* lt.l.t */
1411   {41,20,rr,S,V,0},     /* lt.b.t */
1412   {41,21,rr,S,V,0},     /* lt.h.t */
1413   {41,22,rr,S,V,0},     /* lt.w.t */
1414   {41,23,rr,S,V,0},     /* lt.l.t */
1415   {43,20,rr,V,V,0},     /* neg.b.t */
1416   {43,21,rr,V,V,0},     /* neg.h.t */
1417   {43,22,rr,V,V,0},     /* neg.w.t */
1418   {43,23,rr,V,V,0},     /* neg.l.t */
1419   {0,0,0,0,0,0},
1420   {0,0,0,0,0,0},
1421   {0,0,0,0,0,0},
1422   {0,0,0,0,0,0},
1423 };
1424
1425 const struct formstr e1_format4[] = {
1426   {0,0,0,0,0,0},
1427   {0,0,0,0,0,0},
1428   {0,0,0,0,0,0},
1429   {0,0,0,0,0,0},
1430   {0,0,0,0,0,0},
1431   {0,0,0,0,0,0},
1432   {0,0,0,0,0,0},
1433   {0,0,0,0,0,0},
1434 };
1435
1436 const struct formstr e1_format5[] = {
1437   {51,20,rr,V,V,0},     /* ldvi.b.t */
1438   {51,21,rr,V,V,0},     /* ldvi.h.t */
1439   {51,22,rr,V,V,0},     /* ldvi.w.t */
1440   {51,23,rr,V,V,0},     /* ldvi.l.t */
1441   {28,18,rr,V,V,0},     /* cvtw.s.t */
1442   {31,22,rr,V,V,0},     /* cvts.w.t */
1443   {28,23,rr,V,V,0},     /* cvtw.l.t */
1444   {33,22,rr,V,V,0},     /* cvtl.w.t */
1445   {52,20,rxr,V,V,0},    /* stvi.b.t */
1446   {52,21,rxr,V,V,0},    /* stvi.h.t */
1447   {52,22,rxr,V,V,0},    /* stvi.w.t */
1448   {52,23,rxr,V,V,0},    /* stvi.l.t */
1449   {52,20,rxr,S,V,0},    /* stvi.b.t */
1450   {52,21,rxr,S,V,0},    /* stvi.h.t */
1451   {52,22,rxr,S,V,0},    /* stvi.w.t */
1452   {52,23,rxr,S,V,0},    /* stvi.l.t */
1453 };
1454
1455 const struct formstr e1_format6[] = {
1456   {0,0,0,0,0,0},
1457   {0,0,0,0,0,0},
1458   {0,0,0,0,0,0},
1459   {0,0,0,0,0,0},
1460   {0,0,0,0,0,0},
1461   {0,0,0,0,0,0},
1462   {0,0,0,0,0,0},
1463   {0,0,0,0,0,0},
1464   {0,0,0,0,0,0},
1465   {0,0,0,0,0,0},
1466   {0,0,0,0,0,0},
1467   {0,0,0,0,0,0},
1468   {0,0,0,0,0,0},
1469   {0,0,0,0,0,0},
1470   {0,0,0,0,0,0},
1471   {0,0,0,0,0,0},
1472   {0,0,0,0,0,0},
1473   {0,0,0,0,0,0},
1474   {0,0,0,0,0,0},
1475   {0,0,0,0,0,0},
1476   {0,0,0,0,0,0},
1477   {0,0,0,0,0,0},
1478   {0,0,0,0,0,0},
1479   {0,0,0,0,0,0},
1480   {0,0,0,0,0,0},
1481   {0,0,0,0,0,0},
1482   {0,0,0,0,0,0},
1483   {0,0,0,0,0,0},
1484   {0,0,0,0,0,0},
1485   {0,0,0,0,0,0},
1486   {0,0,0,0,0,0},
1487   {0,0,0,0,0,0},
1488   {0,0,0,0,0,0},
1489   {0,0,0,0,0,0},
1490   {0,0,0,0,0,0},
1491   {0,0,0,0,0,0},
1492   {0,0,0,0,0,0},
1493   {0,0,0,0,0,0},
1494   {0,0,0,0,0,0},
1495   {0,0,0,0,0,0},
1496   {0,0,0,0,0,0},
1497   {0,0,0,0,0,0},
1498   {0,0,0,0,0,0},
1499   {0,0,0,0,0,0},
1500   {0,0,0,0,0,0},
1501   {0,0,0,0,0,0},
1502   {0,0,0,0,0,0},
1503   {0,0,0,0,0,0},
1504   {0,0,0,0,0,0},
1505   {0,0,0,0,0,0},
1506   {0,0,0,0,0,0},
1507   {0,0,0,0,0,0},
1508   {0,0,0,0,0,0},
1509   {0,0,0,0,0,0},
1510   {0,0,0,0,0,0},
1511   {0,0,0,0,0,0},
1512   {0,0,0,0,0,0},
1513   {0,0,0,0,0,0},
1514   {0,0,0,0,0,0},
1515   {0,0,0,0,0,0},
1516   {0,0,0,0,0,0},
1517   {0,0,0,0,0,0},
1518   {0,0,0,0,0,0},
1519   {0,0,0,0,0,0},
1520 };
1521
1522 const struct formstr e1_format7[] = {
1523   {84,20,r,V,0,0},      /* sum.b.t */
1524   {84,21,r,V,0,0},      /* sum.h.t */
1525   {84,22,r,V,0,0},      /* sum.w.t */
1526   {84,23,r,V,0,0},      /* sum.l.t */
1527   {85,1,r,V,0,0},       /* all.t */
1528   {86,1,r,V,0,0},       /* any.t */
1529   {87,1,r,V,0,0},       /* parity.t */
1530   {0,0,0,0,0,0},
1531   {88,20,r,V,0,0},      /* max.b.t */
1532   {88,21,r,V,0,0},      /* max.h.t */
1533   {88,22,r,V,0,0},      /* max.w.t */
1534   {88,23,r,V,0,0},      /* max.l.t */
1535   {89,20,r,V,0,0},      /* min.b.t */
1536   {89,21,r,V,0,0},      /* min.h.t */
1537   {89,22,r,V,0,0},      /* min.w.t */
1538   {89,23,r,V,0,0},      /* min.l.t */
1539   {84,18,r,V,0,0},      /* sum.s.t */
1540   {84,19,r,V,0,0},      /* sum.d.t */
1541   {90,18,r,V,0,0},      /* prod.s.t */
1542   {90,19,r,V,0,0},      /* prod.d.t */
1543   {88,18,r,V,0,0},      /* max.s.t */
1544   {88,19,r,V,0,0},      /* max.d.t */
1545   {89,18,r,V,0,0},      /* min.s.t */
1546   {89,19,r,V,0,0},      /* min.d.t */
1547   {90,20,r,V,0,0},      /* prod.b.t */
1548   {90,21,r,V,0,0},      /* prod.h.t */
1549   {90,22,r,V,0,0},      /* prod.w.t */
1550   {90,23,r,V,0,0},      /* prod.l.t */
1551   {0,0,0,0,0,0},
1552   {0,0,0,0,0,0},
1553   {0,0,0,0,0,0},
1554   {0,0,0,0,0,0},
1555 };
1556
1557 char *lop[] = {
1558   "mov",        /* 0 */
1559   "merg",       /* 1 */
1560   "mask",       /* 2 */
1561   "mul",        /* 3 */
1562   "div",        /* 4 */
1563   "and",        /* 5 */
1564   "or", /* 6 */
1565   "xor",        /* 7 */
1566   "shf",        /* 8 */
1567   "add",        /* 9 */
1568   "sub",        /* 10 */
1569   "exit",       /* 11 */
1570   "jmp",        /* 12 */
1571   "jmpi",       /* 13 */
1572   "jmpa",       /* 14 */
1573   "jmps",       /* 15 */
1574   "tac",        /* 16 */
1575   "ldea",       /* 17 */
1576   "ld", /* 18 */
1577   "tas",        /* 19 */
1578   "pshea",      /* 20 */
1579   "st", /* 21 */
1580   "call",       /* 22 */
1581   "calls",      /* 23 */
1582   "callq",      /* 24 */
1583   "pfork",      /* 25 */
1584   "ste",        /* 26 */
1585   "incr",       /* 27 */
1586   "cvtw",       /* 28 */
1587   "cvtb",       /* 29 */
1588   "cvth",       /* 30 */
1589   "cvts",       /* 31 */
1590   "cvtd",       /* 32 */
1591   "cvtl",       /* 33 */
1592   "ldpa",       /* 34 */
1593   "plc",        /* 35 */
1594   "tzc",        /* 36 */
1595   "eq", /* 37 */
1596   "leu",        /* 38 */
1597   "ltu",        /* 39 */
1598   "le", /* 40 */
1599   "lt", /* 41 */
1600   "not",        /* 42 */
1601   "neg",        /* 43 */
1602   "lop",        /* 44 */
1603   "cprs",       /* 45 */
1604   "nop",        /* 46 */
1605   "br", /* 47 */
1606   "bri",        /* 48 */
1607   "bra",        /* 49 */
1608   "brs",        /* 50 */
1609   "ldvi",       /* 51 */
1610   "stvi",       /* 52 */
1611   "ldsdr",      /* 53 */
1612   "ldkdr",      /* 54 */
1613   "ln", /* 55 */
1614   "patu",       /* 56 */
1615   "pate",       /* 57 */
1616   "pich",       /* 58 */
1617   "plch",       /* 59 */
1618   "idle",       /* 60 */
1619   "rtnq",       /* 61 */
1620   "cfork",      /* 62 */
1621   "rtn",        /* 63 */
1622   "wfork",      /* 64 */
1623   "join",       /* 65 */
1624   "rtnc",       /* 66 */
1625   "exp",        /* 67 */
1626   "sin",        /* 68 */
1627   "cos",        /* 69 */
1628   "psh",        /* 70 */
1629   "pop",        /* 71 */
1630   "eni",        /* 72 */
1631   "dsi",        /* 73 */
1632   "bkpt",       /* 74 */
1633   "msync",      /* 75 */
1634   "mski",       /* 76 */
1635   "xmti",       /* 77 */
1636   "tstvv",      /* 78 */
1637   "diag",       /* 79 */
1638   "pbkpt",      /* 80 */
1639   "sqrt",       /* 81 */
1640   "casr",       /* 82 */
1641   "atan",       /* 83 */
1642   "sum",        /* 84 */
1643   "all",        /* 85 */
1644   "any",        /* 86 */
1645   "parity",     /* 87 */
1646   "max",        /* 88 */
1647   "min",        /* 89 */
1648   "prod",       /* 90 */
1649   "halt",       /* 91 */
1650   "sysc",       /* 92 */
1651   "trap",       /* 93 */
1652   "tst",        /* 94 */
1653   "lck",        /* 95 */
1654   "ulk",        /* 96 */
1655   "spawn",      /* 97 */
1656   "ldcmr",      /* 98 */
1657   "stcmr",      /* 99 */
1658   "popr",       /* 100 */
1659   "pshr",       /* 101 */
1660   "rcvr",       /* 102 */
1661   "matm",       /* 103 */
1662   "sndr",       /* 104 */
1663   "putr",       /* 105 */
1664   "getr",       /* 106 */
1665   "matr",       /* 107 */
1666   "mat",        /* 108 */
1667   "get",        /* 109 */
1668   "rcv",        /* 110 */
1669   "inc",        /* 111 */
1670   "put",        /* 112 */
1671   "snd",        /* 113 */
1672   "enal",       /* 114 */
1673   "enag",       /* 115 */
1674   "frint",      /* 116 */
1675   "xpnd",       /* 117 */
1676   "ctrsl",      /* 118 */
1677   "ctrsg",      /* 119 */
1678   "stop",       /* 120 */
1679 };
1680
1681 char *rop[] = {
1682   "",   /* 0 */
1683   ".t", /* 1 */
1684   ".f", /* 2 */
1685   ".s", /* 3 */
1686   ".d", /* 4 */
1687   ".b", /* 5 */
1688   ".h", /* 6 */
1689   ".w", /* 7 */
1690   ".l", /* 8 */
1691   ".x", /* 9 */
1692   ".u", /* 10 */
1693   ".s.f",       /* 11 */
1694   ".d.f",       /* 12 */
1695   ".b.f",       /* 13 */
1696   ".h.f",       /* 14 */
1697   ".w.f",       /* 15 */
1698   ".l.f",       /* 16 */
1699   ".t.f",       /* 17 */
1700   ".s.t",       /* 18 */
1701   ".d.t",       /* 19 */
1702   ".b.t",       /* 20 */
1703   ".h.t",       /* 21 */
1704   ".w.t",       /* 22 */
1705   ".l.t",       /* 23 */
1706   ".t.t",       /* 24 */
1707 };