Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / native_client / src / trusted / validator / x86 / ncval_seg_sfi / gen / ncdecodetab_64.h
1 /* native_client/src/trusted/validator/x86/ncval_seg_sfi/gen/ncdecodetab_64.h
2  * THIS FILE IS AUTO-GENERATED. DO NOT EDIT.
3  * Compiled for x86-64 bit mode.
4  *
5  * You must include ncdecode.h before this file.
6  */
7
8 static const struct OpInfo kNopInst = { NACLi_NOP, 0, 1, 0 };
9
10 static const NCNopTrieNode kNcNopTrieNode[] = {
11   /*     0 */ { 0x66, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 1), NULL},
12   /*     1 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 2), (NCNopTrieNode*) (kNcNopTrieNode + 12)},
13   /*     2 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 3), NULL},
14   /*     3 */ { 0x44, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 4), (NCNopTrieNode*) (kNcNopTrieNode + 6)},
15   /*     4 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 5), NULL},
16   /*     5 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
17   /*     6 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 7), NULL},
18   /*     7 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 8), NULL},
19   /*     8 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 9), NULL},
20   /*     9 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 10), NULL},
21   /*    10 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 11), NULL},
22   /*    11 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
23   /*    12 */ { 0x2e, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 13), (NCNopTrieNode*) (kNcNopTrieNode + 21)},
24   /*    13 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 14), NULL},
25   /*    14 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 15), NULL},
26   /*    15 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 16), NULL},
27   /*    16 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 17), NULL},
28   /*    17 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 18), NULL},
29   /*    18 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 19), NULL},
30   /*    19 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 20), NULL},
31   /*    20 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
32   /*    21 */ { 0x66, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 22), NULL},
33   /*    22 */ { 0x2e, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 23), (NCNopTrieNode*) (kNcNopTrieNode + 31)},
34   /*    23 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 24), NULL},
35   /*    24 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 25), NULL},
36   /*    25 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 26), NULL},
37   /*    26 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 27), NULL},
38   /*    27 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 28), NULL},
39   /*    28 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 29), NULL},
40   /*    29 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 30), NULL},
41   /*    30 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
42   /*    31 */ { 0x66, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 32), NULL},
43   /*    32 */ { 0x2e, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 33), (NCNopTrieNode*) (kNcNopTrieNode + 41)},
44   /*    33 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 34), NULL},
45   /*    34 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 35), NULL},
46   /*    35 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 36), NULL},
47   /*    36 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 37), NULL},
48   /*    37 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 38), NULL},
49   /*    38 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 39), NULL},
50   /*    39 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 40), NULL},
51   /*    40 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
52   /*    41 */ { 0x66, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 42), NULL},
53   /*    42 */ { 0x2e, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 43), (NCNopTrieNode*) (kNcNopTrieNode + 51)},
54   /*    43 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 44), NULL},
55   /*    44 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 45), NULL},
56   /*    45 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 46), NULL},
57   /*    46 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 47), NULL},
58   /*    47 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 48), NULL},
59   /*    48 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 49), NULL},
60   /*    49 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 50), NULL},
61   /*    50 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
62   /*    51 */ { 0x66, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 52), NULL},
63   /*    52 */ { 0x2e, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 53), (NCNopTrieNode*) (kNcNopTrieNode + 61)},
64   /*    53 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 54), NULL},
65   /*    54 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 55), NULL},
66   /*    55 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 56), NULL},
67   /*    56 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 57), NULL},
68   /*    57 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 58), NULL},
69   /*    58 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 59), NULL},
70   /*    59 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 60), NULL},
71   /*    60 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
72   /*    61 */ { 0x66, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 62), NULL},
73   /*    62 */ { 0x2e, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 63), NULL},
74   /*    63 */ { 0x0f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 64), NULL},
75   /*    64 */ { 0x1f, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 65), NULL},
76   /*    65 */ { 0x84, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 66), NULL},
77   /*    66 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 67), NULL},
78   /*    67 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 68), NULL},
79   /*    68 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 69), NULL},
80   /*    69 */ { 0x00, NULL, (NCNopTrieNode*) (kNcNopTrieNode + 70), NULL},
81   /*    70 */ { 0x00, (struct OpInfo*)(&kNopInst), NULL, NULL},
82 };
83
84 static const struct OpInfo kDecodeModRMOp[kNaClMRMGroupsRange][kModRMOpcodeGroupSize] = {
85   /* group 0 */
86   {
87     /* 0, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
88     /* 0, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
89     /* 0, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
90     /* 0, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
91     /* 0, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
92     /* 0, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
93     /* 0, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
94     /* 0, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
95   },
96   /* group 1 */
97   {
98     /* 1, 0 */  { NACLi_386L, 1, 1, 0 },        /* add */
99     /* 1, 1 */  { NACLi_386L, 1, 1, 0 },        /* or */
100     /* 1, 2 */  { NACLi_386L, 1, 1, 0 },        /* adc */
101     /* 1, 3 */  { NACLi_386L, 1, 1, 0 },        /* sbb */
102     /* 1, 4 */  { NACLi_386L, 1, 1, 0 },        /* and */
103     /* 1, 5 */  { NACLi_386L, 1, 1, 0 },        /* sub */
104     /* 1, 6 */  { NACLi_386L, 1, 1, 0 },        /* xor */
105     /* 1, 7 */  { NACLi_386, 1, 1, 0 }, /* cmp */
106   },
107   /* group 2 */
108   {
109     /* 2, 0 */  { NACLi_386, 1, 1, 0 }, /* rol */
110     /* 2, 1 */  { NACLi_386, 1, 1, 0 }, /* ror */
111     /* 2, 2 */  { NACLi_386, 1, 1, 0 }, /* rcl */
112     /* 2, 3 */  { NACLi_386, 1, 1, 0 }, /* rcr */
113     /* 2, 4 */  { NACLi_386, 1, 1, 0 }, /* shl */
114     /* 2, 5 */  { NACLi_386, 1, 1, 0 }, /* shr */
115     /* 2, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
116     /* 2, 7 */  { NACLi_386, 1, 1, 0 }, /* sar */
117   },
118   /* group 3 */
119   {
120     /* 3, 0 */  { NACLi_386, 1, 1, 0 }, /* test $I */
121     /* 3, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
122     /* 3, 2 */  { NACLi_386L, 1, 1, 0 },        /* not */
123     /* 3, 3 */  { NACLi_386L, 1, 1, 0 },        /* neg */
124     /* 3, 4 */  { NACLi_386, 1, 1, 0 }, /* mul %rax */
125     /* 3, 5 */  { NACLi_386, 1, 1, 0 }, /* imul %rax */
126     /* 3, 6 */  { NACLi_386, 1, 1, 0 }, /* div %rax */
127     /* 3, 7 */  { NACLi_386, 1, 1, 0 }, /* idiv %rax */
128   },
129   /* group 4 */
130   {
131     /* 4, 0 */  { NACLi_386L, 1, 1, 0 },        /* inc */
132     /* 4, 1 */  { NACLi_386L, 1, 1, 0 },        /* dec */
133     /* 4, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
134     /* 4, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
135     /* 4, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
136     /* 4, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
137     /* 4, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
138     /* 4, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
139   },
140   /* group 5 */
141   {
142     /* 5, 0 */  { NACLi_386L, 1, 1, 0 },        /* inc */
143     /* 5, 1 */  { NACLi_386L, 1, 1, 0 },        /* dec */
144     /* 5, 2 */  { NACLi_INDIRECT, 1, 1, 0 },    /* call * */
145     /* 5, 3 */  { NACLi_ILLEGAL, 1, 1, 0 },     /* lcall * */
146     /* 5, 4 */  { NACLi_INDIRECT, 1, 1, 0 },    /* jmp * */
147     /* 5, 5 */  { NACLi_ILLEGAL, 1, 1, 0 },     /* ljmp * */
148     /* 5, 6 */  { NACLi_386, 1, 1, 0 }, /* push */
149     /* 5, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
150   },
151   /* group 6 */
152   {
153     /* 6, 0 */  { NACLi_SYSTEM, 1, 1, 0 },      /* sldt */
154     /* 6, 1 */  { NACLi_SYSTEM, 1, 1, 0 },      /* str */
155     /* 6, 2 */  { NACLi_SYSTEM, 1, 1, 0 },      /* lldt */
156     /* 6, 3 */  { NACLi_SYSTEM, 1, 1, 0 },      /* ltr */
157     /* 6, 4 */  { NACLi_SYSTEM, 1, 1, 0 },      /* verr */
158     /* 6, 5 */  { NACLi_SYSTEM, 1, 1, 0 },      /* verw */
159     /* 6, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
160     /* 6, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
161   },
162   /* group 7 */
163   {
164     /* 7, 0 */  { NACLi_SYSTEM, 1, 1, 0 },      /* sgdt */
165     /* 7, 1 */  { NACLi_SYSTEM, 1, 1, 0 },      /* sidt */
166     /* 7, 2 */  { NACLi_SYSTEM, 1, 1, 0 },      /* lgdt */
167     /* 7, 3 */  { NACLi_SYSTEM, 1, 1, 0 },      /* lidt */
168     /* 7, 4 */  { NACLi_SYSTEM, 1, 1, 0 },      /* smsw */
169     /* 7, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
170     /* 7, 6 */  { NACLi_SYSTEM, 1, 1, 0 },      /* lmsw */
171     /* 7, 7 */  { NACLi_SYSTEM, 1, 1, 0 },      /* invlpg */
172   },
173   /* group 8 */
174   {
175     /* 8, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
176     /* 8, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
177     /* 8, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
178     /* 8, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
179     /* 8, 4 */  { NACLi_ILLEGAL, 1, 1, 0 },     /* bt */
180     /* 8, 5 */  { NACLi_ILLEGAL, 1, 1, 0 },     /* bts */
181     /* 8, 6 */  { NACLi_ILLEGAL, 1, 1, 0 },     /* btr */
182     /* 8, 7 */  { NACLi_ILLEGAL, 1, 1, 0 },     /* btc */
183   },
184   /* group 9 */
185   {
186     /* 9, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
187     /* 9, 1 */  { NACLi_CMPXCHG8B, 1, 1, 0 },   /* cmpxchg8b */
188     /* 9, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
189     /* 9, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
190     /* 9, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
191     /* 9, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
192     /* 9, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
193     /* 9, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },   /* undefined */
194   },
195   /* group 10 */
196   {
197     /* 10, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
198     /* 10, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
199     /* 10, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
200     /* 10, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
201     /* 10, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
202     /* 10, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
203     /* 10, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
204     /* 10, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
205   },
206   /* group 11 */
207   {
208     /* 11, 0 */  { NACLi_386, 1, 1, 0 },        /* mov */
209     /* 11, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
210     /* 11, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
211     /* 11, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
212     /* 11, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
213     /* 11, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
214     /* 11, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
215     /* 11, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
216   },
217   /* group 12 */
218   {
219     /* 12, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
220     /* 12, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
221     /* 12, 2 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psrlw */
222     /* 12, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
223     /* 12, 4 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psraw */
224     /* 12, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
225     /* 12, 6 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psllw */
226     /* 12, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
227   },
228   /* group 13 */
229   {
230     /* 13, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
231     /* 13, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
232     /* 13, 2 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psrld */
233     /* 13, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
234     /* 13, 4 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psrad */
235     /* 13, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
236     /* 13, 6 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* pslld */
237     /* 13, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
238   },
239   /* group 14 */
240   {
241     /* 14, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
242     /* 14, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
243     /* 14, 2 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psrlq */
244     /* 14, 3 */  { NACLi_SSE2x, 1, 1, 0 },      /* psrldq */
245     /* 14, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
246     /* 14, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
247     /* 14, 6 */  { NACLi_MMXSSE2, 1, 1, 0 },    /* psllq */
248     /* 14, 7 */  { NACLi_SSE2x, 1, 1, 0 },      /* pslldq */
249   },
250   /* group 15 */
251   {
252     /* 15, 0 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* fxsave */
253     /* 15, 1 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* fxrstor */
254     /* 15, 2 */  { NACLi_SSE, 1, 1, 0 },        /* ldmxcsr */
255     /* 15, 3 */  { NACLi_SSE, 1, 1, 0 },        /* stmxcsr */
256     /* 15, 4 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* invalid */
257     /* 15, 5 */  { NACLi_SSE2, 1, 1, 0 },       /* lfence */
258     /* 15, 6 */  { NACLi_SSE2, 1, 1, 0 },       /* mfence */
259     /* 15, 7 */  { NACLi_SFENCE_CLFLUSH, 1, 1, 0 },     /* sfence/clflush */
260   },
261   /* group 16 */
262   {
263     /* 16, 0 */  { NACLi_SSE, 1, 1, 0 },        /* prefetch NTA */
264     /* 16, 1 */  { NACLi_SSE, 1, 1, 0 },        /* prefetch T0 */
265     /* 16, 2 */  { NACLi_SSE, 1, 1, 0 },        /* prefetch T1 */
266     /* 16, 3 */  { NACLi_SSE, 1, 1, 0 },        /* prefetch T1 */
267     /* 16, 4 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* NOP (prefetch) */
268     /* 16, 5 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* NOP (prefetch) */
269     /* 16, 6 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* NOP (prefetch) */
270     /* 16, 7 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* NOP (prefetch) */
271   },
272   /* group 17 */
273   {
274     /* 17, 0 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
275     /* 17, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
276     /* 17, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
277     /* 17, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
278     /* 17, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
279     /* 17, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
280     /* 17, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
281     /* 17, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
282   },
283   /* group 18 */
284   {
285     /* 18, 0 */  { NACLi_386, 1, 1, 0 },        /* pop $Ev */
286     /* 18, 1 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
287     /* 18, 2 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
288     /* 18, 3 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
289     /* 18, 4 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
290     /* 18, 5 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
291     /* 18, 6 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
292     /* 18, 7 */  { NACLi_UNDEFINED, 0, 1, 0 },  /* undefined */
293   },
294   /* group 19 */
295   {
296     /* 19, 0 */  { NACLi_3DNOW, 1, 1, 0 },      /* prefetch exclusive */
297     /* 19, 1 */  { NACLi_3DNOW, 1, 1, 0 },      /* prefetch modified */
298     /* 19, 2 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* [prefetch reserved] */
299     /* 19, 3 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* prefetch modified */
300     /* 19, 4 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* [prefetch reserved] */
301     /* 19, 5 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* [prefetch reserved] */
302     /* 19, 6 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* [prefetch reserved] */
303     /* 19, 7 */  { NACLi_ILLEGAL, 1, 1, 0 },    /* [prefetch reserved] */
304   },
305 };
306
307
308 /* one byte opcode tables */
309 static const struct OpInfo kDecode1ByteOp[NCDTABLESIZE] = {
310   /* 00 */  { NACLi_386L, 1, 1, 0 },    /* add  $Eb, $Gb */
311   /* 01 */  { NACLi_386L, 1, 1, 0 },    /* add  $Ev, $Gv */
312   /* 02 */  { NACLi_386L, 1, 1, 0 },    /* add  $Gb, $Eb */
313   /* 03 */  { NACLi_386L, 1, 1, 0 },    /* add  $Gv, $Ev */
314   /* 04 */  { NACLi_386L, 0, 2, 0 },    /* add  %al, $Ib */
315   /* 05 */  { NACLi_386L, 0, 6, 0 },    /* add  %rax, $Iz */
316   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
317   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
318   /* 08 */  { NACLi_386L, 1, 1, 0 },    /* or  $Eb, $Gb */
319   /* 09 */  { NACLi_386L, 1, 1, 0 },    /* or  $Ev, $Gv */
320   /* 0a */  { NACLi_386L, 1, 1, 0 },    /* or  $Gb, $Eb */
321   /* 0b */  { NACLi_386L, 1, 1, 0 },    /* or  $Gv, $Ev */
322   /* 0c */  { NACLi_386L, 0, 2, 0 },    /* or  %al, $Ib */
323   /* 0d */  { NACLi_386L, 0, 6, 0 },    /* or  %rax, $Iz */
324   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
325   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* [two-byte opcode] */
326   /* 10 */  { NACLi_386L, 1, 1, 0 },    /* adc  $Eb, $Gb */
327   /* 11 */  { NACLi_386L, 1, 1, 0 },    /* adc  $Ev, $Gv */
328   /* 12 */  { NACLi_386L, 1, 1, 0 },    /* adc  $Gb, $Eb */
329   /* 13 */  { NACLi_386L, 1, 1, 0 },    /* adc  $Gv, $Ev */
330   /* 14 */  { NACLi_386L, 0, 2, 0 },    /* adc  %al, $Ib */
331   /* 15 */  { NACLi_386L, 0, 6, 0 },    /* adc  %rax, $Iz */
332   /* 16 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
333   /* 17 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
334   /* 18 */  { NACLi_386L, 1, 1, 0 },    /* sbb  $Eb, $Gb */
335   /* 19 */  { NACLi_386L, 1, 1, 0 },    /* sbb  $Ev, $Gv */
336   /* 1a */  { NACLi_386L, 1, 1, 0 },    /* sbb  $Gb, $Eb */
337   /* 1b */  { NACLi_386L, 1, 1, 0 },    /* sbb  $Gv, $Ev */
338   /* 1c */  { NACLi_386L, 0, 2, 0 },    /* sbb  %al, $Ib */
339   /* 1d */  { NACLi_386L, 0, 6, 0 },    /* sbb  %rax, $Iz */
340   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
341   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
342   /* 20 */  { NACLi_386L, 1, 1, 0 },    /* and  $Eb, $Gb */
343   /* 21 */  { NACLi_386L, 1, 1, 0 },    /* and  $Ev, $Gv */
344   /* 22 */  { NACLi_386L, 1, 1, 0 },    /* and  $Gb, $Eb */
345   /* 23 */  { NACLi_386L, 1, 1, 0 },    /* and  $Gv, $Ev */
346   /* 24 */  { NACLi_386L, 0, 2, 0 },    /* and  %al, $Ib */
347   /* 25 */  { NACLi_386L, 0, 6, 0 },    /* and  %rax, $Iz */
348   /* 26 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [seg %es] */
349   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
350   /* 28 */  { NACLi_386L, 1, 1, 0 },    /* sub  $Eb, $Gb */
351   /* 29 */  { NACLi_386L, 1, 1, 0 },    /* sub  $Ev, $Gv */
352   /* 2a */  { NACLi_386L, 1, 1, 0 },    /* sub  $Gb, $Eb */
353   /* 2b */  { NACLi_386L, 1, 1, 0 },    /* sub  $Gv, $Ev */
354   /* 2c */  { NACLi_386L, 0, 2, 0 },    /* sub  %al, $Ib */
355   /* 2d */  { NACLi_386L, 0, 6, 0 },    /* sub  %rax, $Iz */
356   /* 2e */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [seg %cs] */
357   /* 2f */  { NACLi_ILLEGAL, 0, 1, 0 }, /* das */
358   /* 30 */  { NACLi_386L, 1, 1, 0 },    /* xor  $Eb, $Gb */
359   /* 31 */  { NACLi_386L, 1, 1, 0 },    /* xor  $Ev, $Gv */
360   /* 32 */  { NACLi_386L, 1, 1, 0 },    /* xor  $Gb, $Eb */
361   /* 33 */  { NACLi_386L, 1, 1, 0 },    /* xor  $Gv, $Ev */
362   /* 34 */  { NACLi_386L, 0, 2, 0 },    /* xor  %al, $Ib */
363   /* 35 */  { NACLi_386L, 0, 6, 0 },    /* xor  %rax, $Iz */
364   /* 36 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [seg %ss] */
365   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
366   /* 38 */  { NACLi_386, 1, 1, 0 },     /* cmp  $Eb, $Gb */
367   /* 39 */  { NACLi_386, 1, 1, 0 },     /* cmp  $Ev, $Gv */
368   /* 3a */  { NACLi_386, 1, 1, 0 },     /* cmp  $Gb, $Eb */
369   /* 3b */  { NACLi_386, 1, 1, 0 },     /* cmp  $Gv, $Ev */
370   /* 3c */  { NACLi_386, 0, 2, 0 },     /* cmp  %al, $Ib */
371   /* 3d */  { NACLi_386, 0, 6, 0 },     /* cmp  %rax, $Iz */
372   /* 3e */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [seg %ds] */
373   /* 3f */  { NACLi_ILLEGAL, 0, 1, 0 }, /* aas */
374   /* 40 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
375   /* 41 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
376   /* 42 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
377   /* 43 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
378   /* 44 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
379   /* 45 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
380   /* 46 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
381   /* 47 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
382   /* 48 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
383   /* 49 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
384   /* 4a */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
385   /* 4b */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
386   /* 4c */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
387   /* 4d */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
388   /* 4e */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
389   /* 4f */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rex] */
390   /* 50 */  { NACLi_386, 0, 1, 0 },     /* push  %rax */
391   /* 51 */  { NACLi_386, 0, 1, 0 },     /* push  %rcx */
392   /* 52 */  { NACLi_386, 0, 1, 0 },     /* push  %rdx */
393   /* 53 */  { NACLi_386, 0, 1, 0 },     /* push  %rbx */
394   /* 54 */  { NACLi_386, 0, 1, 0 },     /* push  %rsp */
395   /* 55 */  { NACLi_386, 0, 1, 0 },     /* push  %rbp */
396   /* 56 */  { NACLi_386, 0, 1, 0 },     /* push  %rsi */
397   /* 57 */  { NACLi_386, 0, 1, 0 },     /* push  %rdi */
398   /* 58 */  { NACLi_386, 0, 1, 0 },     /* pop  %rax */
399   /* 59 */  { NACLi_386, 0, 1, 0 },     /* pop  %rcx */
400   /* 5a */  { NACLi_386, 0, 1, 0 },     /* pop  %rdx */
401   /* 5b */  { NACLi_386, 0, 1, 0 },     /* pop  %rbx */
402   /* 5c */  { NACLi_386, 0, 1, 0 },     /* pop  %rsp */
403   /* 5d */  { NACLi_386, 0, 1, 0 },     /* pop  %rbp */
404   /* 5e */  { NACLi_386, 0, 1, 0 },     /* pop  %rsi */
405   /* 5f */  { NACLi_386, 0, 1, 0 },     /* pop  %rdi */
406   /* 60 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
407   /* 61 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
408   /* 62 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
409   /* 63 */  { NACLi_SYSTEM, 1, 1, 0 },  /* movsxd $Gv, $Ev */
410   /* 64 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [seg fs] */
411   /* 65 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [seg gs] */
412   /* 66 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [data16] */
413   /* 67 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [addr size] */
414   /* 68 */  { NACLi_386, 0, 6, 0 },     /* push $Iz */
415   /* 69 */  { NACLi_386, 1, 6, 0 },     /* imul $Gv, $Ev, $Iz */
416   /* 6a */  { NACLi_386, 0, 2, 0 },     /* push $Ib */
417   /* 6b */  { NACLi_386, 1, 2, 0 },     /* imul $Gv, $Ev, $Ib */
418   /* 6c */  { NACLi_ILLEGAL, 0, 1, 0 }, /* insb $Y, $D */
419   /* 6d */  { NACLi_ILLEGAL, 0, 1, 0 }, /* insw/d $Y, $D */
420   /* 6e */  { NACLi_ILLEGAL, 0, 1, 0 }, /* outsb $D, $X */
421   /* 6f */  { NACLi_ILLEGAL, 0, 1, 0 }, /* outsw/d $D, $X */
422   /* 70 */  { NACLi_JMP8, 0, 2, 0 },    /* jo $Jb */
423   /* 71 */  { NACLi_JMP8, 0, 2, 0 },    /* jno $Jb */
424   /* 72 */  { NACLi_JMP8, 0, 2, 0 },    /* jb $Jb */
425   /* 73 */  { NACLi_JMP8, 0, 2, 0 },    /* jnb $Jb */
426   /* 74 */  { NACLi_JMP8, 0, 2, 0 },    /* jz $Jb */
427   /* 75 */  { NACLi_JMP8, 0, 2, 0 },    /* jnz $Jb */
428   /* 76 */  { NACLi_JMP8, 0, 2, 0 },    /* jbe $Jb */
429   /* 77 */  { NACLi_JMP8, 0, 2, 0 },    /* jnbe $Jb */
430   /* 78 */  { NACLi_JMP8, 0, 2, 0 },    /* js $Jb */
431   /* 79 */  { NACLi_JMP8, 0, 2, 0 },    /* jns $Jb */
432   /* 7a */  { NACLi_JMP8, 0, 2, 0 },    /* jp $Jb */
433   /* 7b */  { NACLi_JMP8, 0, 2, 0 },    /* jnp $Jb */
434   /* 7c */  { NACLi_JMP8, 0, 2, 0 },    /* jl $Jb */
435   /* 7d */  { NACLi_JMP8, 0, 2, 0 },    /* jge $Jb */
436   /* 7e */  { NACLi_JMP8, 0, 2, 0 },    /* jle $Jb */
437   /* 7f */  { NACLi_JMP8, 0, 2, 0 },    /* jg $Jb */
438   /* 80 */  { NACLi_OPINMRM, 1, 2, 1 }, /* $group1 $Eb, $Ib */
439   /* 81 */  { NACLi_OPINMRM, 1, 6, 1 }, /* $group1 $Ev, $Iz */
440   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
441   /* 83 */  { NACLi_OPINMRM, 1, 2, 1 }, /* $group1 $Ev, $Ib */
442   /* 84 */  { NACLi_386, 1, 1, 0 },     /* test $E, $G */
443   /* 85 */  { NACLi_386, 1, 1, 0 },     /* test $E, $G */
444   /* 86 */  { NACLi_386L, 1, 1, 0 },    /* xchg $E, $G */
445   /* 87 */  { NACLi_386L, 1, 1, 0 },    /* xchg $E, $G */
446   /* 88 */  { NACLi_386, 1, 1, 0 },     /* mov $Eb, $Gb */
447   /* 89 */  { NACLi_386, 1, 1, 0 },     /* mov $Ev, $Gv */
448   /* 8a */  { NACLi_386, 1, 1, 0 },     /* mov $Gb, $Eb */
449   /* 8b */  { NACLi_386, 1, 1, 0 },     /* mov $Gv, $Ev */
450   /* 8c */  { NACLi_ILLEGAL, 1, 1, 0 }, /* mov $E, $S */
451   /* 8d */  { NACLi_386, 1, 1, 0 },     /* lea $G, $M */
452   /* 8e */  { NACLi_ILLEGAL, 1, 1, 0 }, /* mov $S, $E */
453   /* 8f */  { NACLi_OPINMRM, 1, 1, 18 },        /* $group1a $Ev */
454   /* 90 */  { NACLi_386R, 0, 1, 0 },    /* nop */
455   /* 91 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rcx */
456   /* 92 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rdx */
457   /* 93 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rbx */
458   /* 94 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rsp */
459   /* 95 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rbp */
460   /* 96 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rsi */
461   /* 97 */  { NACLi_386L, 0, 1, 0 },    /* xchg %rax, %rdi */
462   /* 98 */  { NACLi_386, 0, 1, 0 },     /* cbw */
463   /* 99 */  { NACLi_386, 0, 1, 0 },     /* cwd */
464   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
465   /* 9b */  { NACLi_X87, 0, 1, 0 },     /* wait */
466   /* 9c */  { NACLi_ILLEGAL, 0, 1, 0 }, /* pushf $F */
467   /* 9d */  { NACLi_ILLEGAL, 0, 1, 0 }, /* popf $F */
468   /* 9e */  { NACLi_386, 0, 1, 0 },     /* sahf */
469   /* 9f */  { NACLi_386, 0, 1, 0 },     /* lahf */
470   /* a0 */  { NACLi_386, 0, 7, 0 },     /* mov %al, $O */
471   /* a1 */  { NACLi_386, 0, 7, 0 },     /* mov %rax, $O */
472   /* a2 */  { NACLi_386, 0, 7, 0 },     /* mov $O, %al */
473   /* a3 */  { NACLi_386, 0, 7, 0 },     /* mov $O, %rax */
474   /* a4 */  { NACLi_386R, 0, 1, 0 },    /* movsb $X, $Y */
475   /* a5 */  { NACLi_386R, 0, 1, 0 },    /* movsw  $X, $Y */
476   /* a6 */  { NACLi_386RE, 0, 1, 0 },   /* cmpsb $X, $Y */
477   /* a7 */  { NACLi_386RE, 0, 1, 0 },   /* cmpsw $X, $Y */
478   /* a8 */  { NACLi_386, 0, 2, 0 },     /* test %al, $I */
479   /* a9 */  { NACLi_386, 0, 6, 0 },     /* test %rax, $I */
480   /* aa */  { NACLi_386R, 0, 1, 0 },    /* stosb $Y, %al */
481   /* ab */  { NACLi_386R, 0, 1, 0 },    /* stosw $Y, $eax */
482   /* ac */  { NACLi_ILLEGAL, 0, 1, 0 }, /* lodsb %al, $X */
483   /* ad */  { NACLi_ILLEGAL, 0, 1, 0 }, /* lodsw %rax, $X */
484   /* ae */  { NACLi_386RE, 0, 1, 0 },   /* scasb %al, $X */
485   /* af */  { NACLi_386RE, 0, 1, 0 },   /* scasw %rax, $X */
486   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
487   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
488   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
489   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
490   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
491   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
492   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
493   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
494   /* b8 */  { NACLi_386, 0, 11, 0 },    /* mov %eax, $Iv */
495   /* b9 */  { NACLi_386, 0, 11, 0 },    /* mov %ecx, $Iv */
496   /* ba */  { NACLi_386, 0, 11, 0 },    /* mov %edx, $Iv */
497   /* bb */  { NACLi_386, 0, 11, 0 },    /* mov %ebx, $Iv */
498   /* bc */  { NACLi_386, 0, 11, 0 },    /* mov %esp, $Iv */
499   /* bd */  { NACLi_386, 0, 11, 0 },    /* mov %ebp, $Iv */
500   /* be */  { NACLi_386, 0, 11, 0 },    /* mov %esi, $Iv */
501   /* bf */  { NACLi_386, 0, 11, 0 },    /* mov %edi, $Iv */
502   /* c0 */  { NACLi_OPINMRM, 1, 2, 2 }, /* $group2 $Eb, $Ib */
503   /* c1 */  { NACLi_OPINMRM, 1, 2, 2 }, /* $group2 $Ev, $Ib */
504   /* c2 */  { NACLi_RETURN, 0, 3, 0 },  /* ret $Iw */
505   /* c3 */  { NACLi_RETURN, 0, 1, 0 },  /* ret */
506   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
507   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
508   /* c6 */  { NACLi_OPINMRM, 1, 2, 11 },        /* $group11 $Eb, $Ib */
509   /* c7 */  { NACLi_OPINMRM, 1, 6, 11 },        /* $group11 $Ev, $Iz */
510   /* c8 */  { NACLi_ILLEGAL, 0, 4, 0 }, /* enter $I, $I */
511   /* c9 */  { NACLi_386, 0, 1, 0 },     /* leave */
512   /* ca */  { NACLi_RETURN, 0, 3, 0 },  /* ret (far) */
513   /* cb */  { NACLi_RETURN, 0, 1, 0 },  /* ret (far) */
514   /* cc */  { NACLi_ILLEGAL, 0, 1, 0 }, /* int3 */
515   /* cd */  { NACLi_ILLEGAL, 0, 2, 0 }, /* int $Iv */
516   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
517   /* cf */  { NACLi_SYSTEM, 0, 1, 0 },  /* iret */
518   /* d0 */  { NACLi_OPINMRM, 1, 1, 2 }, /* $group2 $Eb, 1 */
519   /* d1 */  { NACLi_OPINMRM, 1, 1, 2 }, /* $group2 $Ev, 1 */
520   /* d2 */  { NACLi_OPINMRM, 1, 1, 2 }, /* $group2 $Eb, %cl */
521   /* d3 */  { NACLi_OPINMRM, 1, 1, 2 }, /* $group2 $Ev, %cl */
522   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
523   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
524   /* d6 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* salc */
525   /* d7 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* xlat */
526   /* d8 */  { NACLi_X87, 1, 1, 0 },     /* x87 */
527   /* d9 */  { NACLi_X87, 1, 1, 0 },     /* x87 */
528   /* da */  { NACLi_X87, 1, 1, 0 },     /* x87 */
529   /* db */  { NACLi_X87, 1, 1, 0 },     /* x87 */
530   /* dc */  { NACLi_X87, 1, 1, 0 },     /* x87 */
531   /* dd */  { NACLi_X87, 1, 1, 0 },     /* x87 */
532   /* de */  { NACLi_X87, 1, 1, 0 },     /* x87 */
533   /* df */  { NACLi_X87, 1, 1, 0 },     /* x87 */
534   /* e0 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* loopne $Jb */
535   /* e1 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* loope $Jb */
536   /* e2 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* loop $Jb */
537   /* e3 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* jcxz $Jb */
538   /* e4 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* in %al, $I */
539   /* e5 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* in %eax, $I */
540   /* e6 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* out %al, $I */
541   /* e7 */  { NACLi_ILLEGAL, 0, 2, 0 }, /* out %eax, $I */
542   /* e8 */  { NACLi_JMPZ, 0, 6, 0 },    /* call $Jz */
543   /* e9 */  { NACLi_JMPZ, 0, 6, 0 },    /* jmp $Jz */
544   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
545   /* eb */  { NACLi_JMP8, 0, 2, 0 },    /* jmp $Jb */
546   /* ec */  { NACLi_ILLEGAL, 0, 1, 0 }, /* in %al, %dx */
547   /* ed */  { NACLi_ILLEGAL, 0, 1, 0 }, /* in %eax, %dx */
548   /* ee */  { NACLi_ILLEGAL, 0, 1, 0 }, /* out %dx, %al */
549   /* ef */  { NACLi_ILLEGAL, 0, 1, 0 }, /* out %dx, %eax */
550   /* f0 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [lock] */
551   /* f1 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* int1 */
552   /* f2 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [repne] */
553   /* f3 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* [rep] */
554   /* f4 */  { NACLi_386, 0, 1, 0 },     /* hlt */
555   /* f5 */  { NACLi_386, 0, 1, 0 },     /* cmc */
556   /* f6 */  { NACLi_OPINMRM, 1, 8, 3 }, /* $group3 $Eb */
557   /* f7 */  { NACLi_OPINMRM, 1, 9, 3 }, /* $group3 $Ev */
558   /* f8 */  { NACLi_386, 0, 1, 0 },     /* clc */
559   /* f9 */  { NACLi_386, 0, 1, 0 },     /* stc */
560   /* fa */  { NACLi_SYSTEM, 0, 1, 0 },  /* cli */
561   /* fb */  { NACLi_SYSTEM, 0, 1, 0 },  /* sti */
562   /* fc */  { NACLi_386, 0, 1, 0 },     /* cld */
563   /* fd */  { NACLi_386, 0, 1, 0 },     /* std */
564   /* fe */  { NACLi_OPINMRM, 1, 1, 4 }, /* $group4 $Eb */
565   /* ff */  { NACLi_OPINMRM, 1, 1, 5 }, /* $group5 $Ev */
566 };
567
568
569 /* two byte opcode tables */
570 static const struct OpInfo kDecode0FXXOp[NCDTABLESIZE] = {
571   /* 00 */  { NACLi_OPINMRM, 1, 1, 6 }, /* $group6 $Ew */
572   /* 01 */  { NACLi_OPINMRM, 1, 1, 7 }, /* $group7 */
573   /* 02 */  { NACLi_SYSTEM, 1, 1, 0 },  /* lar $G, $E */
574   /* 03 */  { NACLi_ILLEGAL, 1, 1, 0 }, /* lsl $Gv, $Ew */
575   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
576   /* 05 */  { NACLi_SYSCALL, 0, 1, 0 }, /* syscall */
577   /* 06 */  { NACLi_SYSTEM, 0, 1, 0 },  /* clts */
578   /* 07 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* sysret */
579   /* 08 */  { NACLi_SYSTEM, 0, 1, 0 },  /* invd */
580   /* 09 */  { NACLi_SYSTEM, 0, 1, 0 },  /* wbinvd */
581   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
582   /* 0b */  { NACLi_386, 0, 1, 0 },     /* ud2 */
583   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
584   /* 0d */  { NACLi_OPINMRM, 1, 1, 19 },        /* $groupP (prefetch) */
585   /* 0e */  { NACLi_3DNOW, 0, 1, 0 },   /* femms */
586   /* 0f */  { NACLi_3DNOW, 1, 2, 0 },   /* 3DNow */
587   /* 10 */  { NACLi_SSE, 1, 1, 0 },     /* movups $Vps, $Wps */
588   /* 11 */  { NACLi_SSE, 1, 1, 0 },     /* movups $Wps, $Vps */
589   /* 12 */  { NACLi_SSE, 1, 1, 0 },     /* movlps $Vps, $Mq */
590   /* 13 */  { NACLi_SSE, 1, 1, 0 },     /* movlps $Mq, $Vps */
591   /* 14 */  { NACLi_SSE, 1, 1, 0 },     /* unpcklps $Vps, $Wq */
592   /* 15 */  { NACLi_SSE, 1, 1, 0 },     /* unpckhps $Vps, $Wq */
593   /* 16 */  { NACLi_SSE, 1, 1, 0 },     /* movhps $Vps, $Mq */
594   /* 17 */  { NACLi_SSE, 1, 1, 0 },     /* movhps $Mq, $Vps */
595   /* 18 */  { NACLi_OPINMRM, 1, 1, 16 },        /* $group16 */
596   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
597   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
598   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
599   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
600   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
601   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
602   /* 1f */  { NACLi_386, 1, 1, 0 },     /* nop */
603   /* 20 */  { NACLi_SYSTEM, 1, 1, 0 },  /* mov $C, $R */
604   /* 21 */  { NACLi_SYSTEM, 1, 1, 0 },  /* mov $D, $R */
605   /* 22 */  { NACLi_SYSTEM, 1, 1, 0 },  /* mov $R, $C */
606   /* 23 */  { NACLi_SYSTEM, 1, 1, 0 },  /* mov $R, $D */
607   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
608   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
609   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
610   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
611   /* 28 */  { NACLi_SSE, 1, 1, 0 },     /* movaps $Vps, $Wps */
612   /* 29 */  { NACLi_SSE, 1, 1, 0 },     /* movaps $Wps, $Vps */
613   /* 2a */  { NACLi_SSE, 1, 1, 0 },     /* cvtpi2ps $Vps, $Qq */
614   /* 2b */  { NACLi_SSE, 1, 1, 0 },     /* movntps $Mdq, $Vps */
615   /* 2c */  { NACLi_SSE, 1, 1, 0 },     /* cvttps2pi $Pq, $Wps */
616   /* 2d */  { NACLi_SSE, 1, 1, 0 },     /* cvtps2pi $Pq, $Wps */
617   /* 2e */  { NACLi_SSE, 1, 1, 0 },     /* ucomiss $Vss, $Wss */
618   /* 2f */  { NACLi_SSE, 1, 1, 0 },     /* comiss $Vps, $Wps */
619   /* 30 */  { NACLi_RDMSR, 0, 1, 0 },   /* wrmsr */
620   /* 31 */  { NACLi_RDTSC, 0, 1, 0 },   /* rdtsc */
621   /* 32 */  { NACLi_RDMSR, 0, 1, 0 },   /* rdmsr */
622   /* 33 */  { NACLi_SYSTEM, 0, 1, 0 },  /* rdpmc */
623   /* 34 */  { NACLi_SYSENTER, 0, 1, 0 },        /* sysenter */
624   /* 35 */  { NACLi_SYSENTER, 0, 1, 0 },        /* sysexit */
625   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
626   /* 37 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* getsec */
627   /* 38 */  { NACLi_3BYTE, 1, 1, 0 },   /* SSSE3, SSE4 */
628   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
629   /* 3a */  { NACLi_3BYTE, 1, 2, 0 },   /* SSSE3, SSE4 */
630   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
631   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
632   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
633   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
634   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
635   /* 40 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovo $Gv, $Ev */
636   /* 41 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovno $Gv, $Ev */
637   /* 42 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovb $Gv, $Ev */
638   /* 43 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnb $Gv, $Ev */
639   /* 44 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovz $Gv, $Ev */
640   /* 45 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnz $Gv, $Ev */
641   /* 46 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovbe $Gv, $Ev */
642   /* 47 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnbe $Gv, $Ev */
643   /* 48 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovs $Gv, $Ev */
644   /* 49 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovns $Gv, $Ev */
645   /* 4a */  { NACLi_CMOV, 1, 1, 0 },    /* cmovp $Gv, $Ev */
646   /* 4b */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnp $Gv, $Ev */
647   /* 4c */  { NACLi_CMOV, 1, 1, 0 },    /* cmovl $Gv, $Ev */
648   /* 4d */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnl $Gv, $Ev */
649   /* 4e */  { NACLi_CMOV, 1, 1, 0 },    /* cmovle $Gv, $Ev */
650   /* 4f */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnle $Gv, $Ev */
651   /* 50 */  { NACLi_SSE, 1, 1, 0 },     /* movmskps $Gd, $VRps */
652   /* 51 */  { NACLi_SSE, 1, 1, 0 },     /* sqrtps $Vps, $Wps */
653   /* 52 */  { NACLi_SSE, 1, 1, 0 },     /* rsqrtps $Vps, $Wps */
654   /* 53 */  { NACLi_SSE, 1, 1, 0 },     /* rcpps $Vps, $Wps */
655   /* 54 */  { NACLi_SSE, 1, 1, 0 },     /* andps $Vps, $Wps */
656   /* 55 */  { NACLi_SSE, 1, 1, 0 },     /* andnps $Vps, $Wps */
657   /* 56 */  { NACLi_SSE, 1, 1, 0 },     /* orps $Vps, $Wps */
658   /* 57 */  { NACLi_SSE, 1, 1, 0 },     /* xorps $Vps, $Wps */
659   /* 58 */  { NACLi_SSE, 1, 1, 0 },     /* addps $Vps, $Wps */
660   /* 59 */  { NACLi_SSE, 1, 1, 0 },     /* mulps $Vps, $Wps */
661   /* 5a */  { NACLi_SSE2, 1, 1, 0 },    /* cvtps2pd $Vpd, $Wps */
662   /* 5b */  { NACLi_SSE2, 1, 1, 0 },    /* cvtdq2ps $Vps, $Wdq */
663   /* 5c */  { NACLi_SSE, 1, 1, 0 },     /* subps $Vps, $Wps */
664   /* 5d */  { NACLi_SSE, 1, 1, 0 },     /* minps $Vps, $Wps */
665   /* 5e */  { NACLi_SSE, 1, 1, 0 },     /* divps $Vps, $Wps */
666   /* 5f */  { NACLi_SSE, 1, 1, 0 },     /* maxps $Vps, $Wps */
667   /* 60 */  { NACLi_MMX, 1, 1, 0 },     /* punpcklbw $Pq, $Qd */
668   /* 61 */  { NACLi_MMX, 1, 1, 0 },     /* punpcklwd $Pq, $Qd */
669   /* 62 */  { NACLi_MMX, 1, 1, 0 },     /* punpckldq $Pq, $Qd */
670   /* 63 */  { NACLi_MMX, 1, 1, 0 },     /* packsswb $Pq, $Qq */
671   /* 64 */  { NACLi_MMX, 1, 1, 0 },     /* pcmpgtb $Pq, $Qq */
672   /* 65 */  { NACLi_MMX, 1, 1, 0 },     /* pcmpgtw $Pq, $Qq */
673   /* 66 */  { NACLi_MMX, 1, 1, 0 },     /* pcmpgtd $Pq, $Qq */
674   /* 67 */  { NACLi_MMX, 1, 1, 0 },     /* packuswb $Pq, $Qq */
675   /* 68 */  { NACLi_MMX, 1, 1, 0 },     /* punpckhbw $Pq, $Qd */
676   /* 69 */  { NACLi_MMX, 1, 1, 0 },     /* punpckhwd $Pq, $Qd */
677   /* 6a */  { NACLi_MMX, 1, 1, 0 },     /* punpckhdq $Pq, $Qd */
678   /* 6b */  { NACLi_MMX, 1, 1, 0 },     /* packssdw $Pq, $Qq */
679   /* 6c */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
680   /* 6d */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
681   /* 6e */  { NACLi_MMX, 1, 1, 0 },     /* movd $Pq, $Ed */
682   /* 6f */  { NACLi_MMX, 1, 1, 0 },     /* movq $Pq, $Qq */
683   /* 70 */  { NACLi_SSE, 1, 2, 0 },     /* pshufw $Pq, $Qq, $Ib */
684   /* 71 */  { NACLi_OPINMRM, 1, 2, 12 },        /* $group12 $PRq, $Ib */
685   /* 72 */  { NACLi_OPINMRM, 1, 2, 13 },        /* $group13 $PRq, $Ib */
686   /* 73 */  { NACLi_OPINMRM, 1, 2, 14 },        /* $group14 $PRq, $Ib */
687   /* 74 */  { NACLi_MMX, 1, 1, 0 },     /* pcmpeqb $Pq, $Qq */
688   /* 75 */  { NACLi_MMX, 1, 1, 0 },     /* pcmpeqw $Pq, $Qq */
689   /* 76 */  { NACLi_MMX, 1, 1, 0 },     /* pcmpeqd $Pq, $Qq */
690   /* 77 */  { NACLi_MMX, 0, 1, 0 },     /* emms */
691   /* 78 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
692   /* 79 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
693   /* 7a */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
694   /* 7b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
695   /* 7c */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
696   /* 7d */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
697   /* 7e */  { NACLi_MMX, 1, 1, 0 },     /* movd $Ed, $Pd */
698   /* 7f */  { NACLi_MMX, 1, 1, 0 },     /* movq $Qq, $Pq */
699   /* 80 */  { NACLi_JMPZ, 0, 6, 0 },    /* jo $Jz */
700   /* 81 */  { NACLi_JMPZ, 0, 6, 0 },    /* jno $Jz */
701   /* 82 */  { NACLi_JMPZ, 0, 6, 0 },    /* jb $Jz */
702   /* 83 */  { NACLi_JMPZ, 0, 6, 0 },    /* jnb $Jz */
703   /* 84 */  { NACLi_JMPZ, 0, 6, 0 },    /* jz $Jz */
704   /* 85 */  { NACLi_JMPZ, 0, 6, 0 },    /* jnz $Jz */
705   /* 86 */  { NACLi_JMPZ, 0, 6, 0 },    /* jbe $Jz */
706   /* 87 */  { NACLi_JMPZ, 0, 6, 0 },    /* jnbe $Jz */
707   /* 88 */  { NACLi_JMPZ, 0, 6, 0 },    /* js $Jz */
708   /* 89 */  { NACLi_JMPZ, 0, 6, 0 },    /* jns $Jz */
709   /* 8a */  { NACLi_JMPZ, 0, 6, 0 },    /* jp $Jz */
710   /* 8b */  { NACLi_JMPZ, 0, 6, 0 },    /* jnp $Jz */
711   /* 8c */  { NACLi_JMPZ, 0, 6, 0 },    /* jl $Jz */
712   /* 8d */  { NACLi_JMPZ, 0, 6, 0 },    /* jge $Jz */
713   /* 8e */  { NACLi_JMPZ, 0, 6, 0 },    /* jle $Jz */
714   /* 8f */  { NACLi_JMPZ, 0, 6, 0 },    /* jg $Jz */
715   /* 90 */  { NACLi_386, 1, 1, 0 },     /* seto $Eb */
716   /* 91 */  { NACLi_386, 1, 1, 0 },     /* setno $Eb */
717   /* 92 */  { NACLi_386, 1, 1, 0 },     /* setb $Eb */
718   /* 93 */  { NACLi_386, 1, 1, 0 },     /* setnb $Eb */
719   /* 94 */  { NACLi_386, 1, 1, 0 },     /* setz $Eb */
720   /* 95 */  { NACLi_386, 1, 1, 0 },     /* setnz $Eb */
721   /* 96 */  { NACLi_386, 1, 1, 0 },     /* setbe $Eb */
722   /* 97 */  { NACLi_386, 1, 1, 0 },     /* setnbe $Eb */
723   /* 98 */  { NACLi_386, 1, 1, 0 },     /* sets $Eb */
724   /* 99 */  { NACLi_386, 1, 1, 0 },     /* setns $Eb */
725   /* 9a */  { NACLi_386, 1, 1, 0 },     /* setp $Eb */
726   /* 9b */  { NACLi_386, 1, 1, 0 },     /* setnp $Eb */
727   /* 9c */  { NACLi_386, 1, 1, 0 },     /* setl $Eb */
728   /* 9d */  { NACLi_386, 1, 1, 0 },     /* setge $Eb */
729   /* 9e */  { NACLi_386, 1, 1, 0 },     /* setle $Eb */
730   /* 9f */  { NACLi_386, 1, 1, 0 },     /* setg $Eb */
731   /* a0 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* push %fs */
732   /* a1 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* pop %fs */
733   /* a2 */  { NACLi_386, 0, 1, 0 },     /* cpuid */
734   /* a3 */  { NACLi_ILLEGAL, 1, 1, 0 }, /* bt $Ev, $Gv */
735   /* a4 */  { NACLi_386, 1, 2, 0 },     /* shld $Ev, $Gv, $Ib */
736   /* a5 */  { NACLi_386, 1, 1, 0 },     /* shld $Ev, $Gv, %cl */
737   /* a6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
738   /* a7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
739   /* a8 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* push %gs */
740   /* a9 */  { NACLi_ILLEGAL, 0, 1, 0 }, /* pop %gs */
741   /* aa */  { NACLi_SYSTEM, 0, 1, 0 },  /* rsm */
742   /* ab */  { NACLi_ILLEGAL, 1, 1, 0 }, /* bts $Ev, $Gv */
743   /* ac */  { NACLi_386, 1, 2, 0 },     /* shrd $Ev, $Gv, $Ib */
744   /* ad */  { NACLi_386, 1, 1, 0 },     /* shrd $Ev, $Gv, %cl */
745   /* ae */  { NACLi_OPINMRM, 1, 1, 15 },        /* $group15 $M */
746   /* af */  { NACLi_386, 1, 1, 0 },     /* imul $Gv, $Ev */
747   /* b0 */  { NACLi_386L, 1, 1, 0 },    /* cmpxchg $E, $G */
748   /* b1 */  { NACLi_386L, 1, 1, 0 },    /* cmpxchg $E, $G */
749   /* b2 */  { NACLi_ILLEGAL, 1, 1, 0 }, /* lss $Mp */
750   /* b3 */  { NACLi_ILLEGAL, 1, 1, 0 }, /* btr $Ev, $Gv */
751   /* b4 */  { NACLi_ILLEGAL, 1, 1, 0 }, /* lfs $Mp */
752   /* b5 */  { NACLi_ILLEGAL, 1, 1, 0 }, /* lgs $Mp */
753   /* b6 */  { NACLi_386, 1, 1, 0 },     /* movzx $Gv, $Eb */
754   /* b7 */  { NACLi_386, 1, 1, 0 },     /* movzx $Gv, $Ew */
755   /* b8 */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
756   /* b9 */  { NACLi_OPINMRM, 1, 1, 0 }, /* $group10 */
757   /* ba */  { NACLi_OPINMRM, 1, 2, 8 }, /* $group8 $Ev, $Ib */
758   /* bb */  { NACLi_ILLEGAL, 1, 1, 0 }, /* btc $Ev, $Gv */
759   /* bc */  { NACLi_386, 1, 1, 0 },     /* bsf $Gv, $Ev */
760   /* bd */  { NACLi_386, 1, 1, 0 },     /* bsr $Gv, $Ev */
761   /* be */  { NACLi_386, 1, 1, 0 },     /* movsx $Gv, $Eb */
762   /* bf */  { NACLi_386, 1, 1, 0 },     /* movsx $Gv, $Ew */
763   /* c0 */  { NACLi_386L, 1, 1, 0 },    /* xadd $E, $G */
764   /* c1 */  { NACLi_386L, 1, 1, 0 },    /* xadd $E, $G */
765   /* c2 */  { NACLi_SSE, 1, 2, 0 },     /* cmpps $V, $W, $I */
766   /* c3 */  { NACLi_SSE2, 1, 1, 0 },    /* movnti $Md, $Gd */
767   /* c4 */  { NACLi_SSE, 1, 2, 0 },     /* pinsrw $Pq, $Ew, $Ib */
768   /* c5 */  { NACLi_SSE, 1, 2, 0 },     /* pextrw $Gd, $PRq, $Ib */
769   /* c6 */  { NACLi_SSE, 1, 2, 0 },     /* shufps $Vps, $Wps, $Ib */
770   /* c7 */  { NACLi_OPINMRM, 1, 1, 9 }, /* $group9 $Mq */
771   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
772   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
773   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
774   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
775   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
776   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
777   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
778   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
779   /* d0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
780   /* d1 */  { NACLi_MMX, 1, 1, 0 },     /* psrlw $Pq, $Qq */
781   /* d2 */  { NACLi_MMX, 1, 1, 0 },     /* psrld $Pq, $Qq */
782   /* d3 */  { NACLi_MMX, 1, 1, 0 },     /* psrlq $Pq, $Qq */
783   /* d4 */  { NACLi_SSE2, 1, 1, 0 },    /* paddq $Pq, $Qq */
784   /* d5 */  { NACLi_MMX, 1, 1, 0 },     /* pmullw $Pq, $Qq */
785   /* d6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
786   /* d7 */  { NACLi_SSE, 1, 1, 0 },     /* pmovmskb $Gd, $PRq */
787   /* d8 */  { NACLi_MMX, 1, 1, 0 },     /* psubusb $Pq, $Qq */
788   /* d9 */  { NACLi_MMX, 1, 1, 0 },     /* psubusw $Pq, $Qq */
789   /* da */  { NACLi_SSE, 1, 1, 0 },     /* pminub $Pq, $Qq */
790   /* db */  { NACLi_MMX, 1, 1, 0 },     /* pand $Pq, $Qq */
791   /* dc */  { NACLi_MMX, 1, 1, 0 },     /* paddusb $Pq, $Qq */
792   /* dd */  { NACLi_MMX, 1, 1, 0 },     /* paddusw $Pq, $Qq */
793   /* de */  { NACLi_SSE, 1, 1, 0 },     /* pmaxub $Pq, $Qq */
794   /* df */  { NACLi_MMX, 1, 1, 0 },     /* pandn $Pq, $Qq */
795   /* e0 */  { NACLi_SSE, 1, 1, 0 },     /* pavgb $Pq, $Qq */
796   /* e1 */  { NACLi_MMX, 1, 1, 0 },     /* psraw $Pq, $Qq */
797   /* e2 */  { NACLi_MMX, 1, 1, 0 },     /* psrad $Pq, $Qq */
798   /* e3 */  { NACLi_SSE, 1, 1, 0 },     /* pavgw $Pq, $Qq */
799   /* e4 */  { NACLi_SSE, 1, 1, 0 },     /* pmulhuw $Pq, $Qq */
800   /* e5 */  { NACLi_MMX, 1, 1, 0 },     /* pmulhw $Pq, $Qq */
801   /* e6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
802   /* e7 */  { NACLi_SSE, 1, 1, 0 },     /* movntq $Mq, $Pq */
803   /* e8 */  { NACLi_MMX, 1, 1, 0 },     /* psubsb $Pq, $Qq */
804   /* e9 */  { NACLi_MMX, 1, 1, 0 },     /* psubsw $Pq, $Qq */
805   /* ea */  { NACLi_SSE, 1, 1, 0 },     /* pminsw $Pq, $Qq */
806   /* eb */  { NACLi_MMX, 1, 1, 0 },     /* por $Pq, $Qq */
807   /* ec */  { NACLi_MMX, 1, 1, 0 },     /* paddsb $Pq, $Qq */
808   /* ed */  { NACLi_MMX, 1, 1, 0 },     /* paddsw $Pq, $Qq */
809   /* ee */  { NACLi_SSE, 1, 1, 0 },     /* pmaxsw $Pq, $Qq */
810   /* ef */  { NACLi_MMX, 1, 1, 0 },     /* pxor $Pq, $Qq */
811   /* f0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
812   /* f1 */  { NACLi_MMX, 1, 1, 0 },     /* psllw $Pq, $Qq */
813   /* f2 */  { NACLi_MMX, 1, 1, 0 },     /* pslld $Pq, $Qq */
814   /* f3 */  { NACLi_MMX, 1, 1, 0 },     /* psllq $Pq, $Qq */
815   /* f4 */  { NACLi_SSE2, 1, 1, 0 },    /* pmuludq $Pq, $Qq */
816   /* f5 */  { NACLi_MMX, 1, 1, 0 },     /* pmaddwd $Pq, $Qq */
817   /* f6 */  { NACLi_SSE, 1, 1, 0 },     /* psadbw $Pq, $Qq */
818   /* f7 */  { NACLi_SSE, 1, 1, 0 },     /* maskmovq $Pq, $PRq */
819   /* f8 */  { NACLi_MMX, 1, 1, 0 },     /* psubb $Pq, $Qq */
820   /* f9 */  { NACLi_MMX, 1, 1, 0 },     /* psubw $Pq, $Qq */
821   /* fa */  { NACLi_MMX, 1, 1, 0 },     /* psubd $Pq, $Qq */
822   /* fb */  { NACLi_SSE2, 1, 1, 0 },    /* psubq $Pq, $Qq */
823   /* fc */  { NACLi_MMX, 1, 1, 0 },     /* paddb $Pq, $Qq */
824   /* fd */  { NACLi_MMX, 1, 1, 0 },     /* paddw $Pq, $Qq */
825   /* fe */  { NACLi_MMX, 1, 1, 0 },     /* paddd $Pq, $Qq */
826   /* ff */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
827 };
828
829 static const struct OpInfo kDecode660FXXOp[NCDTABLESIZE] = {
830   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
831   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
832   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
833   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
834   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
835   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
836   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
837   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
838   /* 08 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
839   /* 09 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
840   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
841   /* 0b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
842   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
843   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
844   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
845   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
846   /* 10 */  { NACLi_SSE2, 1, 1, 0 },    /* movupd $Vpd, $Wpd */
847   /* 11 */  { NACLi_SSE2, 1, 1, 0 },    /* movupd $Wpd, $Vpd */
848   /* 12 */  { NACLi_SSE2, 1, 1, 0 },    /* movlpd $Vps, $Mq */
849   /* 13 */  { NACLi_SSE2, 1, 1, 0 },    /* movlpd $Mq, $Vsd */
850   /* 14 */  { NACLi_SSE2, 1, 1, 0 },    /* unpcklpd $Vpd, $Wq */
851   /* 15 */  { NACLi_SSE2, 1, 1, 0 },    /* unpckhpd $Vpd, $Wq */
852   /* 16 */  { NACLi_SSE2, 1, 1, 0 },    /* movhpd $Vsd, $Mq */
853   /* 17 */  { NACLi_SSE2, 1, 1, 0 },    /* movhpd $Mq, $Vpd */
854   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
855   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
856   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
857   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
858   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
859   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
860   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
861   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
862   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
863   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
864   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
865   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
866   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
867   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
868   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
869   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
870   /* 28 */  { NACLi_SSE2, 1, 1, 0 },    /* movapd $Vpd, $Wpd */
871   /* 29 */  { NACLi_SSE2, 1, 1, 0 },    /* movapd $Wpd, $Vpd */
872   /* 2a */  { NACLi_SSE2, 1, 1, 0 },    /* cvtpi2pd $Vpd $Qq */
873   /* 2b */  { NACLi_SSE2, 1, 1, 0 },    /* movntpd $Mdq, $Vpd */
874   /* 2c */  { NACLi_SSE2, 1, 1, 0 },    /* cvttpd2pi $Pq, $Wpd */
875   /* 2d */  { NACLi_SSE2, 1, 1, 0 },    /* cvtpd2pi $Pq, $Wpd */
876   /* 2e */  { NACLi_SSE2, 1, 1, 0 },    /* ucomisd $Vps, $Wps */
877   /* 2f */  { NACLi_SSE2, 1, 1, 0 },    /* comisd $Vpd, $Wsd */
878   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
879   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
880   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
881   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
882   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
883   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
884   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
885   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
886   /* 38 */  { NACLi_3BYTE, 1, 1, 0 },   /* SSE4 */
887   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
888   /* 3a */  { NACLi_3BYTE, 1, 2, 0 },   /* SSE4 */
889   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
890   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
891   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
892   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
893   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
894   /* 40 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovo $Gv, $Ev */
895   /* 41 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovno $Gv, $Ev */
896   /* 42 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovb $Gv, $Ev */
897   /* 43 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnb $Gv, $Ev */
898   /* 44 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovz $Gv, $Ev */
899   /* 45 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnz $Gv, $Ev */
900   /* 46 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovbe $Gv, $Ev */
901   /* 47 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnbe $Gv, $Ev */
902   /* 48 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovs $Gv, $Ev */
903   /* 49 */  { NACLi_CMOV, 1, 1, 0 },    /* cmovns $Gv, $Ev */
904   /* 4a */  { NACLi_CMOV, 1, 1, 0 },    /* cmovp $Gv, $Ev */
905   /* 4b */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnp $Gv, $Ev */
906   /* 4c */  { NACLi_CMOV, 1, 1, 0 },    /* cmovl $Gv, $Ev */
907   /* 4d */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnl $Gv, $Ev */
908   /* 4e */  { NACLi_CMOV, 1, 1, 0 },    /* cmovle $Gv, $Ev */
909   /* 4f */  { NACLi_CMOV, 1, 1, 0 },    /* cmovnle $Gv, $Ev */
910   /* 50 */  { NACLi_SSE2, 1, 1, 0 },    /* movmskpd $Gd, $VRpd */
911   /* 51 */  { NACLi_SSE2, 1, 1, 0 },    /* sqrtpd $Vpd, $Wpd */
912   /* 52 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
913   /* 53 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
914   /* 54 */  { NACLi_SSE2, 1, 1, 0 },    /* andpd $Vpd, $Wpd */
915   /* 55 */  { NACLi_SSE2, 1, 1, 0 },    /* andnpd $Vpd, $Wpd */
916   /* 56 */  { NACLi_SSE2, 1, 1, 0 },    /* orpd $Vpd, $Wpd */
917   /* 57 */  { NACLi_SSE2, 1, 1, 0 },    /* xorpd $Vpd, $Wpd */
918   /* 58 */  { NACLi_SSE2, 1, 1, 0 },    /* addpd $Vpd, $Wpd */
919   /* 59 */  { NACLi_SSE2, 1, 1, 0 },    /* mulpd $Vpd, $Wpd */
920   /* 5a */  { NACLi_SSE2, 1, 1, 0 },    /* cvtpd2ps $Vps, $Wpd */
921   /* 5b */  { NACLi_SSE2, 1, 1, 0 },    /* cvtps2dq $Vdq, $Wps */
922   /* 5c */  { NACLi_SSE2, 1, 1, 0 },    /* subpd $Vpd, $Wpd */
923   /* 5d */  { NACLi_SSE2, 1, 1, 0 },    /* minpd $Vpd, $Wpd */
924   /* 5e */  { NACLi_SSE2, 1, 1, 0 },    /* divpd $Vpd, $Wpd */
925   /* 5f */  { NACLi_SSE2, 1, 1, 0 },    /* maxpd $Vpd, $Wpd */
926   /* 60 */  { NACLi_SSE2, 1, 1, 0 },    /* punpcklbw $Vdq, $Wq */
927   /* 61 */  { NACLi_SSE2, 1, 1, 0 },    /* punpcklwd $Vdq, $Wq */
928   /* 62 */  { NACLi_SSE2, 1, 1, 0 },    /* punpckldq $Vdq, $Wq */
929   /* 63 */  { NACLi_SSE2, 1, 1, 0 },    /* packsswb $Vdq, $Wdq */
930   /* 64 */  { NACLi_SSE2, 1, 1, 0 },    /* pcmpgtb $Vdq, $Wdq */
931   /* 65 */  { NACLi_SSE2, 1, 1, 0 },    /* pcmpgtw $Vdq, $Wdq */
932   /* 66 */  { NACLi_SSE2, 1, 1, 0 },    /* pcmpgtd $Vdq, $Wdq */
933   /* 67 */  { NACLi_SSE2, 1, 1, 0 },    /* packuswb $Vdq, $Wdq */
934   /* 68 */  { NACLi_SSE2, 1, 1, 0 },    /* punpckhbw $Vdq, $Wq */
935   /* 69 */  { NACLi_SSE2, 1, 1, 0 },    /* punpckhwd $Vdq, $Wq */
936   /* 6a */  { NACLi_SSE2, 1, 1, 0 },    /* punpckhdq $Vdq, $Wq */
937   /* 6b */  { NACLi_SSE2, 1, 1, 0 },    /* packssdw $Vdq, $Wdq */
938   /* 6c */  { NACLi_SSE2, 1, 1, 0 },    /* punpcklqdq $Vdq, $Wq */
939   /* 6d */  { NACLi_SSE2, 1, 1, 0 },    /* punpckhqdq $Vdq, $Wq */
940   /* 6e */  { NACLi_SSE2, 1, 1, 0 },    /* movd $Vdq, $Edq */
941   /* 6f */  { NACLi_SSE2, 1, 1, 0 },    /* movdqa $Vdq, $Wdq */
942   /* 70 */  { NACLi_SSE2, 1, 2, 0 },    /* pshufd $Vdq, $Wdq, $Ib */
943   /* 71 */  { NACLi_OPINMRM, 1, 2, 12 },        /* $group12 $VRdq, $Ib */
944   /* 72 */  { NACLi_OPINMRM, 1, 2, 13 },        /* $group13 $VRdq, $Ib */
945   /* 73 */  { NACLi_OPINMRM, 1, 2, 14 },        /* $group14 $VRdq, $Ib */
946   /* 74 */  { NACLi_SSE2, 1, 1, 0 },    /* pcmpeqb $Vdq, $Wdq */
947   /* 75 */  { NACLi_SSE2, 1, 1, 0 },    /* pcmpeqw $Vdq, $Wdq */
948   /* 76 */  { NACLi_SSE2, 1, 1, 0 },    /* pcmpeqd $Vdq, $Wdq */
949   /* 77 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
950   /* 78 */  { NACLi_OPINMRM, 1, 2, 17 },        /* $group17 $Vdq, $Ib, $Ib */
951   /* 79 */  { NACLi_SSE4A, 1, 1, 0 },   /* extrq $Vdq, $VRq */
952   /* 7a */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
953   /* 7b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
954   /* 7c */  { NACLi_SSE3, 1, 1, 0 },    /* haddpd $Vpd, $Wpd */
955   /* 7d */  { NACLi_SSE3, 1, 1, 0 },    /* hsubpd $Vpd, $Wpd */
956   /* 7e */  { NACLi_SSE2, 1, 1, 0 },    /* movd $Ed, $Vd */
957   /* 7f */  { NACLi_SSE2, 1, 1, 0 },    /* movdqa $Wdq, $Vdq */
958   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
959   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
960   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
961   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
962   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
963   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
964   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
965   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
966   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
967   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
968   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
969   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
970   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
971   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
972   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
973   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
974   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
975   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
976   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
977   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
978   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
979   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
980   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
981   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
982   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
983   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
984   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
985   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
986   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
987   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
988   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
989   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
990   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
991   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
992   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
993   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
994   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
995   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
996   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
997   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
998   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
999   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1000   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1001   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1002   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1003   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1004   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1005   /* af */  { NACLi_386, 1, 1, 0 },     /* imul $Gv, $Ev */
1006   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1007   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1008   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1009   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1010   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1011   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1012   /* b6 */  { NACLi_386, 1, 1, 0 },     /* movzx $Gv, $Eb */
1013   /* b7 */  { NACLi_386, 1, 1, 0 },     /* movzx $Gv, $Ew */
1014   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1015   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1016   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1017   /* bb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1018   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1019   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1020   /* be */  { NACLi_386, 1, 1, 0 },     /* movsx $Gv, $Eb */
1021   /* bf */  { NACLi_386, 1, 1, 0 },     /* movsx $Gv, $Ew */
1022   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1023   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1024   /* c2 */  { NACLi_SSE2, 1, 2, 0 },    /* cmppd $V, $W, $I */
1025   /* c3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1026   /* c4 */  { NACLi_SSE2, 1, 2, 0 },    /* pinsrw $Vdq, $Ew, $Ib */
1027   /* c5 */  { NACLi_SSE2, 1, 2, 0 },    /* pextrw $Gd, $VRdq, $Ib */
1028   /* c6 */  { NACLi_SSE2, 1, 2, 0 },    /* shufpd $Vpd, $Wpd, $Ib */
1029   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1030   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1031   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1032   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1033   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1034   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1035   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1036   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1037   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1038   /* d0 */  { NACLi_SSE3, 1, 1, 0 },    /* addsubpd $Vpd, $Wpd */
1039   /* d1 */  { NACLi_SSE2, 1, 1, 0 },    /* psrlw $Vdq, $Wdq */
1040   /* d2 */  { NACLi_SSE2, 1, 1, 0 },    /* psrld $Vdq, $Wdq */
1041   /* d3 */  { NACLi_SSE2, 1, 1, 0 },    /* psrlq $Vdq, $Wdq */
1042   /* d4 */  { NACLi_SSE2, 1, 1, 0 },    /* paddq $Vdq, $Wdq */
1043   /* d5 */  { NACLi_SSE2, 1, 1, 0 },    /* pmullw $Vdq, $Wdq */
1044   /* d6 */  { NACLi_SSE2, 1, 1, 0 },    /* movq $Wq, $Vq */
1045   /* d7 */  { NACLi_SSE2, 1, 1, 0 },    /* pmovmskb $Gd, $VRdq */
1046   /* d8 */  { NACLi_SSE2, 1, 1, 0 },    /* psubusb $Vdq, $Wdq */
1047   /* d9 */  { NACLi_SSE2, 1, 1, 0 },    /* psubusw $Vdq, $Wdq */
1048   /* da */  { NACLi_SSE2, 1, 1, 0 },    /* pminub $Vdq, $Wdq */
1049   /* db */  { NACLi_SSE2, 1, 1, 0 },    /* pand $Vdq, $Wdq */
1050   /* dc */  { NACLi_SSE2, 1, 1, 0 },    /* paddusb $Vdq, $Wdq */
1051   /* dd */  { NACLi_SSE2, 1, 1, 0 },    /* paddusw $Vdq, $Wdq */
1052   /* de */  { NACLi_SSE2, 1, 1, 0 },    /* pmaxub $Vdq, $Wdq */
1053   /* df */  { NACLi_SSE2, 1, 1, 0 },    /* pandn $Vdq, $Wdq */
1054   /* e0 */  { NACLi_SSE2, 1, 1, 0 },    /* pavgb $Vdq, $Wdq */
1055   /* e1 */  { NACLi_SSE2, 1, 1, 0 },    /* psraw $Vdq, $Wdq */
1056   /* e2 */  { NACLi_SSE2, 1, 1, 0 },    /* psrad $Vdq, $Wdq */
1057   /* e3 */  { NACLi_SSE2, 1, 1, 0 },    /* pavgw $Vdq, $Wdq */
1058   /* e4 */  { NACLi_SSE2, 1, 1, 0 },    /* pmulhuw $Vdq, $Wdq */
1059   /* e5 */  { NACLi_SSE2, 1, 1, 0 },    /* pmulhw $Vdq, $Wdq */
1060   /* e6 */  { NACLi_SSE2, 1, 1, 0 },    /* cvttpd2dq $Vq, $Wpd */
1061   /* e7 */  { NACLi_SSE2, 1, 1, 0 },    /* movntdq $Mdq, $Vdq */
1062   /* e8 */  { NACLi_SSE2, 1, 1, 0 },    /* psubsb $Vdq, $Wdq */
1063   /* e9 */  { NACLi_SSE2, 1, 1, 0 },    /* psubsw $Vdq, $Wdq */
1064   /* ea */  { NACLi_SSE2, 1, 1, 0 },    /* pminsw $Vdq, $Wdq */
1065   /* eb */  { NACLi_SSE2, 1, 1, 0 },    /* por $Vdq, $Wdq */
1066   /* ec */  { NACLi_SSE2, 1, 1, 0 },    /* paddsb $Vdq, $Wdq */
1067   /* ed */  { NACLi_SSE2, 1, 1, 0 },    /* paddsw $Vdq, $Wdq */
1068   /* ee */  { NACLi_SSE2, 1, 1, 0 },    /* pmaxsw $Vdq, $Wdq */
1069   /* ef */  { NACLi_SSE2, 1, 1, 0 },    /* pxor $Vdq, $Wdq */
1070   /* f0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1071   /* f1 */  { NACLi_SSE2, 1, 1, 0 },    /* psllw $Vdq, $Wdq */
1072   /* f2 */  { NACLi_SSE2, 1, 1, 0 },    /* pslld $Vdq, $Wdq */
1073   /* f3 */  { NACLi_SSE2, 1, 1, 0 },    /* psllq $Vdq, $Wdq */
1074   /* f4 */  { NACLi_SSE2, 1, 1, 0 },    /* pmuludq $Vdq, $Wdq */
1075   /* f5 */  { NACLi_SSE2, 1, 1, 0 },    /* pmaddwd $Vdq, $Wdq */
1076   /* f6 */  { NACLi_SSE2, 1, 1, 0 },    /* psadbw $Vdq, $Wdq */
1077   /* f7 */  { NACLi_SSE2, 1, 1, 0 },    /* maskmovdqu $Vdq, $VRdq */
1078   /* f8 */  { NACLi_SSE2, 1, 1, 0 },    /* psubb $Vdq, $Wdq */
1079   /* f9 */  { NACLi_SSE2, 1, 1, 0 },    /* psubw $Vdq, $Wdq */
1080   /* fa */  { NACLi_SSE2, 1, 1, 0 },    /* psubd $Vdq, $Wdq */
1081   /* fb */  { NACLi_SSE2, 1, 1, 0 },    /* psubq $Vdq, $Wdq */
1082   /* fc */  { NACLi_SSE2, 1, 1, 0 },    /* paddb $Vdq, $Wdq */
1083   /* fd */  { NACLi_SSE2, 1, 1, 0 },    /* paddw $Vdq, $Wdq */
1084   /* fe */  { NACLi_SSE2, 1, 1, 0 },    /* paddd $Vdq, $Wdq */
1085   /* ff */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1086 };
1087
1088 static const struct OpInfo kDecodeF20FXXOp[NCDTABLESIZE] = {
1089   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1090   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1091   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1092   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1093   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1094   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1095   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1096   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1097   /* 08 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1098   /* 09 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1099   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1100   /* 0b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1101   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1102   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1103   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1104   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1105   /* 10 */  { NACLi_SSE2, 1, 1, 0 },    /* movsd $Vsd, $Wsd */
1106   /* 11 */  { NACLi_SSE2, 1, 1, 0 },    /* movsd $Wsd, $Vsd */
1107   /* 12 */  { NACLi_SSE3, 1, 1, 0 },    /* movddup $Vpd, $Wsd */
1108   /* 13 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1109   /* 14 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1110   /* 15 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1111   /* 16 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1112   /* 17 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1113   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1114   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1115   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1116   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1117   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1118   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1119   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1120   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1121   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1122   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1123   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1124   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1125   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1126   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1127   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1128   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1129   /* 28 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1130   /* 29 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1131   /* 2a */  { NACLi_SSE2, 1, 1, 0 },    /* cvtsi2sd $Vsd, $Ed */
1132   /* 2b */  { NACLi_SSE4A, 1, 1, 0 },   /* movntsd $Mq, $Vsd */
1133   /* 2c */  { NACLi_SSE2, 1, 1, 0 },    /* cvttsd2si $Gd, $Wsd */
1134   /* 2d */  { NACLi_SSE2, 1, 1, 0 },    /* cvtsd2si $Gd, $Wsd */
1135   /* 2e */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1136   /* 2f */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1137   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1138   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1139   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1140   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1141   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1142   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1143   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1144   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1145   /* 38 */  { NACLi_3BYTE, 0, 1, 0 },   /* SSE4 */
1146   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1147   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1148   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1149   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1150   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1151   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1152   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1153   /* 40 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1154   /* 41 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1155   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1156   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1157   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1158   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1159   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1160   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1161   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1162   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1163   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1164   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1165   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1166   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1167   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1168   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1169   /* 50 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1170   /* 51 */  { NACLi_SSE2, 1, 1, 0 },    /* sqrtsd $Vsd, $Wsd */
1171   /* 52 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1172   /* 53 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1173   /* 54 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1174   /* 55 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1175   /* 56 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1176   /* 57 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1177   /* 58 */  { NACLi_SSE2, 1, 1, 0 },    /* addsd $Vsd, $Wsd */
1178   /* 59 */  { NACLi_SSE2, 1, 1, 0 },    /* mulsd $Vsd, $Wsd */
1179   /* 5a */  { NACLi_SSE2, 1, 1, 0 },    /* cvtsd2ss $Vss, $Wsd */
1180   /* 5b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1181   /* 5c */  { NACLi_SSE2, 1, 1, 0 },    /* subsd $Vsd, $Wsd */
1182   /* 5d */  { NACLi_SSE2, 1, 1, 0 },    /* minsd $Vsd, $Wsd */
1183   /* 5e */  { NACLi_SSE2, 1, 1, 0 },    /* divsd $Vsd, $Wsd */
1184   /* 5f */  { NACLi_SSE2, 1, 1, 0 },    /* maxsd $Vsd, $Wsd */
1185   /* 60 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1186   /* 61 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1187   /* 62 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1188   /* 63 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1189   /* 64 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1190   /* 65 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1191   /* 66 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1192   /* 67 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1193   /* 68 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1194   /* 69 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1195   /* 6a */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1196   /* 6b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1197   /* 6c */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1198   /* 6d */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1199   /* 6e */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1200   /* 6f */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1201   /* 70 */  { NACLi_SSE2, 1, 2, 0 },    /* pshuflw $Vq, $Wq, $Ib */
1202   /* 71 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1203   /* 72 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1204   /* 73 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1205   /* 74 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1206   /* 75 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1207   /* 76 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1208   /* 77 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1209   /* 78 */  { NACLi_SSE4A, 1, 3, 0 },   /* insertq $Vdq, $VRq, $Ib, $Ib */
1210   /* 79 */  { NACLi_SSE4A, 1, 1, 0 },   /* insertq $Vdq, $VRdq */
1211   /* 7a */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1212   /* 7b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1213   /* 7c */  { NACLi_SSE3, 1, 1, 0 },    /* haddps $Vps, $Wps */
1214   /* 7d */  { NACLi_SSE3, 1, 1, 0 },    /* hsubps $Vps, $Wps */
1215   /* 7e */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1216   /* 7f */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1217   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1218   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1219   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1220   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1221   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1222   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1223   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1224   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1225   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1226   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1227   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1228   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1229   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1230   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1231   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1232   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1233   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1234   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1235   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1236   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1237   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1238   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1239   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1240   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1241   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1242   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1243   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1244   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1245   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1246   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1247   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1248   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1249   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1250   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1251   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1252   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1253   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1254   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1255   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1256   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1257   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1258   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1259   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1260   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1261   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1262   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1263   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1264   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1265   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1266   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1267   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1268   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1269   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1270   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1271   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1272   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1273   /* b8 */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1274   /* b9 */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1275   /* ba */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1276   /* bb */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1277   /* bc */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1278   /* bd */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1279   /* be */  { NACLi_INVALID, 1, 1, 0 }, /* reserved */
1280   /* bf */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1281   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1282   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1283   /* c2 */  { NACLi_SSE2, 1, 2, 0 },    /* cmpsd $V, $W, $I */
1284   /* c3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1285   /* c4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1286   /* c5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1287   /* c6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1288   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1289   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1290   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1291   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1292   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1293   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1294   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1295   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1296   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1297   /* d0 */  { NACLi_SSE3, 1, 1, 0 },    /* addsubps $Vps, $Wps */
1298   /* d1 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1299   /* d2 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1300   /* d3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1301   /* d4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1302   /* d5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1303   /* d6 */  { NACLi_SSE2, 1, 1, 0 },    /* movdq2q $Pq, $VRq */
1304   /* d7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1305   /* d8 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1306   /* d9 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1307   /* da */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1308   /* db */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1309   /* dc */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1310   /* dd */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1311   /* de */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1312   /* df */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1313   /* e0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1314   /* e1 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1315   /* e2 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1316   /* e3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1317   /* e4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1318   /* e5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1319   /* e6 */  { NACLi_SSE2, 1, 1, 0 },    /* cvtpd2dq $Vq, $Wpd */
1320   /* e7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1321   /* e8 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1322   /* e9 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1323   /* ea */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1324   /* eb */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1325   /* ec */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1326   /* ed */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1327   /* ee */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1328   /* ef */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1329   /* f0 */  { NACLi_SSE3, 1, 1, 0 },    /* lddqu $Vpd, $Mdq */
1330   /* f1 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1331   /* f2 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1332   /* f3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1333   /* f4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1334   /* f5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1335   /* f6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1336   /* f7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1337   /* f8 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1338   /* f9 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1339   /* fa */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1340   /* fb */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1341   /* fc */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1342   /* fd */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1343   /* fe */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1344   /* ff */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1345 };
1346
1347 static const struct OpInfo kDecodeF30FXXOp[NCDTABLESIZE] = {
1348   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1349   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1350   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1351   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1352   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1353   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1354   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1355   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1356   /* 08 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1357   /* 09 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1358   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1359   /* 0b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1360   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1361   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1362   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1363   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1364   /* 10 */  { NACLi_SSE, 1, 1, 0 },     /* movss $Vss, $Wss */
1365   /* 11 */  { NACLi_SSE, 1, 1, 0 },     /* movss $Wss, $Vss */
1366   /* 12 */  { NACLi_SSE3, 1, 1, 0 },    /* movsldup $Vps, $Wps */
1367   /* 13 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1368   /* 14 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1369   /* 15 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1370   /* 16 */  { NACLi_SSE3, 1, 1, 0 },    /* movshdup $Vps, $Wps */
1371   /* 17 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1372   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1373   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1374   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1375   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1376   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1377   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1378   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1379   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1380   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1381   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1382   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1383   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1384   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1385   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1386   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1387   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1388   /* 28 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1389   /* 29 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1390   /* 2a */  { NACLi_SSE, 1, 1, 0 },     /* cvtsi2ss $Vss, $Ed */
1391   /* 2b */  { NACLi_SSE4A, 1, 1, 0 },   /* movntss $Md, $Vss */
1392   /* 2c */  { NACLi_SSE, 1, 1, 0 },     /* cvttss2si $Gd, $Wss */
1393   /* 2d */  { NACLi_SSE, 1, 1, 0 },     /* cvtss2si $Gd, $Wss */
1394   /* 2e */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1395   /* 2f */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1396   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1397   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1398   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1399   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1400   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1401   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1402   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1403   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1404   /* 38 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1405   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1406   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1407   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1408   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1409   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1410   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1411   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1412   /* 40 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1413   /* 41 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1414   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1415   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1416   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1417   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1418   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1419   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1420   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1421   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1422   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1423   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1424   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1425   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1426   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1427   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1428   /* 50 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1429   /* 51 */  { NACLi_SSE, 1, 1, 0 },     /* sqrtss $Vss, $Wss */
1430   /* 52 */  { NACLi_SSE, 1, 1, 0 },     /* rsqrtss $Vss, $Wss */
1431   /* 53 */  { NACLi_SSE, 1, 1, 0 },     /* rcpss $Vss, $Wss */
1432   /* 54 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1433   /* 55 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1434   /* 56 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
1435   /* 57 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1436   /* 58 */  { NACLi_SSE, 1, 1, 0 },     /* addss $Vss, $Wss */
1437   /* 59 */  { NACLi_SSE, 1, 1, 0 },     /* mulss $Vss, $Wss */
1438   /* 5a */  { NACLi_SSE2, 1, 1, 0 },    /* cvtss2sd $Vsd, $Wss */
1439   /* 5b */  { NACLi_SSE2, 1, 1, 0 },    /* cvttps2dq $Vdq, $Wps */
1440   /* 5c */  { NACLi_SSE, 1, 1, 0 },     /* subss $Vss, $Wss */
1441   /* 5d */  { NACLi_SSE, 1, 1, 0 },     /* minss $Vss, $Wss */
1442   /* 5e */  { NACLi_SSE, 1, 1, 0 },     /* divss $Vss, $Wss */
1443   /* 5f */  { NACLi_SSE, 1, 1, 0 },     /* maxss $Vss, $Wss */
1444   /* 60 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1445   /* 61 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1446   /* 62 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1447   /* 63 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1448   /* 64 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1449   /* 65 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1450   /* 66 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1451   /* 67 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1452   /* 68 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1453   /* 69 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1454   /* 6a */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1455   /* 6b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1456   /* 6c */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1457   /* 6d */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1458   /* 6e */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1459   /* 6f */  { NACLi_SSE2, 1, 1, 0 },    /* movdqu $Vdq, $Wdq */
1460   /* 70 */  { NACLi_SSE2, 1, 2, 0 },    /* pshufhw $Vq, $Wq, $Ib */
1461   /* 71 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1462   /* 72 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1463   /* 73 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1464   /* 74 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1465   /* 75 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1466   /* 76 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
1467   /* 77 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1468   /* 78 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1469   /* 79 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1470   /* 7a */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1471   /* 7b */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1472   /* 7c */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1473   /* 7d */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1474   /* 7e */  { NACLi_SSE2, 1, 1, 0 },    /* movq $Vq, $Wq */
1475   /* 7f */  { NACLi_SSE2, 1, 1, 0 },    /* movdqu $Wdq, $Vdq */
1476   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1477   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1478   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1479   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1480   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1481   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1482   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1483   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1484   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1485   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1486   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1487   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1488   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1489   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1490   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1491   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1492   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1493   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1494   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1495   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1496   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1497   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1498   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1499   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1500   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1501   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1502   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1503   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1504   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1505   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1506   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1507   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1508   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1509   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1510   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1511   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1512   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1513   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1514   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1515   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1516   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1517   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1518   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1519   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1520   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1521   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1522   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1523   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1524   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1525   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1526   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1527   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1528   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1529   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1530   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1531   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1532   /* b8 */  { NACLi_POPCNT, 1, 1, 0 },  /* popcnt */
1533   /* b9 */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1534   /* ba */  { NACLi_INVALID, 0, 2, 0 }, /* reserved */
1535   /* bb */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1536   /* bc */  { NACLi_386, 1, 1, 0 },     /* tzcnt $Gv, $Ev */
1537   /* bd */  { NACLi_386, 1, 1, 0 },     /* lzcnt $Gv, $Ev */
1538   /* be */  { NACLi_INVALID, 1, 1, 0 }, /* reserved */
1539   /* bf */  { NACLi_INVALID, 0, 1, 0 }, /* reserved */
1540   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1541   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1542   /* c2 */  { NACLi_SSE, 1, 2, 0 },     /* cmpss $V, $W, $I */
1543   /* c3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1544   /* c4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1545   /* c5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1546   /* c6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1547   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1548   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1549   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1550   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1551   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1552   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1553   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1554   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1555   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1556   /* d0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1557   /* d1 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1558   /* d2 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1559   /* d3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1560   /* d4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1561   /* d5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1562   /* d6 */  { NACLi_SSE2, 1, 1, 0 },    /* movq2dq $Vdq, $PRq */
1563   /* d7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1564   /* d8 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1565   /* d9 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1566   /* da */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1567   /* db */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1568   /* dc */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1569   /* dd */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1570   /* de */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1571   /* df */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1572   /* e0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1573   /* e1 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1574   /* e2 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1575   /* e3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1576   /* e4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1577   /* e5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1578   /* e6 */  { NACLi_SSE2, 1, 1, 0 },    /* cvtdq2pd $Vpd, $Wq */
1579   /* e7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1580   /* e8 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1581   /* e9 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1582   /* ea */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1583   /* eb */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1584   /* ec */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1585   /* ed */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1586   /* ee */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1587   /* ef */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1588   /* f0 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1589   /* f1 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1590   /* f2 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1591   /* f3 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1592   /* f4 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1593   /* f5 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1594   /* f6 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1595   /* f7 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1596   /* f8 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1597   /* f9 */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1598   /* fa */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1599   /* fb */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1600   /* fc */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1601   /* fd */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1602   /* fe */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1603   /* ff */  { NACLi_INVALID, 0, 1, 0 }, /* invalid */
1604 };
1605
1606
1607 /* three byte opcode tables */
1608 static const struct OpInfo kDecode0F0FOp[NCDTABLESIZE] = {
1609   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1610   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1611   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1612   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1613   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1614   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1615   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1616   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1617   /* 08 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1618   /* 09 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1619   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1620   /* 0b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1621   /* 0c */  { NACLi_E3DNOW, 1, 1, 0 },  /* pi2fw $P, $Q */
1622   /* 0d */  { NACLi_3DNOW, 1, 1, 0 },   /* pi2fd $P, $Q */
1623   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1624   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1625   /* 10 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1626   /* 11 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1627   /* 12 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1628   /* 13 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1629   /* 14 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1630   /* 15 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1631   /* 16 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1632   /* 17 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1633   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1634   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1635   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1636   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1637   /* 1c */  { NACLi_E3DNOW, 1, 1, 0 },  /* pf2iw $P, $Q */
1638   /* 1d */  { NACLi_3DNOW, 1, 1, 0 },   /* pf2id $P, $Q */
1639   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1640   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1641   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1642   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1643   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1644   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1645   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1646   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1647   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1648   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1649   /* 28 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1650   /* 29 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1651   /* 2a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1652   /* 2b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1653   /* 2c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1654   /* 2d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1655   /* 2e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1656   /* 2f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1657   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1658   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1659   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1660   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1661   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1662   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1663   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1664   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1665   /* 38 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1666   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1667   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1668   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1669   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1670   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1671   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1672   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1673   /* 40 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1674   /* 41 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1675   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1676   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1677   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1678   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1679   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1680   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1681   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1682   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1683   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1684   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1685   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1686   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1687   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1688   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1689   /* 50 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1690   /* 51 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1691   /* 52 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1692   /* 53 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1693   /* 54 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1694   /* 55 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1695   /* 56 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1696   /* 57 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1697   /* 58 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1698   /* 59 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1699   /* 5a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1700   /* 5b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1701   /* 5c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1702   /* 5d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1703   /* 5e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1704   /* 5f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1705   /* 60 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1706   /* 61 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1707   /* 62 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1708   /* 63 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1709   /* 64 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1710   /* 65 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1711   /* 66 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1712   /* 67 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1713   /* 68 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1714   /* 69 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1715   /* 6a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1716   /* 6b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1717   /* 6c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1718   /* 6d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1719   /* 6e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1720   /* 6f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1721   /* 70 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1722   /* 71 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1723   /* 72 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1724   /* 73 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1725   /* 74 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1726   /* 75 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1727   /* 76 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1728   /* 77 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1729   /* 78 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1730   /* 79 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1731   /* 7a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1732   /* 7b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1733   /* 7c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1734   /* 7d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1735   /* 7e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1736   /* 7f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1737   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1738   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1739   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1740   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1741   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1742   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1743   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1744   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1745   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1746   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1747   /* 8a */  { NACLi_E3DNOW, 1, 1, 0 },  /* pfnacc $P, $Q */
1748   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1749   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1750   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1751   /* 8e */  { NACLi_E3DNOW, 1, 1, 0 },  /* pfpnacc $P, $Q */
1752   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1753   /* 90 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfcmpge $P, $Q */
1754   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1755   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1756   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1757   /* 94 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfmin $P, $Q */
1758   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1759   /* 96 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfrcp $P, $Q */
1760   /* 97 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfrsqrt $P, $Q */
1761   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1762   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1763   /* 9a */  { NACLi_3DNOW, 1, 1, 0 },   /* pfsub $P, $Q */
1764   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1765   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1766   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1767   /* 9e */  { NACLi_3DNOW, 1, 1, 0 },   /* pfadd $P, $Q */
1768   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1769   /* a0 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfcmpgt $P, $Q */
1770   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1771   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1772   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1773   /* a4 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfmax $P, $Q */
1774   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1775   /* a6 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfrcpit1 $P, $Q */
1776   /* a7 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfrsqit1 $P, $Q */
1777   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1778   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1779   /* aa */  { NACLi_3DNOW, 1, 1, 0 },   /* pfsubr $P, $Q */
1780   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1781   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1782   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1783   /* ae */  { NACLi_3DNOW, 1, 1, 0 },   /* pfacc $P, $Q */
1784   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1785   /* b0 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfcmpeq $P, $Q */
1786   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1787   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1788   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1789   /* b4 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfmul $P, $Q */
1790   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1791   /* b6 */  { NACLi_3DNOW, 1, 1, 0 },   /* pfrcpit2 $P, $Q */
1792   /* b7 */  { NACLi_3DNOW, 1, 1, 0 },   /* pmulhrw $P, $Q */
1793   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1794   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1795   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1796   /* bb */  { NACLi_E3DNOW, 1, 1, 0 },  /* pswapd $P, $Q */
1797   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1798   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1799   /* be */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1800   /* bf */  { NACLi_3DNOW, 1, 1, 0 },   /* pavgusb $P, $Q */
1801   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1802   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1803   /* c2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1804   /* c3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1805   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1806   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1807   /* c6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1808   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1809   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1810   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1811   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1812   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1813   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1814   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1815   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1816   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1817   /* d0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1818   /* d1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1819   /* d2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1820   /* d3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1821   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1822   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1823   /* d6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1824   /* d7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1825   /* d8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1826   /* d9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1827   /* da */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1828   /* db */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1829   /* dc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1830   /* dd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1831   /* de */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1832   /* df */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1833   /* e0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1834   /* e1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1835   /* e2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1836   /* e3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1837   /* e4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1838   /* e5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1839   /* e6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1840   /* e7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1841   /* e8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1842   /* e9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1843   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1844   /* eb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1845   /* ec */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1846   /* ed */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1847   /* ee */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1848   /* ef */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1849   /* f0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1850   /* f1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1851   /* f2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1852   /* f3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1853   /* f4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1854   /* f5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1855   /* f6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1856   /* f7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1857   /* f8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1858   /* f9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1859   /* fa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1860   /* fb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1861   /* fc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1862   /* fd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1863   /* fe */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1864   /* ff */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1865 };
1866
1867 static const struct OpInfo kDecode0F38Op[NCDTABLESIZE] = {
1868   /* 00 */  { NACLi_SSSE3, 1, 1, 0 },   /* pshufb $P, $Q */
1869   /* 01 */  { NACLi_SSSE3, 1, 1, 0 },   /* phaddw $P, $Q */
1870   /* 02 */  { NACLi_SSSE3, 1, 1, 0 },   /* phaddd $P, $Q */
1871   /* 03 */  { NACLi_SSSE3, 1, 1, 0 },   /* phaddsw $P, $Q */
1872   /* 04 */  { NACLi_SSSE3, 1, 1, 0 },   /* pmaddubsw $P, $Q */
1873   /* 05 */  { NACLi_SSSE3, 1, 1, 0 },   /* phsubw $P, $Q */
1874   /* 06 */  { NACLi_SSSE3, 1, 1, 0 },   /* phsubd $P, $Q */
1875   /* 07 */  { NACLi_SSSE3, 1, 1, 0 },   /* phsubsw $P, $Q */
1876   /* 08 */  { NACLi_SSSE3, 1, 1, 0 },   /* psignb $P, $Q */
1877   /* 09 */  { NACLi_SSSE3, 1, 1, 0 },   /* psignw $P, $Q */
1878   /* 0a */  { NACLi_SSSE3, 1, 1, 0 },   /* psignd $P, $Q */
1879   /* 0b */  { NACLi_SSSE3, 1, 1, 0 },   /* pmulhrsw $P, $Q */
1880   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1881   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1882   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1883   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1884   /* 10 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1885   /* 11 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1886   /* 12 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1887   /* 13 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1888   /* 14 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1889   /* 15 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1890   /* 16 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1891   /* 17 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1892   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1893   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1894   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1895   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1896   /* 1c */  { NACLi_SSSE3, 1, 1, 0 },   /* pabsb $P, $Q */
1897   /* 1d */  { NACLi_SSSE3, 1, 1, 0 },   /* pabsw $P, $Q */
1898   /* 1e */  { NACLi_SSSE3, 1, 1, 0 },   /* pabsd $P, $Q */
1899   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1900   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1901   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1902   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1903   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1904   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1905   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1906   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1907   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1908   /* 28 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1909   /* 29 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1910   /* 2a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1911   /* 2b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1912   /* 2c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1913   /* 2d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1914   /* 2e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1915   /* 2f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1916   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1917   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1918   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1919   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1920   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1921   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1922   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1923   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1924   /* 38 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1925   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1926   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1927   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1928   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1929   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1930   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1931   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1932   /* 40 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1933   /* 41 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1934   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1935   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1936   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1937   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1938   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1939   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1940   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1941   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1942   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1943   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1944   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1945   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1946   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1947   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1948   /* 50 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1949   /* 51 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1950   /* 52 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1951   /* 53 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1952   /* 54 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1953   /* 55 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1954   /* 56 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1955   /* 57 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1956   /* 58 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1957   /* 59 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1958   /* 5a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1959   /* 5b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1960   /* 5c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1961   /* 5d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1962   /* 5e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1963   /* 5f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1964   /* 60 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1965   /* 61 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1966   /* 62 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1967   /* 63 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1968   /* 64 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1969   /* 65 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1970   /* 66 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1971   /* 67 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1972   /* 68 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1973   /* 69 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1974   /* 6a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1975   /* 6b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1976   /* 6c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1977   /* 6d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1978   /* 6e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1979   /* 6f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1980   /* 70 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1981   /* 71 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1982   /* 72 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1983   /* 73 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1984   /* 74 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1985   /* 75 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1986   /* 76 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1987   /* 77 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1988   /* 78 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1989   /* 79 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1990   /* 7a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1991   /* 7b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1992   /* 7c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1993   /* 7d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1994   /* 7e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1995   /* 7f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1996   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1997   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1998   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
1999   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2000   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2001   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2002   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2003   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2004   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2005   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2006   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2007   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2008   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2009   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2010   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2011   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2012   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2013   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2014   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2015   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2016   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2017   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2018   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2019   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2020   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2021   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2022   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2023   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2024   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2025   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2026   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2027   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2028   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2029   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2030   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2031   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2032   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2033   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2034   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2035   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2036   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2037   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2038   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2039   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2040   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2041   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2042   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2043   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2044   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2045   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2046   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2047   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2048   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2049   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2050   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2051   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2052   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2053   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2054   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2055   /* bb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2056   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2057   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2058   /* be */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2059   /* bf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2060   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2061   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2062   /* c2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2063   /* c3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2064   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2065   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2066   /* c6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2067   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2068   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2069   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2070   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2071   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2072   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2073   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2074   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2075   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2076   /* d0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2077   /* d1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2078   /* d2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2079   /* d3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2080   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2081   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2082   /* d6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2083   /* d7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2084   /* d8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2085   /* d9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2086   /* da */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2087   /* db */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2088   /* dc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2089   /* dd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2090   /* de */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2091   /* df */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2092   /* e0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2093   /* e1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2094   /* e2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2095   /* e3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2096   /* e4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2097   /* e5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2098   /* e6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2099   /* e7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2100   /* e8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2101   /* e9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2102   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2103   /* eb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2104   /* ec */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2105   /* ed */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2106   /* ee */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2107   /* ef */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2108   /* f0 */  { NACLi_MOVBE, 1, 1, 0 },   /* MOVBE $G, $M */
2109   /* f1 */  { NACLi_MOVBE, 1, 1, 0 },   /* MOVBE $M, $G */
2110   /* f2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2111   /* f3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2112   /* f4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2113   /* f5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2114   /* f6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2115   /* f7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2116   /* f8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2117   /* f9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2118   /* fa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2119   /* fb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2120   /* fc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2121   /* fd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2122   /* fe */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2123   /* ff */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2124 };
2125
2126 static const struct OpInfo kDecode0F3AOp[NCDTABLESIZE] = {
2127   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2128   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2129   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2130   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2131   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2132   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2133   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2134   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2135   /* 08 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2136   /* 09 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2137   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2138   /* 0b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2139   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2140   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2141   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2142   /* 0f */  { NACLi_SSSE3, 1, 2, 0 },   /* palignr $P, $Q, $Ib */
2143   /* 10 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2144   /* 11 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2145   /* 12 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2146   /* 13 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2147   /* 14 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2148   /* 15 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2149   /* 16 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2150   /* 17 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2151   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2152   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2153   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2154   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2155   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2156   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2157   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2158   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2159   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2160   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2161   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2162   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2163   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2164   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2165   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2166   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2167   /* 28 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2168   /* 29 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2169   /* 2a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2170   /* 2b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2171   /* 2c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2172   /* 2d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2173   /* 2e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2174   /* 2f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2175   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2176   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2177   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2178   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2179   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2180   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2181   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2182   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2183   /* 38 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2184   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2185   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2186   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2187   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2188   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2189   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2190   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2191   /* 40 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2192   /* 41 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2193   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2194   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2195   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2196   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2197   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2198   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2199   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2200   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2201   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2202   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2203   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2204   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2205   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2206   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2207   /* 50 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2208   /* 51 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2209   /* 52 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2210   /* 53 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2211   /* 54 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2212   /* 55 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2213   /* 56 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2214   /* 57 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2215   /* 58 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2216   /* 59 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2217   /* 5a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2218   /* 5b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2219   /* 5c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2220   /* 5d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2221   /* 5e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2222   /* 5f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2223   /* 60 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2224   /* 61 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2225   /* 62 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2226   /* 63 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2227   /* 64 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2228   /* 65 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2229   /* 66 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2230   /* 67 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2231   /* 68 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2232   /* 69 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2233   /* 6a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2234   /* 6b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2235   /* 6c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2236   /* 6d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2237   /* 6e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2238   /* 6f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2239   /* 70 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2240   /* 71 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2241   /* 72 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2242   /* 73 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2243   /* 74 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2244   /* 75 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2245   /* 76 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2246   /* 77 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2247   /* 78 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2248   /* 79 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2249   /* 7a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2250   /* 7b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2251   /* 7c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2252   /* 7d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2253   /* 7e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2254   /* 7f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2255   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2256   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2257   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2258   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2259   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2260   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2261   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2262   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2263   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2264   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2265   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2266   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2267   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2268   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2269   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2270   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2271   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2272   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2273   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2274   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2275   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2276   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2277   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2278   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2279   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2280   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2281   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2282   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2283   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2284   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2285   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2286   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2287   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2288   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2289   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2290   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2291   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2292   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2293   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2294   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2295   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2296   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2297   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2298   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2299   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2300   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2301   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2302   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2303   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2304   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2305   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2306   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2307   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2308   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2309   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2310   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2311   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2312   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2313   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2314   /* bb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2315   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2316   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2317   /* be */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2318   /* bf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2319   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2320   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2321   /* c2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2322   /* c3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2323   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2324   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2325   /* c6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2326   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2327   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2328   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2329   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2330   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2331   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2332   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2333   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2334   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2335   /* d0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2336   /* d1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2337   /* d2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2338   /* d3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2339   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2340   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2341   /* d6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2342   /* d7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2343   /* d8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2344   /* d9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2345   /* da */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2346   /* db */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2347   /* dc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2348   /* dd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2349   /* de */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2350   /* df */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2351   /* e0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2352   /* e1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2353   /* e2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2354   /* e3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2355   /* e4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2356   /* e5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2357   /* e6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2358   /* e7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2359   /* e8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2360   /* e9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2361   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2362   /* eb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2363   /* ec */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2364   /* ed */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2365   /* ee */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2366   /* ef */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2367   /* f0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2368   /* f1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2369   /* f2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2370   /* f3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2371   /* f4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2372   /* f5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2373   /* f6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2374   /* f7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2375   /* f8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2376   /* f9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2377   /* fa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2378   /* fb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2379   /* fc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2380   /* fd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2381   /* fe */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2382   /* ff */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2383 };
2384
2385 static const struct OpInfo kDecode660F38Op[NCDTABLESIZE] = {
2386   /* 00 */  { NACLi_SSSE3, 1, 1, 0 },   /* pshufb $V, $W */
2387   /* 01 */  { NACLi_SSSE3, 1, 1, 0 },   /* phaddw $V, $W */
2388   /* 02 */  { NACLi_SSSE3, 1, 1, 0 },   /* phaddd $V, $W */
2389   /* 03 */  { NACLi_SSSE3, 1, 1, 0 },   /* phaddsw $V, $W */
2390   /* 04 */  { NACLi_SSSE3, 1, 1, 0 },   /* pmaddubsw $V, $W */
2391   /* 05 */  { NACLi_SSSE3, 1, 1, 0 },   /* phsubw $V, $W */
2392   /* 06 */  { NACLi_SSSE3, 1, 1, 0 },   /* phsubd $V, $W */
2393   /* 07 */  { NACLi_SSSE3, 1, 1, 0 },   /* phsubsw $V, $W */
2394   /* 08 */  { NACLi_SSSE3, 1, 1, 0 },   /* psignb $V, $W */
2395   /* 09 */  { NACLi_SSSE3, 1, 1, 0 },   /* psignw $V, $W */
2396   /* 0a */  { NACLi_SSSE3, 1, 1, 0 },   /* psignd $V, $W */
2397   /* 0b */  { NACLi_SSSE3, 1, 1, 0 },   /* pmulhrsw $V, $W */
2398   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2399   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2400   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2401   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2402   /* 10 */  { NACLi_SSE41, 1, 1, 0 },   /* pblendvb $V, $W */
2403   /* 11 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2404   /* 12 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2405   /* 13 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2406   /* 14 */  { NACLi_SSE41, 1, 1, 0 },   /* blendvps $V, $W */
2407   /* 15 */  { NACLi_SSE41, 1, 1, 0 },   /* blendvpd $V, $W */
2408   /* 16 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2409   /* 17 */  { NACLi_SSE41, 1, 1, 0 },   /* ptest $V, $W */
2410   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2411   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2412   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2413   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2414   /* 1c */  { NACLi_SSSE3, 1, 1, 0 },   /* pabsb $V, $W */
2415   /* 1d */  { NACLi_SSSE3, 1, 1, 0 },   /* pabsw $V, $W */
2416   /* 1e */  { NACLi_SSSE3, 1, 1, 0 },   /* pabsd $V, $W */
2417   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2418   /* 20 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovsxbw $V, $U/M */
2419   /* 21 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovsxbd $V, $U/M */
2420   /* 22 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovsxbq $V, $U/M */
2421   /* 23 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovsxwd $V, $U/M */
2422   /* 24 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovsxwq $V, $U/M */
2423   /* 25 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovsxdq $V, $U/M */
2424   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2425   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2426   /* 28 */  { NACLi_SSE41, 1, 1, 0 },   /* pmuldq $V, $W */
2427   /* 29 */  { NACLi_SSE41, 1, 1, 0 },   /* pcmpeqq $V, $W */
2428   /* 2a */  { NACLi_SSE41, 1, 1, 0 },   /* movntdqa $V, $W */
2429   /* 2b */  { NACLi_SSE41, 1, 1, 0 },   /* packusdw $V, $W */
2430   /* 2c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2431   /* 2d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2432   /* 2e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2433   /* 2f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2434   /* 30 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovzxbw $V, $U/M */
2435   /* 31 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovzxbd $V, $U/M */
2436   /* 32 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovzxbq $V, $U/M */
2437   /* 33 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovzxwd $V, $U/M */
2438   /* 34 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovzxwq $V, $U/M */
2439   /* 35 */  { NACLi_SSE41, 1, 1, 0 },   /* pmovzxdq $V, $U/M */
2440   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2441   /* 37 */  { NACLi_SSE42, 1, 1, 0 },   /* pcmpgtq $V, $U/M */
2442   /* 38 */  { NACLi_SSE41, 1, 1, 0 },   /* pminsb $V, $W */
2443   /* 39 */  { NACLi_SSE41, 1, 1, 0 },   /* pminsd $V, $W */
2444   /* 3a */  { NACLi_SSE41, 1, 1, 0 },   /* pminuw $V, $W */
2445   /* 3b */  { NACLi_SSE41, 1, 1, 0 },   /* pminud $V, $W */
2446   /* 3c */  { NACLi_SSE41, 1, 1, 0 },   /* pmaxsb $V, $W */
2447   /* 3d */  { NACLi_SSE41, 1, 1, 0 },   /* pmaxsd $V, $W */
2448   /* 3e */  { NACLi_SSE41, 1, 1, 0 },   /* pmaxuw $V, $W */
2449   /* 3f */  { NACLi_SSE41, 1, 1, 0 },   /* pmaxud $V, $W */
2450   /* 40 */  { NACLi_SSE41, 1, 1, 0 },   /* pmulld $V, $W */
2451   /* 41 */  { NACLi_SSE41, 1, 1, 0 },   /* phminposuw $V, $W */
2452   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2453   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2454   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2455   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2456   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2457   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2458   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2459   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2460   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2461   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2462   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2463   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2464   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2465   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2466   /* 50 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2467   /* 51 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2468   /* 52 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2469   /* 53 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2470   /* 54 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2471   /* 55 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2472   /* 56 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2473   /* 57 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2474   /* 58 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2475   /* 59 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2476   /* 5a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2477   /* 5b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2478   /* 5c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2479   /* 5d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2480   /* 5e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2481   /* 5f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2482   /* 60 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2483   /* 61 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2484   /* 62 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2485   /* 63 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2486   /* 64 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2487   /* 65 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2488   /* 66 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2489   /* 67 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2490   /* 68 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2491   /* 69 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2492   /* 6a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2493   /* 6b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2494   /* 6c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2495   /* 6d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2496   /* 6e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2497   /* 6f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2498   /* 70 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2499   /* 71 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2500   /* 72 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2501   /* 73 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2502   /* 74 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2503   /* 75 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2504   /* 76 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2505   /* 77 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2506   /* 78 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2507   /* 79 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2508   /* 7a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2509   /* 7b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2510   /* 7c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2511   /* 7d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2512   /* 7e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2513   /* 7f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2514   /* 80 */  { NACLi_INVALID, 1, 1, 0 }, /* NVEPT $G, $M */
2515   /* 81 */  { NACLi_INVALID, 1, 1, 0 }, /* NVVPID $G, $M */
2516   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2517   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2518   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2519   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2520   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2521   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2522   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2523   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2524   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2525   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2526   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2527   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2528   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2529   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2530   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2531   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2532   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2533   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2534   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2535   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2536   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2537   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2538   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2539   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2540   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2541   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2542   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2543   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2544   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2545   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2546   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2547   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2548   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2549   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2550   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2551   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2552   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2553   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2554   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2555   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2556   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2557   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2558   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2559   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2560   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2561   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2562   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2563   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2564   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2565   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2566   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2567   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2568   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2569   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2570   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2571   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2572   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2573   /* bb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2574   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2575   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2576   /* be */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2577   /* bf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2578   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2579   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2580   /* c2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2581   /* c3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2582   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2583   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2584   /* c6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2585   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2586   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2587   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2588   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2589   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2590   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2591   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2592   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2593   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2594   /* d0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2595   /* d1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2596   /* d2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2597   /* d3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2598   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2599   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2600   /* d6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2601   /* d7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2602   /* d8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2603   /* d9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2604   /* da */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2605   /* db */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2606   /* dc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2607   /* dd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2608   /* de */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2609   /* df */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2610   /* e0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2611   /* e1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2612   /* e2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2613   /* e3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2614   /* e4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2615   /* e5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2616   /* e6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2617   /* e7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2618   /* e8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2619   /* e9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2620   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2621   /* eb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2622   /* ec */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2623   /* ed */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2624   /* ee */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2625   /* ef */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2626   /* f0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2627   /* f1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2628   /* f2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2629   /* f3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2630   /* f4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2631   /* f5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2632   /* f6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2633   /* f7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2634   /* f8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2635   /* f9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2636   /* fa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2637   /* fb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2638   /* fc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2639   /* fd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2640   /* fe */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2641   /* ff */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2642 };
2643
2644 static const struct OpInfo kDecodeF20F38Op[NCDTABLESIZE] = {
2645   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2646   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2647   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2648   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2649   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2650   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2651   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2652   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2653   /* 08 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2654   /* 09 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2655   /* 0a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2656   /* 0b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2657   /* 0c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2658   /* 0d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2659   /* 0e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2660   /* 0f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2661   /* 10 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2662   /* 11 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2663   /* 12 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2664   /* 13 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2665   /* 14 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2666   /* 15 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2667   /* 16 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2668   /* 17 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2669   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2670   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2671   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2672   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2673   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2674   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2675   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2676   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2677   /* 20 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2678   /* 21 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2679   /* 22 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2680   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2681   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2682   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2683   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2684   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2685   /* 28 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2686   /* 29 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2687   /* 2a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2688   /* 2b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2689   /* 2c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2690   /* 2d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2691   /* 2e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2692   /* 2f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2693   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2694   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2695   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2696   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2697   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2698   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2699   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2700   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2701   /* 38 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2702   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2703   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2704   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2705   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2706   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2707   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2708   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2709   /* 40 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2710   /* 41 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2711   /* 42 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2712   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2713   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2714   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2715   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2716   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2717   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2718   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2719   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2720   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2721   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2722   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2723   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2724   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2725   /* 50 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2726   /* 51 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2727   /* 52 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2728   /* 53 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2729   /* 54 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2730   /* 55 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2731   /* 56 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2732   /* 57 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2733   /* 58 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2734   /* 59 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2735   /* 5a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2736   /* 5b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2737   /* 5c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2738   /* 5d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2739   /* 5e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2740   /* 5f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2741   /* 60 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2742   /* 61 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2743   /* 62 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2744   /* 63 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2745   /* 64 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2746   /* 65 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2747   /* 66 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2748   /* 67 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2749   /* 68 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2750   /* 69 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2751   /* 6a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2752   /* 6b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2753   /* 6c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2754   /* 6d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2755   /* 6e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2756   /* 6f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2757   /* 70 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2758   /* 71 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2759   /* 72 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2760   /* 73 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2761   /* 74 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2762   /* 75 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2763   /* 76 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2764   /* 77 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2765   /* 78 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2766   /* 79 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2767   /* 7a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2768   /* 7b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2769   /* 7c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2770   /* 7d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2771   /* 7e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2772   /* 7f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2773   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2774   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2775   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2776   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2777   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2778   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2779   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2780   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2781   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2782   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2783   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2784   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2785   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2786   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2787   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2788   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2789   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2790   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2791   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2792   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2793   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2794   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2795   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2796   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2797   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2798   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2799   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2800   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2801   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2802   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2803   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2804   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2805   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2806   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2807   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2808   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2809   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2810   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2811   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2812   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2813   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2814   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2815   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2816   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2817   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2818   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2819   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2820   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2821   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2822   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2823   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2824   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2825   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2826   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2827   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2828   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2829   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2830   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2831   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2832   /* bb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2833   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2834   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2835   /* be */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2836   /* bf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2837   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2838   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2839   /* c2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2840   /* c3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2841   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2842   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2843   /* c6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2844   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2845   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2846   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2847   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2848   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2849   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2850   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2851   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2852   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2853   /* d0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2854   /* d1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2855   /* d2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2856   /* d3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2857   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2858   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2859   /* d6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2860   /* d7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2861   /* d8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2862   /* d9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2863   /* da */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2864   /* db */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2865   /* dc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2866   /* dd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2867   /* de */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2868   /* df */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2869   /* e0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2870   /* e1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2871   /* e2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2872   /* e3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2873   /* e4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2874   /* e5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2875   /* e6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2876   /* e7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2877   /* e8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2878   /* e9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2879   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2880   /* eb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2881   /* ec */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2882   /* ed */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2883   /* ee */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2884   /* ef */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2885   /* f0 */  { NACLi_SSE42, 1, 1, 0 },   /* CRC32 $Gd, $Eb */
2886   /* f1 */  { NACLi_SSE42, 1, 1, 0 },   /* CRC32 $Gd, $Ev */
2887   /* f2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2888   /* f3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2889   /* f4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2890   /* f5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2891   /* f6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2892   /* f7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2893   /* f8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2894   /* f9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2895   /* fa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2896   /* fb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2897   /* fc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2898   /* fd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2899   /* fe */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2900   /* ff */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2901 };
2902
2903 static const struct OpInfo kDecode660F3AOp[NCDTABLESIZE] = {
2904   /* 00 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2905   /* 01 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2906   /* 02 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2907   /* 03 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2908   /* 04 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2909   /* 05 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2910   /* 06 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2911   /* 07 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2912   /* 08 */  { NACLi_SSE41, 1, 2, 0 },   /* roundps $V, $W, $Ib */
2913   /* 09 */  { NACLi_SSE41, 1, 2, 0 },   /* roundpd $V, $W, $Ib */
2914   /* 0a */  { NACLi_SSE41, 1, 2, 0 },   /* roundss $V, $W, $Ib */
2915   /* 0b */  { NACLi_SSE41, 1, 2, 0 },   /* roundsd $V, $W, $Ib */
2916   /* 0c */  { NACLi_SSE41, 1, 2, 0 },   /* blendps $V, $W, $Ib */
2917   /* 0d */  { NACLi_SSE41, 1, 2, 0 },   /* blendpd $V, $W, $Ib */
2918   /* 0e */  { NACLi_SSE41, 1, 2, 0 },   /* pblendw $V, $W, $Ib */
2919   /* 0f */  { NACLi_SSSE3, 1, 2, 0 },   /* palignr $V, $W, $Ib */
2920   /* 10 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2921   /* 11 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2922   /* 12 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2923   /* 13 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2924   /* 14 */  { NACLi_SSE41, 1, 2, 0 },   /* pextrb $R/M, $V, $Ib */
2925   /* 15 */  { NACLi_SSE41, 1, 2, 0 },   /* pextrw $R/M, $V, $Ib */
2926   /* 16 */  { NACLi_SSE41, 1, 2, 0 },   /* pextrd/q $E, $V, $Ib */
2927   /* 17 */  { NACLi_SSE41, 1, 2, 0 },   /* extractps $E, $V, $Ib */
2928   /* 18 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2929   /* 19 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2930   /* 1a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2931   /* 1b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2932   /* 1c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2933   /* 1d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2934   /* 1e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2935   /* 1f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2936   /* 20 */  { NACLi_SSE41, 1, 2, 0 },   /* pinsrb $V, $R/M, $Ib */
2937   /* 21 */  { NACLi_SSE41, 1, 2, 0 },   /* insertps $V, $U/M, $Ib */
2938   /* 22 */  { NACLi_SSE41, 1, 2, 0 },   /* pinsrd/q $V, $E, $Ib */
2939   /* 23 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2940   /* 24 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2941   /* 25 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2942   /* 26 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2943   /* 27 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2944   /* 28 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2945   /* 29 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2946   /* 2a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2947   /* 2b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2948   /* 2c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2949   /* 2d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2950   /* 2e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2951   /* 2f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2952   /* 30 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2953   /* 31 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2954   /* 32 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2955   /* 33 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2956   /* 34 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2957   /* 35 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2958   /* 36 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2959   /* 37 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2960   /* 38 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2961   /* 39 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2962   /* 3a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2963   /* 3b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2964   /* 3c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2965   /* 3d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2966   /* 3e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2967   /* 3f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2968   /* 40 */  { NACLi_SSE41, 1, 2, 0 },   /* dpps $V, $W, $Ib */
2969   /* 41 */  { NACLi_SSE41, 1, 2, 0 },   /* dppd $V, $W, $Ib */
2970   /* 42 */  { NACLi_SSE41, 1, 2, 0 },   /* mpsadbw $V, $W, $Ib */
2971   /* 43 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2972   /* 44 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2973   /* 45 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2974   /* 46 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2975   /* 47 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2976   /* 48 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2977   /* 49 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2978   /* 4a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2979   /* 4b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2980   /* 4c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2981   /* 4d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2982   /* 4e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2983   /* 4f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2984   /* 50 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2985   /* 51 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2986   /* 52 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2987   /* 53 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2988   /* 54 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2989   /* 55 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2990   /* 56 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2991   /* 57 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2992   /* 58 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2993   /* 59 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2994   /* 5a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2995   /* 5b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2996   /* 5c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2997   /* 5d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2998   /* 5e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
2999   /* 5f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3000   /* 60 */  { NACLi_SSE42, 1, 2, 0 },   /* pcmpestrm $V, $W, $Ib */
3001   /* 61 */  { NACLi_SSE42, 1, 2, 0 },   /* pcmpestri $V, $W, $Ib */
3002   /* 62 */  { NACLi_SSE42, 1, 2, 0 },   /* pcmpistrm $V, $W, $Ib */
3003   /* 63 */  { NACLi_SSE42, 1, 2, 0 },   /* pcmpistri $V, $W, $Ib */
3004   /* 64 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3005   /* 65 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3006   /* 66 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3007   /* 67 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3008   /* 68 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3009   /* 69 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3010   /* 6a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3011   /* 6b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3012   /* 6c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3013   /* 6d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3014   /* 6e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3015   /* 6f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3016   /* 70 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3017   /* 71 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3018   /* 72 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3019   /* 73 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3020   /* 74 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3021   /* 75 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3022   /* 76 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3023   /* 77 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3024   /* 78 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3025   /* 79 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3026   /* 7a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3027   /* 7b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3028   /* 7c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3029   /* 7d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3030   /* 7e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3031   /* 7f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3032   /* 80 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3033   /* 81 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3034   /* 82 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3035   /* 83 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3036   /* 84 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3037   /* 85 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3038   /* 86 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3039   /* 87 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3040   /* 88 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3041   /* 89 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3042   /* 8a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3043   /* 8b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3044   /* 8c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3045   /* 8d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3046   /* 8e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3047   /* 8f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3048   /* 90 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3049   /* 91 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3050   /* 92 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3051   /* 93 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3052   /* 94 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3053   /* 95 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3054   /* 96 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3055   /* 97 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3056   /* 98 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3057   /* 99 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3058   /* 9a */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3059   /* 9b */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3060   /* 9c */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3061   /* 9d */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3062   /* 9e */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3063   /* 9f */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3064   /* a0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3065   /* a1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3066   /* a2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3067   /* a3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3068   /* a4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3069   /* a5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3070   /* a6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3071   /* a7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3072   /* a8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3073   /* a9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3074   /* aa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3075   /* ab */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3076   /* ac */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3077   /* ad */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3078   /* ae */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3079   /* af */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3080   /* b0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3081   /* b1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3082   /* b2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3083   /* b3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3084   /* b4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3085   /* b5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3086   /* b6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3087   /* b7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3088   /* b8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3089   /* b9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3090   /* ba */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3091   /* bb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3092   /* bc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3093   /* bd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3094   /* be */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3095   /* bf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3096   /* c0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3097   /* c1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3098   /* c2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3099   /* c3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3100   /* c4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3101   /* c5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3102   /* c6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3103   /* c7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3104   /* c8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3105   /* c9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3106   /* ca */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3107   /* cb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3108   /* cc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3109   /* cd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3110   /* ce */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3111   /* cf */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3112   /* d0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3113   /* d1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3114   /* d2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3115   /* d3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3116   /* d4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3117   /* d5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3118   /* d6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3119   /* d7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3120   /* d8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3121   /* d9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3122   /* da */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3123   /* db */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3124   /* dc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3125   /* dd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3126   /* de */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3127   /* df */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3128   /* e0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3129   /* e1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3130   /* e2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3131   /* e3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3132   /* e4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3133   /* e5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3134   /* e6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3135   /* e7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3136   /* e8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3137   /* e9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3138   /* ea */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3139   /* eb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3140   /* ec */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3141   /* ed */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3142   /* ee */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3143   /* ef */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3144   /* f0 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3145   /* f1 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3146   /* f2 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3147   /* f3 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3148   /* f4 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3149   /* f5 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3150   /* f6 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3151   /* f7 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3152   /* f8 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3153   /* f9 */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3154   /* fa */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3155   /* fb */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3156   /* fc */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3157   /* fd */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3158   /* fe */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3159   /* ff */  { NACLi_UNDEFINED, 0, 1, 0 },       /* undefined */
3160 };
3161
3162
3163 /* x87 opcode tables*/
3164 static const struct OpInfo kDecode87D8[NCDTABLESIZE] = {
3165   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3166   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3167   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3168   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3169   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3170   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3171   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3172   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3173   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3174   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3175   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3176   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3177   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3178   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3179   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3180   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3181   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3182   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3183   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3184   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3185   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3186   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3187   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3188   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3189   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3190   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3191   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3192   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3193   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3194   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3195   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3196   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3197   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3198   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3199   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3200   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3201   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3202   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3203   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3204   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3205   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3206   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3207   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3208   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3209   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3210   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3211   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3212   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3213   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3214   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3215   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3216   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3217   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3218   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3219   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3220   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3221   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3222   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3223   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3224   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3225   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3226   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3227   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3228   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3229   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3230   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3231   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3232   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3233   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3234   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3235   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3236   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3237   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3238   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3239   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3240   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3241   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3242   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3243   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3244   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3245   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3246   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3247   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3248   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3249   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3250   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3251   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3252   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3253   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3254   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3255   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3256   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3257   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3258   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3259   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3260   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3261   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3262   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3263   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3264   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3265   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3266   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3267   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3268   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3269   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3270   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3271   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3272   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3273   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3274   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3275   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3276   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3277   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3278   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3279   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3280   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3281   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3282   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3283   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3284   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3285   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3286   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3287   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3288   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3289   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3290   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3291   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3292   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3293   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3294   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3295   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3296   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3297   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3298   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3299   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3300   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3301   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3302   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3303   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3304   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3305   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3306   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3307   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3308   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3309   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3310   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3311   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3312   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3313   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3314   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3315   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3316   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3317   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3318   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3319   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3320   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3321   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3322   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3323   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3324   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3325   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3326   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3327   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3328   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3329   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3330   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3331   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3332   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3333   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3334   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3335   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3336   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3337   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3338   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3339   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3340   /* af */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3341   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3342   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3343   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3344   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3345   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3346   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3347   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3348   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3349   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3350   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3351   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3352   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3353   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3354   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3355   /* be */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3356   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3357   /* c0 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3358   /* c1 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3359   /* c2 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3360   /* c3 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3361   /* c4 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3362   /* c5 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3363   /* c6 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3364   /* c7 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
3365   /* c8 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3366   /* c9 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3367   /* ca */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3368   /* cb */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3369   /* cc */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3370   /* cd */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3371   /* ce */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3372   /* cf */  { NACLi_X87, 1, 1, 0 },     /* fmul */
3373   /* d0 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3374   /* d1 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3375   /* d2 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3376   /* d3 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3377   /* d4 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3378   /* d5 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3379   /* d6 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3380   /* d7 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
3381   /* d8 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3382   /* d9 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3383   /* da */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3384   /* db */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3385   /* dc */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3386   /* dd */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3387   /* de */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3388   /* df */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
3389   /* e0 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3390   /* e1 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3391   /* e2 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3392   /* e3 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3393   /* e4 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3394   /* e5 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3395   /* e6 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3396   /* e7 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
3397   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3398   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3399   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3400   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3401   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3402   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3403   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3404   /* ef */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
3405   /* f0 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3406   /* f1 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3407   /* f2 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3408   /* f3 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3409   /* f4 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3410   /* f5 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3411   /* f6 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3412   /* f7 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
3413   /* f8 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3414   /* f9 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3415   /* fa */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3416   /* fb */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3417   /* fc */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3418   /* fd */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3419   /* fe */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3420   /* ff */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
3421 };
3422
3423 static const struct OpInfo kDecode87D9[NCDTABLESIZE] = {
3424   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3425   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3426   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3427   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3428   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3429   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3430   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3431   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3432   /* 08 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3433   /* 09 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3434   /* 0a */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3435   /* 0b */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3436   /* 0c */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3437   /* 0d */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3438   /* 0e */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3439   /* 0f */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3440   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3441   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3442   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3443   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3444   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3445   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3446   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3447   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3448   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3449   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3450   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3451   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3452   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3453   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3454   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3455   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3456   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3457   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3458   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3459   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3460   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3461   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3462   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3463   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3464   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3465   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3466   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3467   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3468   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3469   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3470   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3471   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3472   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3473   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3474   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3475   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3476   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3477   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3478   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3479   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3480   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3481   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3482   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3483   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3484   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3485   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3486   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3487   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3488   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3489   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3490   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3491   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3492   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3493   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3494   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3495   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3496   /* 48 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3497   /* 49 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3498   /* 4a */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3499   /* 4b */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3500   /* 4c */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3501   /* 4d */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3502   /* 4e */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3503   /* 4f */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3504   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3505   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3506   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3507   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3508   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3509   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3510   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3511   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3512   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3513   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3514   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3515   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3516   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3517   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3518   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3519   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3520   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3521   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3522   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3523   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3524   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3525   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3526   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3527   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3528   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3529   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3530   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3531   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3532   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3533   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3534   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3535   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3536   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3537   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3538   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3539   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3540   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3541   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3542   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3543   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3544   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3545   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3546   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3547   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3548   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3549   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3550   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3551   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3552   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3553   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3554   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3555   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3556   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3557   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3558   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3559   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3560   /* 88 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3561   /* 89 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3562   /* 8a */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3563   /* 8b */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3564   /* 8c */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3565   /* 8d */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3566   /* 8e */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3567   /* 8f */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3568   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3569   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3570   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3571   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3572   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3573   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3574   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3575   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* fst */
3576   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3577   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3578   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3579   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3580   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3581   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3582   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3583   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3584   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3585   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3586   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3587   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3588   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3589   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3590   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3591   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* fldenv */
3592   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3593   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3594   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3595   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3596   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3597   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3598   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3599   /* af */  { NACLi_X87, 1, 1, 0 },     /* fldcw */
3600   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3601   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3602   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3603   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3604   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3605   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3606   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3607   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fnstenv */
3608   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3609   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3610   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3611   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3612   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3613   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3614   /* be */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3615   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fnstcw */
3616   /* c0 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3617   /* c1 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3618   /* c2 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3619   /* c3 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3620   /* c4 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3621   /* c5 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3622   /* c6 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3623   /* c7 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3624   /* c8 */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3625   /* c9 */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3626   /* ca */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3627   /* cb */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3628   /* cc */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3629   /* cd */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3630   /* ce */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3631   /* cf */  { NACLi_X87, 1, 1, 0 },     /* fxch */
3632   /* d0 */  { NACLi_X87, 1, 1, 0 },     /* fnop */
3633   /* d1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3634   /* d2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3635   /* d3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3636   /* d4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3637   /* d5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3638   /* d6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3639   /* d7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3640   /* d8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3641   /* d9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3642   /* da */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3643   /* db */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3644   /* dc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3645   /* dd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3646   /* de */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3647   /* df */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3648   /* e0 */  { NACLi_X87, 1, 1, 0 },     /* fchs */
3649   /* e1 */  { NACLi_X87, 1, 1, 0 },     /* fabs */
3650   /* e2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3651   /* e3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3652   /* e4 */  { NACLi_X87, 1, 1, 0 },     /* ftst */
3653   /* e5 */  { NACLi_X87, 1, 1, 0 },     /* fxam */
3654   /* e6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3655   /* e7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3656   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fld1 */
3657   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fldl2t */
3658   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fldl2e */
3659   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fldpi */
3660   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fldlg2 */
3661   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fldln2 */
3662   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fldz */
3663   /* ef */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3664   /* f0 */  { NACLi_X87, 1, 1, 0 },     /* f2xm1 */
3665   /* f1 */  { NACLi_X87, 1, 1, 0 },     /* fyl2x */
3666   /* f2 */  { NACLi_X87, 1, 1, 0 },     /* fptan */
3667   /* f3 */  { NACLi_X87, 1, 1, 0 },     /* fpatan */
3668   /* f4 */  { NACLi_X87, 1, 1, 0 },     /* fxtract */
3669   /* f5 */  { NACLi_X87, 1, 1, 0 },     /* fprem1 */
3670   /* f6 */  { NACLi_X87, 1, 1, 0 },     /* fdecstp */
3671   /* f7 */  { NACLi_X87, 1, 1, 0 },     /* fincstp */
3672   /* f8 */  { NACLi_X87, 1, 1, 0 },     /* fprem */
3673   /* f9 */  { NACLi_X87, 1, 1, 0 },     /* fyl2xp1 */
3674   /* fa */  { NACLi_X87, 1, 1, 0 },     /* fsqrt */
3675   /* fb */  { NACLi_X87_FSINCOS, 1, 1, 0 },     /* fsincos */
3676   /* fc */  { NACLi_X87, 1, 1, 0 },     /* frndint */
3677   /* fd */  { NACLi_X87, 1, 1, 0 },     /* fscale */
3678   /* fe */  { NACLi_X87, 1, 1, 0 },     /* fsin */
3679   /* ff */  { NACLi_X87, 1, 1, 0 },     /* fcos */
3680 };
3681
3682 static const struct OpInfo kDecode87DA[NCDTABLESIZE] = {
3683   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3684   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3685   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3686   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3687   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3688   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3689   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3690   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3691   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3692   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3693   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3694   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3695   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3696   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3697   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3698   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3699   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3700   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3701   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3702   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3703   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3704   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3705   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3706   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3707   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3708   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3709   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3710   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3711   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3712   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3713   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3714   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3715   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3716   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3717   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3718   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3719   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3720   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3721   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3722   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3723   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3724   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3725   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3726   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3727   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3728   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3729   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3730   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3731   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3732   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3733   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3734   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3735   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3736   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3737   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3738   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3739   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3740   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3741   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3742   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3743   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3744   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3745   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3746   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3747   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3748   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3749   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3750   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3751   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3752   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3753   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3754   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3755   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3756   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3757   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3758   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3759   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3760   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3761   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3762   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3763   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3764   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3765   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3766   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3767   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3768   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3769   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3770   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3771   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3772   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3773   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3774   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3775   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3776   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3777   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3778   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3779   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3780   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3781   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3782   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3783   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3784   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3785   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3786   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3787   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3788   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3789   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3790   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3791   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3792   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3793   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3794   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3795   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3796   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3797   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3798   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3799   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3800   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3801   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3802   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3803   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3804   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3805   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3806   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3807   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3808   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3809   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3810   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3811   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3812   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3813   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3814   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3815   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3816   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3817   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3818   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
3819   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3820   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3821   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3822   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3823   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3824   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3825   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3826   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fimul */
3827   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3828   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3829   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3830   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3831   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3832   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3833   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3834   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
3835   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3836   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3837   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3838   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3839   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3840   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3841   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3842   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
3843   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3844   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3845   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3846   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3847   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3848   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3849   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3850   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
3851   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3852   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3853   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3854   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3855   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3856   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3857   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3858   /* af */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
3859   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3860   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3861   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3862   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3863   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3864   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3865   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3866   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
3867   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3868   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3869   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3870   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3871   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3872   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3873   /* be */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3874   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
3875   /* c0 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3876   /* c1 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3877   /* c2 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3878   /* c3 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3879   /* c4 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3880   /* c5 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3881   /* c6 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3882   /* c7 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovb */
3883   /* c8 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3884   /* c9 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3885   /* ca */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3886   /* cb */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3887   /* cc */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3888   /* cd */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3889   /* ce */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3890   /* cf */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmove */
3891   /* d0 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3892   /* d1 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3893   /* d2 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3894   /* d3 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3895   /* d4 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3896   /* d5 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3897   /* d6 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3898   /* d7 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovbe */
3899   /* d8 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3900   /* d9 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3901   /* da */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3902   /* db */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3903   /* dc */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3904   /* dd */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3905   /* de */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3906   /* df */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovu */
3907   /* e0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3908   /* e1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3909   /* e2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3910   /* e3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3911   /* e4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3912   /* e5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3913   /* e6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3914   /* e7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3915   /* e8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3916   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fucompp */
3917   /* ea */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3918   /* eb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3919   /* ec */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3920   /* ed */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3921   /* ee */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3922   /* ef */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3923   /* f0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3924   /* f1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3925   /* f2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3926   /* f3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3927   /* f4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3928   /* f5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3929   /* f6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3930   /* f7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3931   /* f8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3932   /* f9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3933   /* fa */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3934   /* fb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3935   /* fc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3936   /* fd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3937   /* fe */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3938   /* ff */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3939 };
3940
3941 static const struct OpInfo kDecode87DB[NCDTABLESIZE] = {
3942   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3943   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3944   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3945   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3946   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3947   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3948   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3949   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fild */
3950   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3951   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3952   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3953   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3954   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3955   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3956   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3957   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
3958   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3959   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3960   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3961   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3962   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3963   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3964   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3965   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* fist */
3966   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3967   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3968   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3969   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3970   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3971   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3972   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3973   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
3974   /* 20 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3975   /* 21 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3976   /* 22 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3977   /* 23 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3978   /* 24 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3979   /* 25 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3980   /* 26 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3981   /* 27 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3982   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3983   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fld */
3984   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fld */
3985   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fld */
3986   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fld */
3987   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fld */
3988   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fld */
3989   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fld */
3990   /* 30 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3991   /* 31 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3992   /* 32 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3993   /* 33 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3994   /* 34 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3995   /* 35 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3996   /* 36 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3997   /* 37 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
3998   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
3999   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4000   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4001   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4002   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4003   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4004   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4005   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4006   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4007   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4008   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4009   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4010   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4011   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4012   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4013   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4014   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4015   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4016   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4017   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4018   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4019   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4020   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4021   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4022   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4023   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4024   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4025   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4026   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4027   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4028   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4029   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4030   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4031   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4032   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4033   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4034   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4035   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4036   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4037   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4038   /* 60 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4039   /* 61 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4040   /* 62 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4041   /* 63 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4042   /* 64 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4043   /* 65 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4044   /* 66 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4045   /* 67 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4046   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4047   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4048   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fld */
4049   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fld */
4050   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fld */
4051   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fld */
4052   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fld */
4053   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fld */
4054   /* 70 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4055   /* 71 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4056   /* 72 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4057   /* 73 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4058   /* 74 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4059   /* 75 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4060   /* 76 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4061   /* 77 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4062   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4063   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4064   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4065   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4066   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4067   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4068   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4069   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4070   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4071   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4072   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4073   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4074   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4075   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4076   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4077   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4078   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4079   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4080   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4081   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4082   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4083   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4084   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4085   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4086   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4087   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4088   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4089   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4090   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4091   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4092   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4093   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4094   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4095   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4096   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4097   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4098   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4099   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4100   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4101   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
4102   /* a0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4103   /* a1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4104   /* a2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4105   /* a3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4106   /* a4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4107   /* a5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4108   /* a6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4109   /* a7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4110   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4111   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4112   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fld */
4113   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fld */
4114   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fld */
4115   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fld */
4116   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fld */
4117   /* af */  { NACLi_X87, 1, 1, 0 },     /* fld */
4118   /* b0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4119   /* b1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4120   /* b2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4121   /* b3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4122   /* b4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4123   /* b5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4124   /* b6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4125   /* b7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4126   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4127   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4128   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4129   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4130   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4131   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4132   /* be */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4133   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4134   /* c0 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4135   /* c1 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4136   /* c2 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4137   /* c3 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4138   /* c4 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4139   /* c5 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4140   /* c6 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4141   /* c7 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnb */
4142   /* c8 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4143   /* c9 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4144   /* ca */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4145   /* cb */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4146   /* cc */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4147   /* cd */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4148   /* ce */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4149   /* cf */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovne */
4150   /* d0 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4151   /* d1 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4152   /* d2 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4153   /* d3 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4154   /* d4 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4155   /* d5 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4156   /* d6 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4157   /* d7 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnbe */
4158   /* d8 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4159   /* d9 */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4160   /* da */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4161   /* db */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4162   /* dc */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4163   /* dd */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4164   /* de */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4165   /* df */  { NACLi_FCMOV, 1, 1, 0 },   /* fcmovnu */
4166   /* e0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4167   /* e1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4168   /* e2 */  { NACLi_X87, 1, 1, 0 },     /* fnclex */
4169   /* e3 */  { NACLi_X87, 1, 1, 0 },     /* fninit */
4170   /* e4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4171   /* e5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4172   /* e6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4173   /* e7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4174   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4175   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4176   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4177   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4178   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4179   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4180   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4181   /* ef */  { NACLi_X87, 1, 1, 0 },     /* fucomi */
4182   /* f0 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4183   /* f1 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4184   /* f2 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4185   /* f3 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4186   /* f4 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4187   /* f5 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4188   /* f6 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4189   /* f7 */  { NACLi_X87, 1, 1, 0 },     /* fcomi */
4190   /* f8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4191   /* f9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4192   /* fa */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4193   /* fb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4194   /* fc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4195   /* fd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4196   /* fe */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4197   /* ff */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4198 };
4199
4200 static const struct OpInfo kDecode87DC[NCDTABLESIZE] = {
4201   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4202   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4203   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4204   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4205   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4206   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4207   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4208   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4209   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4210   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4211   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4212   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4213   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4214   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4215   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4216   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4217   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4218   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4219   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4220   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4221   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4222   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4223   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4224   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4225   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4226   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4227   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4228   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4229   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4230   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4231   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4232   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4233   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4234   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4235   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4236   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4237   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4238   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4239   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4240   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4241   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4242   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4243   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4244   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4245   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4246   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4247   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4248   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4249   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4250   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4251   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4252   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4253   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4254   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4255   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4256   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4257   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4258   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4259   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4260   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4261   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4262   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4263   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4264   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4265   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4266   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4267   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4268   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4269   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4270   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4271   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4272   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4273   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4274   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4275   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4276   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4277   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4278   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4279   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4280   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4281   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4282   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4283   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4284   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4285   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4286   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4287   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4288   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4289   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4290   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4291   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4292   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4293   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4294   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4295   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4296   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4297   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4298   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4299   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4300   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4301   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4302   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4303   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4304   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4305   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4306   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4307   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4308   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4309   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4310   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4311   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4312   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4313   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4314   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4315   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4316   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4317   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4318   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4319   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4320   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4321   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4322   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4323   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4324   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4325   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4326   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4327   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4328   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4329   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4330   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4331   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4332   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4333   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4334   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4335   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4336   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4337   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4338   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4339   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4340   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4341   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4342   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4343   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4344   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4345   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4346   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4347   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4348   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4349   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4350   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4351   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4352   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* fcom */
4353   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4354   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4355   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4356   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4357   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4358   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4359   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4360   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* fcomp */
4361   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4362   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4363   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4364   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4365   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4366   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4367   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4368   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4369   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4370   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4371   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4372   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4373   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4374   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4375   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4376   /* af */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4377   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4378   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4379   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4380   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4381   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4382   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4383   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4384   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4385   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4386   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4387   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4388   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4389   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4390   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4391   /* be */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4392   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4393   /* c0 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4394   /* c1 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4395   /* c2 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4396   /* c3 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4397   /* c4 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4398   /* c5 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4399   /* c6 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4400   /* c7 */  { NACLi_X87, 1, 1, 0 },     /* fadd */
4401   /* c8 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4402   /* c9 */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4403   /* ca */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4404   /* cb */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4405   /* cc */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4406   /* cd */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4407   /* ce */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4408   /* cf */  { NACLi_X87, 1, 1, 0 },     /* fmul */
4409   /* d0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4410   /* d1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4411   /* d2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4412   /* d3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4413   /* d4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4414   /* d5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4415   /* d6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4416   /* d7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4417   /* d8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4418   /* d9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4419   /* da */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4420   /* db */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4421   /* dc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4422   /* dd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4423   /* de */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4424   /* df */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4425   /* e0 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4426   /* e1 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4427   /* e2 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4428   /* e3 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4429   /* e4 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4430   /* e5 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4431   /* e6 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4432   /* e7 */  { NACLi_X87, 1, 1, 0 },     /* fsubr */
4433   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4434   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4435   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4436   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4437   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4438   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4439   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4440   /* ef */  { NACLi_X87, 1, 1, 0 },     /* fsub */
4441   /* f0 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4442   /* f1 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4443   /* f2 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4444   /* f3 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4445   /* f4 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4446   /* f5 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4447   /* f6 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4448   /* f7 */  { NACLi_X87, 1, 1, 0 },     /* fdivr */
4449   /* f8 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4450   /* f9 */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4451   /* fa */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4452   /* fb */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4453   /* fc */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4454   /* fd */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4455   /* fe */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4456   /* ff */  { NACLi_X87, 1, 1, 0 },     /* fdiv */
4457 };
4458
4459 static const struct OpInfo kDecode87DD[NCDTABLESIZE] = {
4460   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4461   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4462   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4463   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4464   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4465   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4466   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4467   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4468   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4469   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4470   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4471   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4472   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4473   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4474   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4475   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4476   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4477   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4478   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4479   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4480   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4481   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4482   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4483   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4484   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4485   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4486   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4487   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4488   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4489   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4490   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4491   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4492   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4493   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4494   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4495   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4496   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4497   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4498   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4499   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4500   /* 28 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4501   /* 29 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4502   /* 2a */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4503   /* 2b */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4504   /* 2c */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4505   /* 2d */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4506   /* 2e */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4507   /* 2f */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4508   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4509   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4510   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4511   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4512   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4513   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4514   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4515   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4516   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4517   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4518   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4519   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4520   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4521   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4522   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4523   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4524   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4525   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4526   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4527   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4528   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4529   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4530   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4531   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4532   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4533   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4534   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4535   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4536   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4537   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4538   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4539   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4540   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4541   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4542   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4543   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4544   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4545   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4546   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4547   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4548   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4549   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4550   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4551   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4552   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4553   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4554   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4555   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4556   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4557   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4558   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4559   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4560   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4561   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4562   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4563   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4564   /* 68 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4565   /* 69 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4566   /* 6a */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4567   /* 6b */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4568   /* 6c */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4569   /* 6d */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4570   /* 6e */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4571   /* 6f */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4572   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4573   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4574   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4575   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4576   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4577   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4578   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4579   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4580   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4581   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4582   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4583   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4584   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4585   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4586   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4587   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4588   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4589   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4590   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4591   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4592   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4593   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4594   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4595   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fld */
4596   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4597   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4598   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4599   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4600   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4601   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4602   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4603   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4604   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4605   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4606   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4607   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4608   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4609   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4610   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4611   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4612   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4613   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4614   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4615   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4616   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4617   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4618   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4619   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4620   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4621   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4622   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4623   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4624   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4625   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4626   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4627   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* frstor */
4628   /* a8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4629   /* a9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4630   /* aa */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4631   /* ab */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4632   /* ac */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4633   /* ad */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4634   /* ae */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4635   /* af */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4636   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4637   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4638   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4639   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4640   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4641   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4642   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4643   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fnsave */
4644   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4645   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4646   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4647   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4648   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4649   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4650   /* be */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4651   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
4652   /* c0 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4653   /* c1 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4654   /* c2 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4655   /* c3 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4656   /* c4 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4657   /* c5 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4658   /* c6 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4659   /* c7 */  { NACLi_X87, 1, 1, 0 },     /* ffree */
4660   /* c8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4661   /* c9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4662   /* ca */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4663   /* cb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4664   /* cc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4665   /* cd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4666   /* ce */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4667   /* cf */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4668   /* d0 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4669   /* d1 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4670   /* d2 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4671   /* d3 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4672   /* d4 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4673   /* d5 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4674   /* d6 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4675   /* d7 */  { NACLi_X87, 1, 1, 0 },     /* fst */
4676   /* d8 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4677   /* d9 */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4678   /* da */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4679   /* db */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4680   /* dc */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4681   /* dd */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4682   /* de */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4683   /* df */  { NACLi_X87, 1, 1, 0 },     /* fstp */
4684   /* e0 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4685   /* e1 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4686   /* e2 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4687   /* e3 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4688   /* e4 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4689   /* e5 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4690   /* e6 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4691   /* e7 */  { NACLi_X87, 1, 1, 0 },     /* fucom */
4692   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4693   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4694   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4695   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4696   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4697   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4698   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4699   /* ef */  { NACLi_X87, 1, 1, 0 },     /* fucomp */
4700   /* f0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4701   /* f1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4702   /* f2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4703   /* f3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4704   /* f4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4705   /* f5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4706   /* f6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4707   /* f7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4708   /* f8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4709   /* f9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4710   /* fa */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4711   /* fb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4712   /* fc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4713   /* fd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4714   /* fe */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4715   /* ff */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4716 };
4717
4718 static const struct OpInfo kDecode87DE[NCDTABLESIZE] = {
4719   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4720   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4721   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4722   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4723   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4724   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4725   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4726   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4727   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4728   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4729   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4730   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4731   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4732   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4733   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4734   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4735   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4736   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4737   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4738   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4739   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4740   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4741   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4742   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4743   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4744   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4745   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4746   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4747   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4748   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4749   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4750   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4751   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4752   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4753   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4754   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4755   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4756   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4757   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4758   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4759   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4760   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4761   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4762   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4763   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4764   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4765   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4766   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4767   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4768   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4769   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4770   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4771   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4772   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4773   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4774   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4775   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4776   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4777   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4778   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4779   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4780   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4781   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4782   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4783   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4784   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4785   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4786   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4787   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4788   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4789   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4790   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4791   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4792   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4793   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4794   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4795   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4796   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4797   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4798   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4799   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4800   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4801   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4802   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4803   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4804   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4805   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4806   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4807   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4808   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4809   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4810   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4811   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4812   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4813   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4814   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4815   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4816   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4817   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4818   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4819   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4820   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4821   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4822   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4823   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4824   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4825   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4826   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4827   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4828   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4829   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4830   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4831   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4832   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4833   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4834   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4835   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4836   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4837   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4838   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4839   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4840   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4841   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4842   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4843   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4844   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4845   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4846   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4847   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4848   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4849   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4850   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4851   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4852   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4853   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4854   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fiadd */
4855   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4856   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4857   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4858   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4859   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4860   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4861   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4862   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fimul */
4863   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4864   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4865   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4866   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4867   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4868   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4869   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4870   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* ficom */
4871   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4872   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4873   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4874   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4875   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4876   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4877   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4878   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* ficomp */
4879   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4880   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4881   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4882   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4883   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4884   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4885   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4886   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* fisub */
4887   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4888   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4889   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4890   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4891   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4892   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4893   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4894   /* af */  { NACLi_X87, 1, 1, 0 },     /* fisubr */
4895   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4896   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4897   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4898   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4899   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4900   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4901   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4902   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fidiv */
4903   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4904   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4905   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4906   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4907   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4908   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4909   /* be */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4910   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fidivr */
4911   /* c0 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4912   /* c1 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4913   /* c2 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4914   /* c3 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4915   /* c4 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4916   /* c5 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4917   /* c6 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4918   /* c7 */  { NACLi_X87, 1, 1, 0 },     /* faddp */
4919   /* c8 */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4920   /* c9 */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4921   /* ca */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4922   /* cb */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4923   /* cc */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4924   /* cd */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4925   /* ce */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4926   /* cf */  { NACLi_X87, 1, 1, 0 },     /* fmulp */
4927   /* d0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4928   /* d1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4929   /* d2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4930   /* d3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4931   /* d4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4932   /* d5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4933   /* d6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4934   /* d7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4935   /* d8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4936   /* d9 */  { NACLi_X87, 1, 1, 0 },     /* fcompp */
4937   /* da */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4938   /* db */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4939   /* dc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4940   /* dd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4941   /* de */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4942   /* df */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
4943   /* e0 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4944   /* e1 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4945   /* e2 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4946   /* e3 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4947   /* e4 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4948   /* e5 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4949   /* e6 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4950   /* e7 */  { NACLi_X87, 1, 1, 0 },     /* fsubrp */
4951   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4952   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4953   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4954   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4955   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4956   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4957   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4958   /* ef */  { NACLi_X87, 1, 1, 0 },     /* fsubp */
4959   /* f0 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4960   /* f1 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4961   /* f2 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4962   /* f3 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4963   /* f4 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4964   /* f5 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4965   /* f6 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4966   /* f7 */  { NACLi_X87, 1, 1, 0 },     /* fdivrp */
4967   /* f8 */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4968   /* f9 */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4969   /* fa */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4970   /* fb */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4971   /* fc */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4972   /* fd */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4973   /* fe */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4974   /* ff */  { NACLi_X87, 1, 1, 0 },     /* fdivp */
4975 };
4976
4977 static const struct OpInfo kDecode87DF[NCDTABLESIZE] = {
4978   /* 00 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4979   /* 01 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4980   /* 02 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4981   /* 03 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4982   /* 04 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4983   /* 05 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4984   /* 06 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4985   /* 07 */  { NACLi_X87, 1, 1, 0 },     /* fild */
4986   /* 08 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4987   /* 09 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4988   /* 0a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4989   /* 0b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4990   /* 0c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4991   /* 0d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4992   /* 0e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4993   /* 0f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
4994   /* 10 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4995   /* 11 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4996   /* 12 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4997   /* 13 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4998   /* 14 */  { NACLi_X87, 1, 1, 0 },     /* fist */
4999   /* 15 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5000   /* 16 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5001   /* 17 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5002   /* 18 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5003   /* 19 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5004   /* 1a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5005   /* 1b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5006   /* 1c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5007   /* 1d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5008   /* 1e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5009   /* 1f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5010   /* 20 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5011   /* 21 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5012   /* 22 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5013   /* 23 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5014   /* 24 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5015   /* 25 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5016   /* 26 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5017   /* 27 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5018   /* 28 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5019   /* 29 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5020   /* 2a */  { NACLi_X87, 1, 1, 0 },     /* fild */
5021   /* 2b */  { NACLi_X87, 1, 1, 0 },     /* fild */
5022   /* 2c */  { NACLi_X87, 1, 1, 0 },     /* fild */
5023   /* 2d */  { NACLi_X87, 1, 1, 0 },     /* fild */
5024   /* 2e */  { NACLi_X87, 1, 1, 0 },     /* fild */
5025   /* 2f */  { NACLi_X87, 1, 1, 0 },     /* fild */
5026   /* 30 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5027   /* 31 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5028   /* 32 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5029   /* 33 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5030   /* 34 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5031   /* 35 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5032   /* 36 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5033   /* 37 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5034   /* 38 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5035   /* 39 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5036   /* 3a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5037   /* 3b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5038   /* 3c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5039   /* 3d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5040   /* 3e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5041   /* 3f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5042   /* 40 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5043   /* 41 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5044   /* 42 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5045   /* 43 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5046   /* 44 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5047   /* 45 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5048   /* 46 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5049   /* 47 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5050   /* 48 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5051   /* 49 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5052   /* 4a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5053   /* 4b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5054   /* 4c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5055   /* 4d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5056   /* 4e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5057   /* 4f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5058   /* 50 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5059   /* 51 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5060   /* 52 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5061   /* 53 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5062   /* 54 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5063   /* 55 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5064   /* 56 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5065   /* 57 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5066   /* 58 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5067   /* 59 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5068   /* 5a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5069   /* 5b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5070   /* 5c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5071   /* 5d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5072   /* 5e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5073   /* 5f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5074   /* 60 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5075   /* 61 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5076   /* 62 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5077   /* 63 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5078   /* 64 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5079   /* 65 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5080   /* 66 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5081   /* 67 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5082   /* 68 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5083   /* 69 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5084   /* 6a */  { NACLi_X87, 1, 1, 0 },     /* fild */
5085   /* 6b */  { NACLi_X87, 1, 1, 0 },     /* fild */
5086   /* 6c */  { NACLi_X87, 1, 1, 0 },     /* fild */
5087   /* 6d */  { NACLi_X87, 1, 1, 0 },     /* fild */
5088   /* 6e */  { NACLi_X87, 1, 1, 0 },     /* fild */
5089   /* 6f */  { NACLi_X87, 1, 1, 0 },     /* fild */
5090   /* 70 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5091   /* 71 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5092   /* 72 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5093   /* 73 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5094   /* 74 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5095   /* 75 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5096   /* 76 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5097   /* 77 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5098   /* 78 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5099   /* 79 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5100   /* 7a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5101   /* 7b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5102   /* 7c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5103   /* 7d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5104   /* 7e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5105   /* 7f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5106   /* 80 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5107   /* 81 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5108   /* 82 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5109   /* 83 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5110   /* 84 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5111   /* 85 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5112   /* 86 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5113   /* 87 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5114   /* 88 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5115   /* 89 */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5116   /* 8a */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5117   /* 8b */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5118   /* 8c */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5119   /* 8d */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5120   /* 8e */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5121   /* 8f */  { NACLi_X87, 1, 1, 0 },     /* fisttp */
5122   /* 90 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5123   /* 91 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5124   /* 92 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5125   /* 93 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5126   /* 94 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5127   /* 95 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5128   /* 96 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5129   /* 97 */  { NACLi_X87, 1, 1, 0 },     /* fist */
5130   /* 98 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5131   /* 99 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5132   /* 9a */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5133   /* 9b */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5134   /* 9c */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5135   /* 9d */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5136   /* 9e */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5137   /* 9f */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5138   /* a0 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5139   /* a1 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5140   /* a2 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5141   /* a3 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5142   /* a4 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5143   /* a5 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5144   /* a6 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5145   /* a7 */  { NACLi_X87, 1, 1, 0 },     /* fbld */
5146   /* a8 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5147   /* a9 */  { NACLi_X87, 1, 1, 0 },     /* fild */
5148   /* aa */  { NACLi_X87, 1, 1, 0 },     /* fild */
5149   /* ab */  { NACLi_X87, 1, 1, 0 },     /* fild */
5150   /* ac */  { NACLi_X87, 1, 1, 0 },     /* fild */
5151   /* ad */  { NACLi_X87, 1, 1, 0 },     /* fild */
5152   /* ae */  { NACLi_X87, 1, 1, 0 },     /* fild */
5153   /* af */  { NACLi_X87, 1, 1, 0 },     /* fild */
5154   /* b0 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5155   /* b1 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5156   /* b2 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5157   /* b3 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5158   /* b4 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5159   /* b5 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5160   /* b6 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5161   /* b7 */  { NACLi_X87, 1, 1, 0 },     /* fbstp */
5162   /* b8 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5163   /* b9 */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5164   /* ba */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5165   /* bb */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5166   /* bc */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5167   /* bd */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5168   /* be */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5169   /* bf */  { NACLi_X87, 1, 1, 0 },     /* fistp */
5170   /* c0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5171   /* c1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5172   /* c2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5173   /* c3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5174   /* c4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5175   /* c5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5176   /* c6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5177   /* c7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5178   /* c8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5179   /* c9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5180   /* ca */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5181   /* cb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5182   /* cc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5183   /* cd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5184   /* ce */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5185   /* cf */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5186   /* d0 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5187   /* d1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5188   /* d2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5189   /* d3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5190   /* d4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5191   /* d5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5192   /* d6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5193   /* d7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5194   /* d8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5195   /* d9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5196   /* da */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5197   /* db */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5198   /* dc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5199   /* dd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5200   /* de */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5201   /* df */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5202   /* e0 */  { NACLi_X87, 1, 1, 0 },     /* fnstsw */
5203   /* e1 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5204   /* e2 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5205   /* e3 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5206   /* e4 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5207   /* e5 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5208   /* e6 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5209   /* e7 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5210   /* e8 */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5211   /* e9 */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5212   /* ea */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5213   /* eb */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5214   /* ec */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5215   /* ed */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5216   /* ee */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5217   /* ef */  { NACLi_X87, 1, 1, 0 },     /* fucomip */
5218   /* f0 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5219   /* f1 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5220   /* f2 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5221   /* f3 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5222   /* f4 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5223   /* f5 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5224   /* f6 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5225   /* f7 */  { NACLi_X87, 1, 1, 0 },     /* fcomip */
5226   /* f8 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5227   /* f9 */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5228   /* fa */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5229   /* fb */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5230   /* fc */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5231   /* fd */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5232   /* fe */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5233   /* ff */  { NACLi_INVALID, 1, 1, 0 }, /* invalid */
5234 };
5235
5236 static const uint32_t kPrefixTable[NCDTABLESIZE] = {
5237   /* 0x00-0x0f */
5238   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5239   /* 0x10-0x1f */
5240   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5241   /* 0x20-0x2f */
5242   0, 0, 0, 0, 0, 0, kPrefixSEGES, 0, 0, 0, 0, 0, 0, 0, kPrefixSEGCS, 0, 
5243   /* 0x30-0x3f */
5244   0, 0, 0, 0, 0, 0, kPrefixSEGSS, 0, 0, 0, 0, 0, 0, 0, kPrefixSEGDS, 0, 
5245   /* 0x40-0x4f */
5246   kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, kPrefixREX, 
5247   /* 0x50-0x5f */
5248   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5249   /* 0x60-0x6f */
5250   0, 0, 0, 0, kPrefixSEGFS, kPrefixSEGGS, kPrefixDATA16, kPrefixADDR16, 0, 0, 0, 0, 0, 0, 0, 0, 
5251   /* 0x70-0x7f */
5252   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5253   /* 0x80-0x8f */
5254   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5255   /* 0x90-0x9f */
5256   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5257   /* 0xa0-0xaf */
5258   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5259   /* 0xb0-0xbf */
5260   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5261   /* 0xc0-0xcf */
5262   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5263   /* 0xd0-0xdf */
5264   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5265   /* 0xe0-0xef */
5266   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5267   /* 0xf0-0xff */
5268   kPrefixLOCK, 0, kPrefixREPNE, kPrefixREP, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
5269 };
5270
5271 static const DecodeOpsKind kOpDecodeOpsKind[NCDTABLESIZE] =  {
5272     /* 00 */ DECODE_OPS_DEFAULT_32,
5273     /* 01 */ DECODE_OPS_DEFAULT_32,
5274     /* 02 */ DECODE_OPS_DEFAULT_32,
5275     /* 03 */ DECODE_OPS_DEFAULT_32,
5276     /* 04 */ DECODE_OPS_DEFAULT_32,
5277     /* 05 */ DECODE_OPS_DEFAULT_32,
5278     /* 06 */ DECODE_OPS_DEFAULT_32,
5279     /* 07 */ DECODE_OPS_DEFAULT_32,
5280     /* 08 */ DECODE_OPS_DEFAULT_32,
5281     /* 09 */ DECODE_OPS_DEFAULT_32,
5282     /* 0a */ DECODE_OPS_DEFAULT_32,
5283     /* 0b */ DECODE_OPS_DEFAULT_32,
5284     /* 0c */ DECODE_OPS_DEFAULT_32,
5285     /* 0d */ DECODE_OPS_DEFAULT_32,
5286     /* 0e */ DECODE_OPS_DEFAULT_32,
5287     /* 0f */ DECODE_OPS_DEFAULT_32,
5288     /* 10 */ DECODE_OPS_DEFAULT_32,
5289     /* 11 */ DECODE_OPS_DEFAULT_32,
5290     /* 12 */ DECODE_OPS_DEFAULT_32,
5291     /* 13 */ DECODE_OPS_DEFAULT_32,
5292     /* 14 */ DECODE_OPS_DEFAULT_32,
5293     /* 15 */ DECODE_OPS_DEFAULT_32,
5294     /* 16 */ DECODE_OPS_DEFAULT_32,
5295     /* 17 */ DECODE_OPS_DEFAULT_32,
5296     /* 18 */ DECODE_OPS_DEFAULT_32,
5297     /* 19 */ DECODE_OPS_DEFAULT_32,
5298     /* 1a */ DECODE_OPS_DEFAULT_32,
5299     /* 1b */ DECODE_OPS_DEFAULT_32,
5300     /* 1c */ DECODE_OPS_DEFAULT_32,
5301     /* 1d */ DECODE_OPS_DEFAULT_32,
5302     /* 1e */ DECODE_OPS_DEFAULT_32,
5303     /* 1f */ DECODE_OPS_DEFAULT_32,
5304     /* 20 */ DECODE_OPS_DEFAULT_32,
5305     /* 21 */ DECODE_OPS_DEFAULT_32,
5306     /* 22 */ DECODE_OPS_DEFAULT_32,
5307     /* 23 */ DECODE_OPS_DEFAULT_32,
5308     /* 24 */ DECODE_OPS_DEFAULT_32,
5309     /* 25 */ DECODE_OPS_DEFAULT_32,
5310     /* 26 */ DECODE_OPS_DEFAULT_32,
5311     /* 27 */ DECODE_OPS_DEFAULT_32,
5312     /* 28 */ DECODE_OPS_DEFAULT_32,
5313     /* 29 */ DECODE_OPS_DEFAULT_32,
5314     /* 2a */ DECODE_OPS_DEFAULT_32,
5315     /* 2b */ DECODE_OPS_DEFAULT_32,
5316     /* 2c */ DECODE_OPS_DEFAULT_32,
5317     /* 2d */ DECODE_OPS_DEFAULT_32,
5318     /* 2e */ DECODE_OPS_DEFAULT_32,
5319     /* 2f */ DECODE_OPS_DEFAULT_32,
5320     /* 30 */ DECODE_OPS_DEFAULT_32,
5321     /* 31 */ DECODE_OPS_DEFAULT_32,
5322     /* 32 */ DECODE_OPS_DEFAULT_32,
5323     /* 33 */ DECODE_OPS_DEFAULT_32,
5324     /* 34 */ DECODE_OPS_DEFAULT_32,
5325     /* 35 */ DECODE_OPS_DEFAULT_32,
5326     /* 36 */ DECODE_OPS_DEFAULT_32,
5327     /* 37 */ DECODE_OPS_DEFAULT_32,
5328     /* 38 */ DECODE_OPS_DEFAULT_32,
5329     /* 39 */ DECODE_OPS_DEFAULT_32,
5330     /* 3a */ DECODE_OPS_DEFAULT_32,
5331     /* 3b */ DECODE_OPS_DEFAULT_32,
5332     /* 3c */ DECODE_OPS_DEFAULT_32,
5333     /* 3d */ DECODE_OPS_DEFAULT_32,
5334     /* 3e */ DECODE_OPS_DEFAULT_32,
5335     /* 3f */ DECODE_OPS_DEFAULT_32,
5336     /* 40 */ DECODE_OPS_DEFAULT_32,
5337     /* 41 */ DECODE_OPS_DEFAULT_32,
5338     /* 42 */ DECODE_OPS_DEFAULT_32,
5339     /* 43 */ DECODE_OPS_DEFAULT_32,
5340     /* 44 */ DECODE_OPS_DEFAULT_32,
5341     /* 45 */ DECODE_OPS_DEFAULT_32,
5342     /* 46 */ DECODE_OPS_DEFAULT_32,
5343     /* 47 */ DECODE_OPS_DEFAULT_32,
5344     /* 48 */ DECODE_OPS_DEFAULT_32,
5345     /* 49 */ DECODE_OPS_DEFAULT_32,
5346     /* 4a */ DECODE_OPS_DEFAULT_32,
5347     /* 4b */ DECODE_OPS_DEFAULT_32,
5348     /* 4c */ DECODE_OPS_DEFAULT_32,
5349     /* 4d */ DECODE_OPS_DEFAULT_32,
5350     /* 4e */ DECODE_OPS_DEFAULT_32,
5351     /* 4f */ DECODE_OPS_DEFAULT_32,
5352     /* 50 */ DECODE_OPS_DEFAULT_64,
5353     /* 51 */ DECODE_OPS_DEFAULT_64,
5354     /* 52 */ DECODE_OPS_DEFAULT_64,
5355     /* 53 */ DECODE_OPS_DEFAULT_64,
5356     /* 54 */ DECODE_OPS_DEFAULT_64,
5357     /* 55 */ DECODE_OPS_DEFAULT_64,
5358     /* 56 */ DECODE_OPS_DEFAULT_64,
5359     /* 57 */ DECODE_OPS_DEFAULT_64,
5360     /* 58 */ DECODE_OPS_DEFAULT_64,
5361     /* 59 */ DECODE_OPS_DEFAULT_64,
5362     /* 5a */ DECODE_OPS_DEFAULT_64,
5363     /* 5b */ DECODE_OPS_DEFAULT_64,
5364     /* 5c */ DECODE_OPS_DEFAULT_64,
5365     /* 5d */ DECODE_OPS_DEFAULT_64,
5366     /* 5e */ DECODE_OPS_DEFAULT_64,
5367     /* 5f */ DECODE_OPS_DEFAULT_64,
5368     /* 60 */ DECODE_OPS_DEFAULT_32,
5369     /* 61 */ DECODE_OPS_DEFAULT_32,
5370     /* 62 */ DECODE_OPS_DEFAULT_32,
5371     /* 63 */ DECODE_OPS_DEFAULT_32,
5372     /* 64 */ DECODE_OPS_DEFAULT_32,
5373     /* 65 */ DECODE_OPS_DEFAULT_32,
5374     /* 66 */ DECODE_OPS_DEFAULT_32,
5375     /* 67 */ DECODE_OPS_DEFAULT_32,
5376     /* 68 */ DECODE_OPS_DEFAULT_64,
5377     /* 69 */ DECODE_OPS_DEFAULT_32,
5378     /* 6a */ DECODE_OPS_DEFAULT_64,
5379     /* 6b */ DECODE_OPS_DEFAULT_32,
5380     /* 6c */ DECODE_OPS_DEFAULT_32,
5381     /* 6d */ DECODE_OPS_DEFAULT_32,
5382     /* 6e */ DECODE_OPS_DEFAULT_32,
5383     /* 6f */ DECODE_OPS_DEFAULT_32,
5384     /* 70 */ DECODE_OPS_FORCE_64,
5385     /* 71 */ DECODE_OPS_FORCE_64,
5386     /* 72 */ DECODE_OPS_FORCE_64,
5387     /* 73 */ DECODE_OPS_FORCE_64,
5388     /* 74 */ DECODE_OPS_FORCE_64,
5389     /* 75 */ DECODE_OPS_FORCE_64,
5390     /* 76 */ DECODE_OPS_FORCE_64,
5391     /* 77 */ DECODE_OPS_FORCE_64,
5392     /* 78 */ DECODE_OPS_FORCE_64,
5393     /* 79 */ DECODE_OPS_FORCE_64,
5394     /* 7a */ DECODE_OPS_FORCE_64,
5395     /* 7b */ DECODE_OPS_FORCE_64,
5396     /* 7c */ DECODE_OPS_FORCE_64,
5397     /* 7d */ DECODE_OPS_FORCE_64,
5398     /* 7e */ DECODE_OPS_FORCE_64,
5399     /* 7f */ DECODE_OPS_FORCE_64,
5400     /* 80 */ DECODE_OPS_DEFAULT_32,
5401     /* 81 */ DECODE_OPS_DEFAULT_32,
5402     /* 82 */ DECODE_OPS_DEFAULT_32,
5403     /* 83 */ DECODE_OPS_DEFAULT_32,
5404     /* 84 */ DECODE_OPS_DEFAULT_32,
5405     /* 85 */ DECODE_OPS_DEFAULT_32,
5406     /* 86 */ DECODE_OPS_DEFAULT_32,
5407     /* 87 */ DECODE_OPS_DEFAULT_32,
5408     /* 88 */ DECODE_OPS_DEFAULT_32,
5409     /* 89 */ DECODE_OPS_DEFAULT_32,
5410     /* 8a */ DECODE_OPS_DEFAULT_32,
5411     /* 8b */ DECODE_OPS_DEFAULT_32,
5412     /* 8c */ DECODE_OPS_DEFAULT_32,
5413     /* 8d */ DECODE_OPS_DEFAULT_32,
5414     /* 8e */ DECODE_OPS_DEFAULT_32,
5415     /* 8f */ DECODE_OPS_DEFAULT_64,
5416     /* 90 */ DECODE_OPS_DEFAULT_32,
5417     /* 91 */ DECODE_OPS_DEFAULT_32,
5418     /* 92 */ DECODE_OPS_DEFAULT_32,
5419     /* 93 */ DECODE_OPS_DEFAULT_32,
5420     /* 94 */ DECODE_OPS_DEFAULT_32,
5421     /* 95 */ DECODE_OPS_DEFAULT_32,
5422     /* 96 */ DECODE_OPS_DEFAULT_32,
5423     /* 97 */ DECODE_OPS_DEFAULT_32,
5424     /* 98 */ DECODE_OPS_DEFAULT_32,
5425     /* 99 */ DECODE_OPS_DEFAULT_32,
5426     /* 9a */ DECODE_OPS_DEFAULT_32,
5427     /* 9b */ DECODE_OPS_DEFAULT_32,
5428     /* 9c */ DECODE_OPS_DEFAULT_64,
5429     /* 9d */ DECODE_OPS_DEFAULT_64,
5430     /* 9e */ DECODE_OPS_DEFAULT_32,
5431     /* 9f */ DECODE_OPS_DEFAULT_32,
5432     /* a0 */ DECODE_OPS_DEFAULT_32,
5433     /* a1 */ DECODE_OPS_DEFAULT_32,
5434     /* a2 */ DECODE_OPS_DEFAULT_32,
5435     /* a3 */ DECODE_OPS_DEFAULT_32,
5436     /* a4 */ DECODE_OPS_DEFAULT_32,
5437     /* a5 */ DECODE_OPS_DEFAULT_32,
5438     /* a6 */ DECODE_OPS_DEFAULT_32,
5439     /* a7 */ DECODE_OPS_DEFAULT_32,
5440     /* a8 */ DECODE_OPS_DEFAULT_32,
5441     /* a9 */ DECODE_OPS_DEFAULT_32,
5442     /* aa */ DECODE_OPS_DEFAULT_32,
5443     /* ab */ DECODE_OPS_DEFAULT_32,
5444     /* ac */ DECODE_OPS_DEFAULT_32,
5445     /* ad */ DECODE_OPS_DEFAULT_32,
5446     /* ae */ DECODE_OPS_DEFAULT_32,
5447     /* af */ DECODE_OPS_DEFAULT_32,
5448     /* b0 */ DECODE_OPS_DEFAULT_32,
5449     /* b1 */ DECODE_OPS_DEFAULT_32,
5450     /* b2 */ DECODE_OPS_DEFAULT_32,
5451     /* b3 */ DECODE_OPS_DEFAULT_32,
5452     /* b4 */ DECODE_OPS_DEFAULT_32,
5453     /* b5 */ DECODE_OPS_DEFAULT_32,
5454     /* b6 */ DECODE_OPS_DEFAULT_32,
5455     /* b7 */ DECODE_OPS_DEFAULT_32,
5456     /* b8 */ DECODE_OPS_DEFAULT_32,
5457     /* b9 */ DECODE_OPS_DEFAULT_32,
5458     /* ba */ DECODE_OPS_DEFAULT_32,
5459     /* bb */ DECODE_OPS_DEFAULT_32,
5460     /* bc */ DECODE_OPS_DEFAULT_32,
5461     /* bd */ DECODE_OPS_DEFAULT_32,
5462     /* be */ DECODE_OPS_DEFAULT_32,
5463     /* bf */ DECODE_OPS_DEFAULT_32,
5464     /* c0 */ DECODE_OPS_DEFAULT_32,
5465     /* c1 */ DECODE_OPS_DEFAULT_32,
5466     /* c2 */ DECODE_OPS_FORCE_64,
5467     /* c3 */ DECODE_OPS_FORCE_64,
5468     /* c4 */ DECODE_OPS_DEFAULT_32,
5469     /* c5 */ DECODE_OPS_DEFAULT_32,
5470     /* c6 */ DECODE_OPS_DEFAULT_32,
5471     /* c7 */ DECODE_OPS_DEFAULT_32,
5472     /* c8 */ DECODE_OPS_DEFAULT_32,
5473     /* c9 */ DECODE_OPS_DEFAULT_64,
5474     /* ca */ DECODE_OPS_DEFAULT_32,
5475     /* cb */ DECODE_OPS_DEFAULT_32,
5476     /* cc */ DECODE_OPS_DEFAULT_32,
5477     /* cd */ DECODE_OPS_DEFAULT_32,
5478     /* ce */ DECODE_OPS_DEFAULT_32,
5479     /* cf */ DECODE_OPS_DEFAULT_32,
5480     /* d0 */ DECODE_OPS_DEFAULT_32,
5481     /* d1 */ DECODE_OPS_DEFAULT_32,
5482     /* d2 */ DECODE_OPS_DEFAULT_32,
5483     /* d3 */ DECODE_OPS_DEFAULT_32,
5484     /* d4 */ DECODE_OPS_DEFAULT_32,
5485     /* d5 */ DECODE_OPS_DEFAULT_32,
5486     /* d6 */ DECODE_OPS_DEFAULT_32,
5487     /* d7 */ DECODE_OPS_DEFAULT_32,
5488     /* d8 */ DECODE_OPS_DEFAULT_32,
5489     /* d9 */ DECODE_OPS_DEFAULT_32,
5490     /* da */ DECODE_OPS_DEFAULT_32,
5491     /* db */ DECODE_OPS_DEFAULT_32,
5492     /* dc */ DECODE_OPS_DEFAULT_32,
5493     /* dd */ DECODE_OPS_DEFAULT_32,
5494     /* de */ DECODE_OPS_DEFAULT_32,
5495     /* df */ DECODE_OPS_DEFAULT_32,
5496     /* e0 */ DECODE_OPS_FORCE_64,
5497     /* e1 */ DECODE_OPS_FORCE_64,
5498     /* e2 */ DECODE_OPS_FORCE_64,
5499     /* e3 */ DECODE_OPS_FORCE_64,
5500     /* e4 */ DECODE_OPS_DEFAULT_32,
5501     /* e5 */ DECODE_OPS_DEFAULT_32,
5502     /* e6 */ DECODE_OPS_DEFAULT_32,
5503     /* e7 */ DECODE_OPS_DEFAULT_32,
5504     /* e8 */ DECODE_OPS_FORCE_64,
5505     /* e9 */ DECODE_OPS_FORCE_64,
5506     /* ea */ DECODE_OPS_DEFAULT_32,
5507     /* eb */ DECODE_OPS_FORCE_64,
5508     /* ec */ DECODE_OPS_DEFAULT_32,
5509     /* ed */ DECODE_OPS_DEFAULT_32,
5510     /* ee */ DECODE_OPS_DEFAULT_32,
5511     /* ef */ DECODE_OPS_DEFAULT_32,
5512     /* f0 */ DECODE_OPS_DEFAULT_32,
5513     /* f1 */ DECODE_OPS_DEFAULT_32,
5514     /* f2 */ DECODE_OPS_DEFAULT_32,
5515     /* f3 */ DECODE_OPS_DEFAULT_32,
5516     /* f4 */ DECODE_OPS_DEFAULT_32,
5517     /* f5 */ DECODE_OPS_DEFAULT_32,
5518     /* f6 */ DECODE_OPS_DEFAULT_32,
5519     /* f7 */ DECODE_OPS_DEFAULT_32,
5520     /* f8 */ DECODE_OPS_DEFAULT_32,
5521     /* f9 */ DECODE_OPS_DEFAULT_32,
5522     /* fa */ DECODE_OPS_DEFAULT_32,
5523     /* fb */ DECODE_OPS_DEFAULT_32,
5524     /* fc */ DECODE_OPS_DEFAULT_32,
5525     /* fd */ DECODE_OPS_DEFAULT_32,
5526     /* fe */ DECODE_OPS_DEFAULT_32,
5527     /* ff */ DECODE_OPS_DEFAULT_32,
5528   };
5529
5530 static const DecodeOpsKind kOp0FDecodeOpsKind[NCDTABLESIZE] =  {
5531     /* 00 */ DECODE_OPS_DEFAULT_32,
5532     /* 01 */ DECODE_OPS_DEFAULT_32,
5533     /* 02 */ DECODE_OPS_DEFAULT_32,
5534     /* 03 */ DECODE_OPS_DEFAULT_32,
5535     /* 04 */ DECODE_OPS_DEFAULT_32,
5536     /* 05 */ DECODE_OPS_DEFAULT_32,
5537     /* 06 */ DECODE_OPS_DEFAULT_32,
5538     /* 07 */ DECODE_OPS_DEFAULT_32,
5539     /* 08 */ DECODE_OPS_DEFAULT_32,
5540     /* 09 */ DECODE_OPS_DEFAULT_32,
5541     /* 0a */ DECODE_OPS_DEFAULT_32,
5542     /* 0b */ DECODE_OPS_DEFAULT_32,
5543     /* 0c */ DECODE_OPS_DEFAULT_32,
5544     /* 0d */ DECODE_OPS_DEFAULT_32,
5545     /* 0e */ DECODE_OPS_DEFAULT_32,
5546     /* 0f */ DECODE_OPS_DEFAULT_32,
5547     /* 10 */ DECODE_OPS_DEFAULT_32,
5548     /* 11 */ DECODE_OPS_DEFAULT_32,
5549     /* 12 */ DECODE_OPS_DEFAULT_32,
5550     /* 13 */ DECODE_OPS_DEFAULT_32,
5551     /* 14 */ DECODE_OPS_DEFAULT_32,
5552     /* 15 */ DECODE_OPS_DEFAULT_32,
5553     /* 16 */ DECODE_OPS_DEFAULT_32,
5554     /* 17 */ DECODE_OPS_DEFAULT_32,
5555     /* 18 */ DECODE_OPS_DEFAULT_32,
5556     /* 19 */ DECODE_OPS_DEFAULT_32,
5557     /* 1a */ DECODE_OPS_DEFAULT_32,
5558     /* 1b */ DECODE_OPS_DEFAULT_32,
5559     /* 1c */ DECODE_OPS_DEFAULT_32,
5560     /* 1d */ DECODE_OPS_DEFAULT_32,
5561     /* 1e */ DECODE_OPS_DEFAULT_32,
5562     /* 1f */ DECODE_OPS_DEFAULT_32,
5563     /* 20 */ DECODE_OPS_DEFAULT_32,
5564     /* 21 */ DECODE_OPS_DEFAULT_32,
5565     /* 22 */ DECODE_OPS_DEFAULT_32,
5566     /* 23 */ DECODE_OPS_DEFAULT_32,
5567     /* 24 */ DECODE_OPS_DEFAULT_32,
5568     /* 25 */ DECODE_OPS_DEFAULT_32,
5569     /* 26 */ DECODE_OPS_DEFAULT_32,
5570     /* 27 */ DECODE_OPS_DEFAULT_32,
5571     /* 28 */ DECODE_OPS_DEFAULT_32,
5572     /* 29 */ DECODE_OPS_DEFAULT_32,
5573     /* 2a */ DECODE_OPS_DEFAULT_32,
5574     /* 2b */ DECODE_OPS_DEFAULT_32,
5575     /* 2c */ DECODE_OPS_DEFAULT_32,
5576     /* 2d */ DECODE_OPS_DEFAULT_32,
5577     /* 2e */ DECODE_OPS_DEFAULT_32,
5578     /* 2f */ DECODE_OPS_DEFAULT_32,
5579     /* 30 */ DECODE_OPS_DEFAULT_32,
5580     /* 31 */ DECODE_OPS_DEFAULT_32,
5581     /* 32 */ DECODE_OPS_DEFAULT_32,
5582     /* 33 */ DECODE_OPS_DEFAULT_32,
5583     /* 34 */ DECODE_OPS_DEFAULT_32,
5584     /* 35 */ DECODE_OPS_DEFAULT_32,
5585     /* 36 */ DECODE_OPS_DEFAULT_32,
5586     /* 37 */ DECODE_OPS_DEFAULT_32,
5587     /* 38 */ DECODE_OPS_DEFAULT_32,
5588     /* 39 */ DECODE_OPS_DEFAULT_32,
5589     /* 3a */ DECODE_OPS_DEFAULT_32,
5590     /* 3b */ DECODE_OPS_DEFAULT_32,
5591     /* 3c */ DECODE_OPS_DEFAULT_32,
5592     /* 3d */ DECODE_OPS_DEFAULT_32,
5593     /* 3e */ DECODE_OPS_DEFAULT_32,
5594     /* 3f */ DECODE_OPS_DEFAULT_32,
5595     /* 40 */ DECODE_OPS_DEFAULT_32,
5596     /* 41 */ DECODE_OPS_DEFAULT_32,
5597     /* 42 */ DECODE_OPS_DEFAULT_32,
5598     /* 43 */ DECODE_OPS_DEFAULT_32,
5599     /* 44 */ DECODE_OPS_DEFAULT_32,
5600     /* 45 */ DECODE_OPS_DEFAULT_32,
5601     /* 46 */ DECODE_OPS_DEFAULT_32,
5602     /* 47 */ DECODE_OPS_DEFAULT_32,
5603     /* 48 */ DECODE_OPS_DEFAULT_32,
5604     /* 49 */ DECODE_OPS_DEFAULT_32,
5605     /* 4a */ DECODE_OPS_DEFAULT_32,
5606     /* 4b */ DECODE_OPS_DEFAULT_32,
5607     /* 4c */ DECODE_OPS_DEFAULT_32,
5608     /* 4d */ DECODE_OPS_DEFAULT_32,
5609     /* 4e */ DECODE_OPS_DEFAULT_32,
5610     /* 4f */ DECODE_OPS_DEFAULT_32,
5611     /* 50 */ DECODE_OPS_DEFAULT_32,
5612     /* 51 */ DECODE_OPS_DEFAULT_32,
5613     /* 52 */ DECODE_OPS_DEFAULT_32,
5614     /* 53 */ DECODE_OPS_DEFAULT_32,
5615     /* 54 */ DECODE_OPS_DEFAULT_32,
5616     /* 55 */ DECODE_OPS_DEFAULT_32,
5617     /* 56 */ DECODE_OPS_DEFAULT_32,
5618     /* 57 */ DECODE_OPS_DEFAULT_32,
5619     /* 58 */ DECODE_OPS_DEFAULT_32,
5620     /* 59 */ DECODE_OPS_DEFAULT_32,
5621     /* 5a */ DECODE_OPS_DEFAULT_32,
5622     /* 5b */ DECODE_OPS_DEFAULT_32,
5623     /* 5c */ DECODE_OPS_DEFAULT_32,
5624     /* 5d */ DECODE_OPS_DEFAULT_32,
5625     /* 5e */ DECODE_OPS_DEFAULT_32,
5626     /* 5f */ DECODE_OPS_DEFAULT_32,
5627     /* 60 */ DECODE_OPS_DEFAULT_32,
5628     /* 61 */ DECODE_OPS_DEFAULT_32,
5629     /* 62 */ DECODE_OPS_DEFAULT_32,
5630     /* 63 */ DECODE_OPS_DEFAULT_32,
5631     /* 64 */ DECODE_OPS_DEFAULT_32,
5632     /* 65 */ DECODE_OPS_DEFAULT_32,
5633     /* 66 */ DECODE_OPS_DEFAULT_32,
5634     /* 67 */ DECODE_OPS_DEFAULT_32,
5635     /* 68 */ DECODE_OPS_DEFAULT_32,
5636     /* 69 */ DECODE_OPS_DEFAULT_32,
5637     /* 6a */ DECODE_OPS_DEFAULT_32,
5638     /* 6b */ DECODE_OPS_DEFAULT_32,
5639     /* 6c */ DECODE_OPS_DEFAULT_32,
5640     /* 6d */ DECODE_OPS_DEFAULT_32,
5641     /* 6e */ DECODE_OPS_DEFAULT_32,
5642     /* 6f */ DECODE_OPS_DEFAULT_32,
5643     /* 70 */ DECODE_OPS_DEFAULT_32,
5644     /* 71 */ DECODE_OPS_DEFAULT_32,
5645     /* 72 */ DECODE_OPS_DEFAULT_32,
5646     /* 73 */ DECODE_OPS_DEFAULT_32,
5647     /* 74 */ DECODE_OPS_DEFAULT_32,
5648     /* 75 */ DECODE_OPS_DEFAULT_32,
5649     /* 76 */ DECODE_OPS_DEFAULT_32,
5650     /* 77 */ DECODE_OPS_DEFAULT_32,
5651     /* 78 */ DECODE_OPS_DEFAULT_32,
5652     /* 79 */ DECODE_OPS_DEFAULT_32,
5653     /* 7a */ DECODE_OPS_DEFAULT_32,
5654     /* 7b */ DECODE_OPS_DEFAULT_32,
5655     /* 7c */ DECODE_OPS_DEFAULT_32,
5656     /* 7d */ DECODE_OPS_DEFAULT_32,
5657     /* 7e */ DECODE_OPS_DEFAULT_32,
5658     /* 7f */ DECODE_OPS_DEFAULT_32,
5659     /* 80 */ DECODE_OPS_FORCE_64,
5660     /* 81 */ DECODE_OPS_FORCE_64,
5661     /* 82 */ DECODE_OPS_FORCE_64,
5662     /* 83 */ DECODE_OPS_FORCE_64,
5663     /* 84 */ DECODE_OPS_FORCE_64,
5664     /* 85 */ DECODE_OPS_FORCE_64,
5665     /* 86 */ DECODE_OPS_FORCE_64,
5666     /* 87 */ DECODE_OPS_FORCE_64,
5667     /* 88 */ DECODE_OPS_FORCE_64,
5668     /* 89 */ DECODE_OPS_FORCE_64,
5669     /* 8a */ DECODE_OPS_FORCE_64,
5670     /* 8b */ DECODE_OPS_FORCE_64,
5671     /* 8c */ DECODE_OPS_FORCE_64,
5672     /* 8d */ DECODE_OPS_FORCE_64,
5673     /* 8e */ DECODE_OPS_FORCE_64,
5674     /* 8f */ DECODE_OPS_FORCE_64,
5675     /* 90 */ DECODE_OPS_DEFAULT_32,
5676     /* 91 */ DECODE_OPS_DEFAULT_32,
5677     /* 92 */ DECODE_OPS_DEFAULT_32,
5678     /* 93 */ DECODE_OPS_DEFAULT_32,
5679     /* 94 */ DECODE_OPS_DEFAULT_32,
5680     /* 95 */ DECODE_OPS_DEFAULT_32,
5681     /* 96 */ DECODE_OPS_DEFAULT_32,
5682     /* 97 */ DECODE_OPS_DEFAULT_32,
5683     /* 98 */ DECODE_OPS_DEFAULT_32,
5684     /* 99 */ DECODE_OPS_DEFAULT_32,
5685     /* 9a */ DECODE_OPS_DEFAULT_32,
5686     /* 9b */ DECODE_OPS_DEFAULT_32,
5687     /* 9c */ DECODE_OPS_DEFAULT_32,
5688     /* 9d */ DECODE_OPS_DEFAULT_32,
5689     /* 9e */ DECODE_OPS_DEFAULT_32,
5690     /* 9f */ DECODE_OPS_DEFAULT_32,
5691     /* a0 */ DECODE_OPS_DEFAULT_64,
5692     /* a1 */ DECODE_OPS_DEFAULT_64,
5693     /* a2 */ DECODE_OPS_DEFAULT_32,
5694     /* a3 */ DECODE_OPS_DEFAULT_32,
5695     /* a4 */ DECODE_OPS_DEFAULT_32,
5696     /* a5 */ DECODE_OPS_DEFAULT_32,
5697     /* a6 */ DECODE_OPS_DEFAULT_32,
5698     /* a7 */ DECODE_OPS_DEFAULT_32,
5699     /* a8 */ DECODE_OPS_DEFAULT_64,
5700     /* a9 */ DECODE_OPS_DEFAULT_64,
5701     /* aa */ DECODE_OPS_DEFAULT_32,
5702     /* ab */ DECODE_OPS_DEFAULT_32,
5703     /* ac */ DECODE_OPS_DEFAULT_32,
5704     /* ad */ DECODE_OPS_DEFAULT_32,
5705     /* ae */ DECODE_OPS_DEFAULT_32,
5706     /* af */ DECODE_OPS_DEFAULT_32,
5707     /* b0 */ DECODE_OPS_DEFAULT_32,
5708     /* b1 */ DECODE_OPS_DEFAULT_32,
5709     /* b2 */ DECODE_OPS_DEFAULT_32,
5710     /* b3 */ DECODE_OPS_DEFAULT_32,
5711     /* b4 */ DECODE_OPS_DEFAULT_32,
5712     /* b5 */ DECODE_OPS_DEFAULT_32,
5713     /* b6 */ DECODE_OPS_DEFAULT_32,
5714     /* b7 */ DECODE_OPS_DEFAULT_32,
5715     /* b8 */ DECODE_OPS_DEFAULT_32,
5716     /* b9 */ DECODE_OPS_DEFAULT_32,
5717     /* ba */ DECODE_OPS_DEFAULT_32,
5718     /* bb */ DECODE_OPS_DEFAULT_32,
5719     /* bc */ DECODE_OPS_DEFAULT_32,
5720     /* bd */ DECODE_OPS_DEFAULT_32,
5721     /* be */ DECODE_OPS_DEFAULT_32,
5722     /* bf */ DECODE_OPS_DEFAULT_32,
5723     /* c0 */ DECODE_OPS_DEFAULT_32,
5724     /* c1 */ DECODE_OPS_DEFAULT_32,
5725     /* c2 */ DECODE_OPS_DEFAULT_32,
5726     /* c3 */ DECODE_OPS_DEFAULT_32,
5727     /* c4 */ DECODE_OPS_DEFAULT_32,
5728     /* c5 */ DECODE_OPS_DEFAULT_32,
5729     /* c6 */ DECODE_OPS_DEFAULT_32,
5730     /* c7 */ DECODE_OPS_DEFAULT_32,
5731     /* c8 */ DECODE_OPS_DEFAULT_32,
5732     /* c9 */ DECODE_OPS_DEFAULT_32,
5733     /* ca */ DECODE_OPS_DEFAULT_32,
5734     /* cb */ DECODE_OPS_DEFAULT_32,
5735     /* cc */ DECODE_OPS_DEFAULT_32,
5736     /* cd */ DECODE_OPS_DEFAULT_32,
5737     /* ce */ DECODE_OPS_DEFAULT_32,
5738     /* cf */ DECODE_OPS_DEFAULT_32,
5739     /* d0 */ DECODE_OPS_DEFAULT_32,
5740     /* d1 */ DECODE_OPS_DEFAULT_32,
5741     /* d2 */ DECODE_OPS_DEFAULT_32,
5742     /* d3 */ DECODE_OPS_DEFAULT_32,
5743     /* d4 */ DECODE_OPS_DEFAULT_32,
5744     /* d5 */ DECODE_OPS_DEFAULT_32,
5745     /* d6 */ DECODE_OPS_DEFAULT_32,
5746     /* d7 */ DECODE_OPS_DEFAULT_32,
5747     /* d8 */ DECODE_OPS_DEFAULT_32,
5748     /* d9 */ DECODE_OPS_DEFAULT_32,
5749     /* da */ DECODE_OPS_DEFAULT_32,
5750     /* db */ DECODE_OPS_DEFAULT_32,
5751     /* dc */ DECODE_OPS_DEFAULT_32,
5752     /* dd */ DECODE_OPS_DEFAULT_32,
5753     /* de */ DECODE_OPS_DEFAULT_32,
5754     /* df */ DECODE_OPS_DEFAULT_32,
5755     /* e0 */ DECODE_OPS_DEFAULT_32,
5756     /* e1 */ DECODE_OPS_DEFAULT_32,
5757     /* e2 */ DECODE_OPS_DEFAULT_32,
5758     /* e3 */ DECODE_OPS_DEFAULT_32,
5759     /* e4 */ DECODE_OPS_DEFAULT_32,
5760     /* e5 */ DECODE_OPS_DEFAULT_32,
5761     /* e6 */ DECODE_OPS_DEFAULT_32,
5762     /* e7 */ DECODE_OPS_DEFAULT_32,
5763     /* e8 */ DECODE_OPS_DEFAULT_32,
5764     /* e9 */ DECODE_OPS_DEFAULT_32,
5765     /* ea */ DECODE_OPS_DEFAULT_32,
5766     /* eb */ DECODE_OPS_DEFAULT_32,
5767     /* ec */ DECODE_OPS_DEFAULT_32,
5768     /* ed */ DECODE_OPS_DEFAULT_32,
5769     /* ee */ DECODE_OPS_DEFAULT_32,
5770     /* ef */ DECODE_OPS_DEFAULT_32,
5771     /* f0 */ DECODE_OPS_DEFAULT_32,
5772     /* f1 */ DECODE_OPS_DEFAULT_32,
5773     /* f2 */ DECODE_OPS_DEFAULT_32,
5774     /* f3 */ DECODE_OPS_DEFAULT_32,
5775     /* f4 */ DECODE_OPS_DEFAULT_32,
5776     /* f5 */ DECODE_OPS_DEFAULT_32,
5777     /* f6 */ DECODE_OPS_DEFAULT_32,
5778     /* f7 */ DECODE_OPS_DEFAULT_32,
5779     /* f8 */ DECODE_OPS_DEFAULT_32,
5780     /* f9 */ DECODE_OPS_DEFAULT_32,
5781     /* fa */ DECODE_OPS_DEFAULT_32,
5782     /* fb */ DECODE_OPS_DEFAULT_32,
5783     /* fc */ DECODE_OPS_DEFAULT_32,
5784     /* fd */ DECODE_OPS_DEFAULT_32,
5785     /* fe */ DECODE_OPS_DEFAULT_32,
5786     /* ff */ DECODE_OPS_DEFAULT_32,
5787   };
5788
5789 static const DecodeOpsKind kModRMOpDecodeOpsKind[kNaClMRMGroupsRange][kModRMOpcodeGroupSize] = {
5790   /* group 0 */
5791   {
5792     /* 00 */ DECODE_OPS_DEFAULT_32,
5793     /* 01 */ DECODE_OPS_DEFAULT_32,
5794     /* 02 */ DECODE_OPS_DEFAULT_32,
5795     /* 03 */ DECODE_OPS_DEFAULT_32,
5796     /* 04 */ DECODE_OPS_DEFAULT_32,
5797     /* 05 */ DECODE_OPS_DEFAULT_32,
5798     /* 06 */ DECODE_OPS_DEFAULT_32,
5799     /* 07 */ DECODE_OPS_DEFAULT_32,
5800   },
5801   /* group 1 */
5802   {
5803     /* 00 */ DECODE_OPS_DEFAULT_32,
5804     /* 01 */ DECODE_OPS_DEFAULT_32,
5805     /* 02 */ DECODE_OPS_DEFAULT_32,
5806     /* 03 */ DECODE_OPS_DEFAULT_32,
5807     /* 04 */ DECODE_OPS_DEFAULT_32,
5808     /* 05 */ DECODE_OPS_DEFAULT_32,
5809     /* 06 */ DECODE_OPS_DEFAULT_32,
5810     /* 07 */ DECODE_OPS_DEFAULT_32,
5811   },
5812   /* group 2 */
5813   {
5814     /* 00 */ DECODE_OPS_DEFAULT_32,
5815     /* 01 */ DECODE_OPS_DEFAULT_32,
5816     /* 02 */ DECODE_OPS_DEFAULT_32,
5817     /* 03 */ DECODE_OPS_DEFAULT_32,
5818     /* 04 */ DECODE_OPS_DEFAULT_32,
5819     /* 05 */ DECODE_OPS_DEFAULT_32,
5820     /* 06 */ DECODE_OPS_DEFAULT_32,
5821     /* 07 */ DECODE_OPS_DEFAULT_32,
5822   },
5823   /* group 3 */
5824   {
5825     /* 00 */ DECODE_OPS_DEFAULT_32,
5826     /* 01 */ DECODE_OPS_DEFAULT_32,
5827     /* 02 */ DECODE_OPS_DEFAULT_32,
5828     /* 03 */ DECODE_OPS_DEFAULT_32,
5829     /* 04 */ DECODE_OPS_DEFAULT_32,
5830     /* 05 */ DECODE_OPS_DEFAULT_32,
5831     /* 06 */ DECODE_OPS_DEFAULT_32,
5832     /* 07 */ DECODE_OPS_DEFAULT_32,
5833   },
5834   /* group 4 */
5835   {
5836     /* 00 */ DECODE_OPS_DEFAULT_32,
5837     /* 01 */ DECODE_OPS_DEFAULT_32,
5838     /* 02 */ DECODE_OPS_DEFAULT_32,
5839     /* 03 */ DECODE_OPS_DEFAULT_32,
5840     /* 04 */ DECODE_OPS_DEFAULT_32,
5841     /* 05 */ DECODE_OPS_DEFAULT_32,
5842     /* 06 */ DECODE_OPS_DEFAULT_32,
5843     /* 07 */ DECODE_OPS_DEFAULT_32,
5844   },
5845   /* group 5 */
5846   {
5847     /* 00 */ DECODE_OPS_DEFAULT_32,
5848     /* 01 */ DECODE_OPS_DEFAULT_32,
5849     /* 02 */ DECODE_OPS_FORCE_64,
5850     /* 03 */ DECODE_OPS_DEFAULT_32,
5851     /* 04 */ DECODE_OPS_FORCE_64,
5852     /* 05 */ DECODE_OPS_DEFAULT_32,
5853     /* 06 */ DECODE_OPS_DEFAULT_64,
5854     /* 07 */ DECODE_OPS_DEFAULT_32,
5855   },
5856   /* group 6 */
5857   {
5858     /* 00 */ DECODE_OPS_DEFAULT_32,
5859     /* 01 */ DECODE_OPS_DEFAULT_32,
5860     /* 02 */ DECODE_OPS_DEFAULT_32,
5861     /* 03 */ DECODE_OPS_DEFAULT_32,
5862     /* 04 */ DECODE_OPS_DEFAULT_32,
5863     /* 05 */ DECODE_OPS_DEFAULT_32,
5864     /* 06 */ DECODE_OPS_DEFAULT_32,
5865     /* 07 */ DECODE_OPS_DEFAULT_32,
5866   },
5867   /* group 7 */
5868   {
5869     /* 00 */ DECODE_OPS_DEFAULT_32,
5870     /* 01 */ DECODE_OPS_DEFAULT_32,
5871     /* 02 */ DECODE_OPS_DEFAULT_32,
5872     /* 03 */ DECODE_OPS_DEFAULT_32,
5873     /* 04 */ DECODE_OPS_DEFAULT_32,
5874     /* 05 */ DECODE_OPS_DEFAULT_32,
5875     /* 06 */ DECODE_OPS_DEFAULT_32,
5876     /* 07 */ DECODE_OPS_DEFAULT_32,
5877   },
5878   /* group 8 */
5879   {
5880     /* 00 */ DECODE_OPS_DEFAULT_32,
5881     /* 01 */ DECODE_OPS_DEFAULT_32,
5882     /* 02 */ DECODE_OPS_DEFAULT_32,
5883     /* 03 */ DECODE_OPS_DEFAULT_32,
5884     /* 04 */ DECODE_OPS_DEFAULT_32,
5885     /* 05 */ DECODE_OPS_DEFAULT_32,
5886     /* 06 */ DECODE_OPS_DEFAULT_32,
5887     /* 07 */ DECODE_OPS_DEFAULT_32,
5888   },
5889   /* group 9 */
5890   {
5891     /* 00 */ DECODE_OPS_DEFAULT_32,
5892     /* 01 */ DECODE_OPS_DEFAULT_32,
5893     /* 02 */ DECODE_OPS_DEFAULT_32,
5894     /* 03 */ DECODE_OPS_DEFAULT_32,
5895     /* 04 */ DECODE_OPS_DEFAULT_32,
5896     /* 05 */ DECODE_OPS_DEFAULT_32,
5897     /* 06 */ DECODE_OPS_DEFAULT_32,
5898     /* 07 */ DECODE_OPS_DEFAULT_32,
5899   },
5900   /* group 10 */
5901   {
5902     /* 00 */ DECODE_OPS_DEFAULT_32,
5903     /* 01 */ DECODE_OPS_DEFAULT_32,
5904     /* 02 */ DECODE_OPS_DEFAULT_32,
5905     /* 03 */ DECODE_OPS_DEFAULT_32,
5906     /* 04 */ DECODE_OPS_DEFAULT_32,
5907     /* 05 */ DECODE_OPS_DEFAULT_32,
5908     /* 06 */ DECODE_OPS_DEFAULT_32,
5909     /* 07 */ DECODE_OPS_DEFAULT_32,
5910   },
5911   /* group 11 */
5912   {
5913     /* 00 */ DECODE_OPS_DEFAULT_32,
5914     /* 01 */ DECODE_OPS_DEFAULT_32,
5915     /* 02 */ DECODE_OPS_DEFAULT_32,
5916     /* 03 */ DECODE_OPS_DEFAULT_32,
5917     /* 04 */ DECODE_OPS_DEFAULT_32,
5918     /* 05 */ DECODE_OPS_DEFAULT_32,
5919     /* 06 */ DECODE_OPS_DEFAULT_32,
5920     /* 07 */ DECODE_OPS_DEFAULT_32,
5921   },
5922   /* group 12 */
5923   {
5924     /* 00 */ DECODE_OPS_DEFAULT_32,
5925     /* 01 */ DECODE_OPS_DEFAULT_32,
5926     /* 02 */ DECODE_OPS_DEFAULT_32,
5927     /* 03 */ DECODE_OPS_DEFAULT_32,
5928     /* 04 */ DECODE_OPS_DEFAULT_32,
5929     /* 05 */ DECODE_OPS_DEFAULT_32,
5930     /* 06 */ DECODE_OPS_DEFAULT_32,
5931     /* 07 */ DECODE_OPS_DEFAULT_32,
5932   },
5933   /* group 13 */
5934   {
5935     /* 00 */ DECODE_OPS_DEFAULT_32,
5936     /* 01 */ DECODE_OPS_DEFAULT_32,
5937     /* 02 */ DECODE_OPS_DEFAULT_32,
5938     /* 03 */ DECODE_OPS_DEFAULT_32,
5939     /* 04 */ DECODE_OPS_DEFAULT_32,
5940     /* 05 */ DECODE_OPS_DEFAULT_32,
5941     /* 06 */ DECODE_OPS_DEFAULT_32,
5942     /* 07 */ DECODE_OPS_DEFAULT_32,
5943   },
5944   /* group 14 */
5945   {
5946     /* 00 */ DECODE_OPS_DEFAULT_32,
5947     /* 01 */ DECODE_OPS_DEFAULT_32,
5948     /* 02 */ DECODE_OPS_DEFAULT_32,
5949     /* 03 */ DECODE_OPS_DEFAULT_32,
5950     /* 04 */ DECODE_OPS_DEFAULT_32,
5951     /* 05 */ DECODE_OPS_DEFAULT_32,
5952     /* 06 */ DECODE_OPS_DEFAULT_32,
5953     /* 07 */ DECODE_OPS_DEFAULT_32,
5954   },
5955   /* group 15 */
5956   {
5957     /* 00 */ DECODE_OPS_DEFAULT_32,
5958     /* 01 */ DECODE_OPS_DEFAULT_32,
5959     /* 02 */ DECODE_OPS_DEFAULT_32,
5960     /* 03 */ DECODE_OPS_DEFAULT_32,
5961     /* 04 */ DECODE_OPS_DEFAULT_32,
5962     /* 05 */ DECODE_OPS_DEFAULT_32,
5963     /* 06 */ DECODE_OPS_DEFAULT_32,
5964     /* 07 */ DECODE_OPS_DEFAULT_32,
5965   },
5966   /* group 16 */
5967   {
5968     /* 00 */ DECODE_OPS_DEFAULT_32,
5969     /* 01 */ DECODE_OPS_DEFAULT_32,
5970     /* 02 */ DECODE_OPS_DEFAULT_32,
5971     /* 03 */ DECODE_OPS_DEFAULT_32,
5972     /* 04 */ DECODE_OPS_DEFAULT_32,
5973     /* 05 */ DECODE_OPS_DEFAULT_32,
5974     /* 06 */ DECODE_OPS_DEFAULT_32,
5975     /* 07 */ DECODE_OPS_DEFAULT_32,
5976   },
5977   /* group 17 */
5978   {
5979     /* 00 */ DECODE_OPS_DEFAULT_32,
5980     /* 01 */ DECODE_OPS_DEFAULT_32,
5981     /* 02 */ DECODE_OPS_DEFAULT_32,
5982     /* 03 */ DECODE_OPS_DEFAULT_32,
5983     /* 04 */ DECODE_OPS_DEFAULT_32,
5984     /* 05 */ DECODE_OPS_DEFAULT_32,
5985     /* 06 */ DECODE_OPS_DEFAULT_32,
5986     /* 07 */ DECODE_OPS_DEFAULT_32,
5987   },
5988   /* group 18 */
5989   {
5990     /* 00 */ DECODE_OPS_DEFAULT_32,
5991     /* 01 */ DECODE_OPS_DEFAULT_32,
5992     /* 02 */ DECODE_OPS_DEFAULT_32,
5993     /* 03 */ DECODE_OPS_DEFAULT_32,
5994     /* 04 */ DECODE_OPS_DEFAULT_32,
5995     /* 05 */ DECODE_OPS_DEFAULT_32,
5996     /* 06 */ DECODE_OPS_DEFAULT_32,
5997     /* 07 */ DECODE_OPS_DEFAULT_32,
5998   },
5999   /* group 19 */
6000   {
6001     /* 00 */ DECODE_OPS_DEFAULT_32,
6002     /* 01 */ DECODE_OPS_DEFAULT_32,
6003     /* 02 */ DECODE_OPS_DEFAULT_32,
6004     /* 03 */ DECODE_OPS_DEFAULT_32,
6005     /* 04 */ DECODE_OPS_DEFAULT_32,
6006     /* 05 */ DECODE_OPS_DEFAULT_32,
6007     /* 06 */ DECODE_OPS_DEFAULT_32,
6008     /* 07 */ DECODE_OPS_DEFAULT_32,
6009   },
6010 };
6011