1 /*
2  * Copyright (c) 2013-2018, Intel Corporation
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  *  * Redistributions of source code must retain the above copyright notice,
8  *    this list of conditions and the following disclaimer.
9  *  * Redistributions in binary form must reproduce the above copyright notice,
10  *    this list of conditions and the following disclaimer in the documentation
11  *    and/or other materials provided with the distribution.
12  *  * Neither the name of Intel Corporation nor the names of its contributors
13  *    may be used to endorse or promote products derived from this software
14  *    without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  * POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 static uint8_t has_modrm_map_0x0[256] = {
30 /*opcode 0x0*/ PTI_MODRM_TRUE,
31 /*opcode 0x1*/ PTI_MODRM_TRUE,
32 /*opcode 0x2*/ PTI_MODRM_TRUE,
33 /*opcode 0x3*/ PTI_MODRM_TRUE,
34 /*opcode 0x4*/ PTI_MODRM_FALSE,
35 /*opcode 0x5*/ PTI_MODRM_FALSE,
36 /*opcode 0x6*/ PTI_MODRM_FALSE,
37 /*opcode 0x7*/ PTI_MODRM_FALSE,
38 /*opcode 0x8*/ PTI_MODRM_TRUE,
39 /*opcode 0x9*/ PTI_MODRM_TRUE,
40 /*opcode 0xa*/ PTI_MODRM_TRUE,
41 /*opcode 0xb*/ PTI_MODRM_TRUE,
42 /*opcode 0xc*/ PTI_MODRM_FALSE,
43 /*opcode 0xd*/ PTI_MODRM_FALSE,
44 /*opcode 0xe*/ PTI_MODRM_FALSE,
45 /*opcode 0xf*/ PTI_MODRM_UNDEF,
46 /*opcode 0x10*/ PTI_MODRM_TRUE,
47 /*opcode 0x11*/ PTI_MODRM_TRUE,
48 /*opcode 0x12*/ PTI_MODRM_TRUE,
49 /*opcode 0x13*/ PTI_MODRM_TRUE,
50 /*opcode 0x14*/ PTI_MODRM_FALSE,
51 /*opcode 0x15*/ PTI_MODRM_FALSE,
52 /*opcode 0x16*/ PTI_MODRM_FALSE,
53 /*opcode 0x17*/ PTI_MODRM_FALSE,
54 /*opcode 0x18*/ PTI_MODRM_TRUE,
55 /*opcode 0x19*/ PTI_MODRM_TRUE,
56 /*opcode 0x1a*/ PTI_MODRM_TRUE,
57 /*opcode 0x1b*/ PTI_MODRM_TRUE,
58 /*opcode 0x1c*/ PTI_MODRM_FALSE,
59 /*opcode 0x1d*/ PTI_MODRM_FALSE,
60 /*opcode 0x1e*/ PTI_MODRM_FALSE,
61 /*opcode 0x1f*/ PTI_MODRM_FALSE,
62 /*opcode 0x20*/ PTI_MODRM_TRUE,
63 /*opcode 0x21*/ PTI_MODRM_TRUE,
64 /*opcode 0x22*/ PTI_MODRM_TRUE,
65 /*opcode 0x23*/ PTI_MODRM_TRUE,
66 /*opcode 0x24*/ PTI_MODRM_FALSE,
67 /*opcode 0x25*/ PTI_MODRM_FALSE,
68 /*opcode 0x26*/ PTI_MODRM_UNDEF,
69 /*opcode 0x27*/ PTI_MODRM_FALSE,
70 /*opcode 0x28*/ PTI_MODRM_TRUE,
71 /*opcode 0x29*/ PTI_MODRM_TRUE,
72 /*opcode 0x2a*/ PTI_MODRM_TRUE,
73 /*opcode 0x2b*/ PTI_MODRM_TRUE,
74 /*opcode 0x2c*/ PTI_MODRM_FALSE,
75 /*opcode 0x2d*/ PTI_MODRM_FALSE,
76 /*opcode 0x2e*/ PTI_MODRM_UNDEF,
77 /*opcode 0x2f*/ PTI_MODRM_FALSE,
78 /*opcode 0x30*/ PTI_MODRM_TRUE,
79 /*opcode 0x31*/ PTI_MODRM_TRUE,
80 /*opcode 0x32*/ PTI_MODRM_TRUE,
81 /*opcode 0x33*/ PTI_MODRM_TRUE,
82 /*opcode 0x34*/ PTI_MODRM_FALSE,
83 /*opcode 0x35*/ PTI_MODRM_FALSE,
84 /*opcode 0x36*/ PTI_MODRM_UNDEF,
85 /*opcode 0x37*/ PTI_MODRM_FALSE,
86 /*opcode 0x38*/ PTI_MODRM_TRUE,
87 /*opcode 0x39*/ PTI_MODRM_TRUE,
88 /*opcode 0x3a*/ PTI_MODRM_TRUE,
89 /*opcode 0x3b*/ PTI_MODRM_TRUE,
90 /*opcode 0x3c*/ PTI_MODRM_FALSE,
91 /*opcode 0x3d*/ PTI_MODRM_FALSE,
92 /*opcode 0x3e*/ PTI_MODRM_UNDEF,
93 /*opcode 0x3f*/ PTI_MODRM_FALSE,
94 /*opcode 0x40*/ PTI_MODRM_FALSE,
95 /*opcode 0x41*/ PTI_MODRM_FALSE,
96 /*opcode 0x42*/ PTI_MODRM_FALSE,
97 /*opcode 0x43*/ PTI_MODRM_FALSE,
98 /*opcode 0x44*/ PTI_MODRM_FALSE,
99 /*opcode 0x45*/ PTI_MODRM_FALSE,
100 /*opcode 0x46*/ PTI_MODRM_FALSE,
101 /*opcode 0x47*/ PTI_MODRM_FALSE,
102 /*opcode 0x48*/ PTI_MODRM_FALSE,
103 /*opcode 0x49*/ PTI_MODRM_FALSE,
104 /*opcode 0x4a*/ PTI_MODRM_FALSE,
105 /*opcode 0x4b*/ PTI_MODRM_FALSE,
106 /*opcode 0x4c*/ PTI_MODRM_FALSE,
107 /*opcode 0x4d*/ PTI_MODRM_FALSE,
108 /*opcode 0x4e*/ PTI_MODRM_FALSE,
109 /*opcode 0x4f*/ PTI_MODRM_FALSE,
110 /*opcode 0x50*/ PTI_MODRM_FALSE,
111 /*opcode 0x51*/ PTI_MODRM_FALSE,
112 /*opcode 0x52*/ PTI_MODRM_FALSE,
113 /*opcode 0x53*/ PTI_MODRM_FALSE,
114 /*opcode 0x54*/ PTI_MODRM_FALSE,
115 /*opcode 0x55*/ PTI_MODRM_FALSE,
116 /*opcode 0x56*/ PTI_MODRM_FALSE,
117 /*opcode 0x57*/ PTI_MODRM_FALSE,
118 /*opcode 0x58*/ PTI_MODRM_FALSE,
119 /*opcode 0x59*/ PTI_MODRM_FALSE,
120 /*opcode 0x5a*/ PTI_MODRM_FALSE,
121 /*opcode 0x5b*/ PTI_MODRM_FALSE,
122 /*opcode 0x5c*/ PTI_MODRM_FALSE,
123 /*opcode 0x5d*/ PTI_MODRM_FALSE,
124 /*opcode 0x5e*/ PTI_MODRM_FALSE,
125 /*opcode 0x5f*/ PTI_MODRM_FALSE,
126 /*opcode 0x60*/ PTI_MODRM_FALSE,
127 /*opcode 0x61*/ PTI_MODRM_FALSE,
128 /*opcode 0x62*/ PTI_MODRM_TRUE,
129 /*opcode 0x63*/ PTI_MODRM_TRUE,
130 /*opcode 0x64*/ PTI_MODRM_UNDEF,
131 /*opcode 0x65*/ PTI_MODRM_UNDEF,
132 /*opcode 0x66*/ PTI_MODRM_UNDEF,
133 /*opcode 0x67*/ PTI_MODRM_UNDEF,
134 /*opcode 0x68*/ PTI_MODRM_FALSE,
135 /*opcode 0x69*/ PTI_MODRM_TRUE,
136 /*opcode 0x6a*/ PTI_MODRM_FALSE,
137 /*opcode 0x6b*/ PTI_MODRM_TRUE,
138 /*opcode 0x6c*/ PTI_MODRM_FALSE,
139 /*opcode 0x6d*/ PTI_MODRM_FALSE,
140 /*opcode 0x6e*/ PTI_MODRM_FALSE,
141 /*opcode 0x6f*/ PTI_MODRM_FALSE,
142 /*opcode 0x70*/ PTI_MODRM_FALSE,
143 /*opcode 0x71*/ PTI_MODRM_FALSE,
144 /*opcode 0x72*/ PTI_MODRM_FALSE,
145 /*opcode 0x73*/ PTI_MODRM_FALSE,
146 /*opcode 0x74*/ PTI_MODRM_FALSE,
147 /*opcode 0x75*/ PTI_MODRM_FALSE,
148 /*opcode 0x76*/ PTI_MODRM_FALSE,
149 /*opcode 0x77*/ PTI_MODRM_FALSE,
150 /*opcode 0x78*/ PTI_MODRM_FALSE,
151 /*opcode 0x79*/ PTI_MODRM_FALSE,
152 /*opcode 0x7a*/ PTI_MODRM_FALSE,
153 /*opcode 0x7b*/ PTI_MODRM_FALSE,
154 /*opcode 0x7c*/ PTI_MODRM_FALSE,
155 /*opcode 0x7d*/ PTI_MODRM_FALSE,
156 /*opcode 0x7e*/ PTI_MODRM_FALSE,
157 /*opcode 0x7f*/ PTI_MODRM_FALSE,
158 /*opcode 0x80*/ PTI_MODRM_TRUE,
159 /*opcode 0x81*/ PTI_MODRM_TRUE,
160 /*opcode 0x82*/ PTI_MODRM_TRUE,
161 /*opcode 0x83*/ PTI_MODRM_TRUE,
162 /*opcode 0x84*/ PTI_MODRM_TRUE,
163 /*opcode 0x85*/ PTI_MODRM_TRUE,
164 /*opcode 0x86*/ PTI_MODRM_TRUE,
165 /*opcode 0x87*/ PTI_MODRM_TRUE,
166 /*opcode 0x88*/ PTI_MODRM_TRUE,
167 /*opcode 0x89*/ PTI_MODRM_TRUE,
168 /*opcode 0x8a*/ PTI_MODRM_TRUE,
169 /*opcode 0x8b*/ PTI_MODRM_TRUE,
170 /*opcode 0x8c*/ PTI_MODRM_TRUE,
171 /*opcode 0x8d*/ PTI_MODRM_TRUE,
172 /*opcode 0x8e*/ PTI_MODRM_TRUE,
173 /*opcode 0x8f*/ PTI_MODRM_TRUE,
174 /*opcode 0x90*/ PTI_MODRM_FALSE,
175 /*opcode 0x91*/ PTI_MODRM_FALSE,
176 /*opcode 0x92*/ PTI_MODRM_FALSE,
177 /*opcode 0x93*/ PTI_MODRM_FALSE,
178 /*opcode 0x94*/ PTI_MODRM_FALSE,
179 /*opcode 0x95*/ PTI_MODRM_FALSE,
180 /*opcode 0x96*/ PTI_MODRM_FALSE,
181 /*opcode 0x97*/ PTI_MODRM_FALSE,
182 /*opcode 0x98*/ PTI_MODRM_FALSE,
183 /*opcode 0x99*/ PTI_MODRM_FALSE,
184 /*opcode 0x9a*/ PTI_MODRM_FALSE,
185 /*opcode 0x9b*/ PTI_MODRM_FALSE,
186 /*opcode 0x9c*/ PTI_MODRM_FALSE,
187 /*opcode 0x9d*/ PTI_MODRM_FALSE,
188 /*opcode 0x9e*/ PTI_MODRM_FALSE,
189 /*opcode 0x9f*/ PTI_MODRM_FALSE,
190 /*opcode 0xa0*/ PTI_MODRM_FALSE,
191 /*opcode 0xa1*/ PTI_MODRM_FALSE,
192 /*opcode 0xa2*/ PTI_MODRM_FALSE,
193 /*opcode 0xa3*/ PTI_MODRM_FALSE,
194 /*opcode 0xa4*/ PTI_MODRM_FALSE,
195 /*opcode 0xa5*/ PTI_MODRM_FALSE,
196 /*opcode 0xa6*/ PTI_MODRM_FALSE,
197 /*opcode 0xa7*/ PTI_MODRM_FALSE,
198 /*opcode 0xa8*/ PTI_MODRM_FALSE,
199 /*opcode 0xa9*/ PTI_MODRM_FALSE,
200 /*opcode 0xaa*/ PTI_MODRM_FALSE,
201 /*opcode 0xab*/ PTI_MODRM_FALSE,
202 /*opcode 0xac*/ PTI_MODRM_FALSE,
203 /*opcode 0xad*/ PTI_MODRM_FALSE,
204 /*opcode 0xae*/ PTI_MODRM_FALSE,
205 /*opcode 0xaf*/ PTI_MODRM_FALSE,
206 /*opcode 0xb0*/ PTI_MODRM_FALSE,
207 /*opcode 0xb1*/ PTI_MODRM_FALSE,
208 /*opcode 0xb2*/ PTI_MODRM_FALSE,
209 /*opcode 0xb3*/ PTI_MODRM_FALSE,
210 /*opcode 0xb4*/ PTI_MODRM_FALSE,
211 /*opcode 0xb5*/ PTI_MODRM_FALSE,
212 /*opcode 0xb6*/ PTI_MODRM_FALSE,
213 /*opcode 0xb7*/ PTI_MODRM_FALSE,
214 /*opcode 0xb8*/ PTI_MODRM_FALSE,
215 /*opcode 0xb9*/ PTI_MODRM_FALSE,
216 /*opcode 0xba*/ PTI_MODRM_FALSE,
217 /*opcode 0xbb*/ PTI_MODRM_FALSE,
218 /*opcode 0xbc*/ PTI_MODRM_FALSE,
219 /*opcode 0xbd*/ PTI_MODRM_FALSE,
220 /*opcode 0xbe*/ PTI_MODRM_FALSE,
221 /*opcode 0xbf*/ PTI_MODRM_FALSE,
222 /*opcode 0xc0*/ PTI_MODRM_TRUE,
223 /*opcode 0xc1*/ PTI_MODRM_TRUE,
224 /*opcode 0xc2*/ PTI_MODRM_FALSE,
225 /*opcode 0xc3*/ PTI_MODRM_FALSE,
226 /*opcode 0xc4*/ PTI_MODRM_TRUE,
227 /*opcode 0xc5*/ PTI_MODRM_TRUE,
228 /*opcode 0xc6*/ PTI_MODRM_TRUE,
229 /*opcode 0xc7*/ PTI_MODRM_TRUE,
230 /*opcode 0xc8*/ PTI_MODRM_FALSE,
231 /*opcode 0xc9*/ PTI_MODRM_FALSE,
232 /*opcode 0xca*/ PTI_MODRM_FALSE,
233 /*opcode 0xcb*/ PTI_MODRM_FALSE,
234 /*opcode 0xcc*/ PTI_MODRM_FALSE,
235 /*opcode 0xcd*/ PTI_MODRM_FALSE,
236 /*opcode 0xce*/ PTI_MODRM_FALSE,
237 /*opcode 0xcf*/ PTI_MODRM_FALSE,
238 /*opcode 0xd0*/ PTI_MODRM_TRUE,
239 /*opcode 0xd1*/ PTI_MODRM_TRUE,
240 /*opcode 0xd2*/ PTI_MODRM_TRUE,
241 /*opcode 0xd3*/ PTI_MODRM_TRUE,
242 /*opcode 0xd4*/ PTI_MODRM_FALSE,
243 /*opcode 0xd5*/ PTI_MODRM_FALSE,
244 /*opcode 0xd6*/ PTI_MODRM_FALSE,
245 /*opcode 0xd7*/ PTI_MODRM_FALSE,
246 /*opcode 0xd8*/ PTI_MODRM_TRUE,
247 /*opcode 0xd9*/ PTI_MODRM_TRUE,
248 /*opcode 0xda*/ PTI_MODRM_TRUE,
249 /*opcode 0xdb*/ PTI_MODRM_TRUE,
250 /*opcode 0xdc*/ PTI_MODRM_TRUE,
251 /*opcode 0xdd*/ PTI_MODRM_TRUE,
252 /*opcode 0xde*/ PTI_MODRM_TRUE,
253 /*opcode 0xdf*/ PTI_MODRM_TRUE,
254 /*opcode 0xe0*/ PTI_MODRM_FALSE,
255 /*opcode 0xe1*/ PTI_MODRM_FALSE,
256 /*opcode 0xe2*/ PTI_MODRM_FALSE,
257 /*opcode 0xe3*/ PTI_MODRM_FALSE,
258 /*opcode 0xe4*/ PTI_MODRM_FALSE,
259 /*opcode 0xe5*/ PTI_MODRM_FALSE,
260 /*opcode 0xe6*/ PTI_MODRM_FALSE,
261 /*opcode 0xe7*/ PTI_MODRM_FALSE,
262 /*opcode 0xe8*/ PTI_MODRM_FALSE,
263 /*opcode 0xe9*/ PTI_MODRM_FALSE,
264 /*opcode 0xea*/ PTI_MODRM_FALSE,
265 /*opcode 0xeb*/ PTI_MODRM_FALSE,
266 /*opcode 0xec*/ PTI_MODRM_FALSE,
267 /*opcode 0xed*/ PTI_MODRM_FALSE,
268 /*opcode 0xee*/ PTI_MODRM_FALSE,
269 /*opcode 0xef*/ PTI_MODRM_FALSE,
270 /*opcode 0xf0*/ PTI_MODRM_UNDEF,
271 /*opcode 0xf1*/ PTI_MODRM_FALSE,
272 /*opcode 0xf2*/ PTI_MODRM_UNDEF,
273 /*opcode 0xf3*/ PTI_MODRM_UNDEF,
274 /*opcode 0xf4*/ PTI_MODRM_FALSE,
275 /*opcode 0xf5*/ PTI_MODRM_FALSE,
276 /*opcode 0xf6*/ PTI_MODRM_TRUE,
277 /*opcode 0xf7*/ PTI_MODRM_TRUE,
278 /*opcode 0xf8*/ PTI_MODRM_FALSE,
279 /*opcode 0xf9*/ PTI_MODRM_FALSE,
280 /*opcode 0xfa*/ PTI_MODRM_FALSE,
281 /*opcode 0xfb*/ PTI_MODRM_FALSE,
282 /*opcode 0xfc*/ PTI_MODRM_FALSE,
283 /*opcode 0xfd*/ PTI_MODRM_FALSE,
284 /*opcode 0xfe*/ PTI_MODRM_TRUE,
285 /*opcode 0xff*/ PTI_MODRM_TRUE,
286 };
287 static uint8_t has_modrm_map_0x0F[256] = {
288 /*opcode 0x0*/ PTI_MODRM_TRUE,
289 /*opcode 0x1*/ PTI_MODRM_TRUE,
290 /*opcode 0x2*/ PTI_MODRM_TRUE,
291 /*opcode 0x3*/ PTI_MODRM_TRUE,
292 /*opcode 0x4*/ PTI_MODRM_UNDEF,
293 /*opcode 0x5*/ PTI_MODRM_FALSE,
294 /*opcode 0x6*/ PTI_MODRM_FALSE,
295 /*opcode 0x7*/ PTI_MODRM_FALSE,
296 /*opcode 0x8*/ PTI_MODRM_FALSE,
297 /*opcode 0x9*/ PTI_MODRM_FALSE,
298 /*opcode 0xa*/ PTI_MODRM_UNDEF,
299 /*opcode 0xb*/ PTI_MODRM_FALSE,
300 /*opcode 0xc*/ PTI_MODRM_UNDEF,
301 /*opcode 0xd*/ PTI_MODRM_TRUE,
302 /*opcode 0xe*/ PTI_MODRM_FALSE,
303 /*opcode 0xf*/ PTI_MODRM_UNDEF,
304 /*opcode 0x10*/ PTI_MODRM_TRUE,
305 /*opcode 0x11*/ PTI_MODRM_TRUE,
306 /*opcode 0x12*/ PTI_MODRM_TRUE,
307 /*opcode 0x13*/ PTI_MODRM_TRUE,
308 /*opcode 0x14*/ PTI_MODRM_TRUE,
309 /*opcode 0x15*/ PTI_MODRM_TRUE,
310 /*opcode 0x16*/ PTI_MODRM_TRUE,
311 /*opcode 0x17*/ PTI_MODRM_TRUE,
312 /*opcode 0x18*/ PTI_MODRM_TRUE,
313 /*opcode 0x19*/ PTI_MODRM_TRUE,
314 /*opcode 0x1a*/ PTI_MODRM_TRUE,
315 /*opcode 0x1b*/ PTI_MODRM_TRUE,
316 /*opcode 0x1c*/ PTI_MODRM_TRUE,
317 /*opcode 0x1d*/ PTI_MODRM_TRUE,
318 /*opcode 0x1e*/ PTI_MODRM_TRUE,
319 /*opcode 0x1f*/ PTI_MODRM_TRUE,
320 /*opcode 0x20*/ PTI_MODRM_IGNORE_MOD,
321 /*opcode 0x21*/ PTI_MODRM_IGNORE_MOD,
322 /*opcode 0x22*/ PTI_MODRM_IGNORE_MOD,
323 /*opcode 0x23*/ PTI_MODRM_IGNORE_MOD,
324 /*opcode 0x24*/ PTI_MODRM_UNDEF,
325 /*opcode 0x25*/ PTI_MODRM_UNDEF,
326 /*opcode 0x26*/ PTI_MODRM_UNDEF,
327 /*opcode 0x27*/ PTI_MODRM_UNDEF,
328 /*opcode 0x28*/ PTI_MODRM_TRUE,
329 /*opcode 0x29*/ PTI_MODRM_TRUE,
330 /*opcode 0x2a*/ PTI_MODRM_TRUE,
331 /*opcode 0x2b*/ PTI_MODRM_TRUE,
332 /*opcode 0x2c*/ PTI_MODRM_TRUE,
333 /*opcode 0x2d*/ PTI_MODRM_TRUE,
334 /*opcode 0x2e*/ PTI_MODRM_TRUE,
335 /*opcode 0x2f*/ PTI_MODRM_TRUE,
336 /*opcode 0x30*/ PTI_MODRM_FALSE,
337 /*opcode 0x31*/ PTI_MODRM_FALSE,
338 /*opcode 0x32*/ PTI_MODRM_FALSE,
339 /*opcode 0x33*/ PTI_MODRM_FALSE,
340 /*opcode 0x34*/ PTI_MODRM_FALSE,
341 /*opcode 0x35*/ PTI_MODRM_FALSE,
342 /*opcode 0x36*/ PTI_MODRM_UNDEF,
343 /*opcode 0x37*/ PTI_MODRM_FALSE,
344 /*opcode 0x38*/ PTI_MODRM_UNDEF,
345 /*opcode 0x39*/ PTI_MODRM_UNDEF,
346 /*opcode 0x3a*/ PTI_MODRM_UNDEF,
347 /*opcode 0x3b*/ PTI_MODRM_UNDEF,
348 /*opcode 0x3c*/ PTI_MODRM_UNDEF,
349 /*opcode 0x3d*/ PTI_MODRM_UNDEF,
350 /*opcode 0x3e*/ PTI_MODRM_UNDEF,
351 /*opcode 0x3f*/ PTI_MODRM_UNDEF,
352 /*opcode 0x40*/ PTI_MODRM_TRUE,
353 /*opcode 0x41*/ PTI_MODRM_TRUE,
354 /*opcode 0x42*/ PTI_MODRM_TRUE,
355 /*opcode 0x43*/ PTI_MODRM_TRUE,
356 /*opcode 0x44*/ PTI_MODRM_TRUE,
357 /*opcode 0x45*/ PTI_MODRM_TRUE,
358 /*opcode 0x46*/ PTI_MODRM_TRUE,
359 /*opcode 0x47*/ PTI_MODRM_TRUE,
360 /*opcode 0x48*/ PTI_MODRM_TRUE,
361 /*opcode 0x49*/ PTI_MODRM_TRUE,
362 /*opcode 0x4a*/ PTI_MODRM_TRUE,
363 /*opcode 0x4b*/ PTI_MODRM_TRUE,
364 /*opcode 0x4c*/ PTI_MODRM_TRUE,
365 /*opcode 0x4d*/ PTI_MODRM_TRUE,
366 /*opcode 0x4e*/ PTI_MODRM_TRUE,
367 /*opcode 0x4f*/ PTI_MODRM_TRUE,
368 /*opcode 0x50*/ PTI_MODRM_TRUE,
369 /*opcode 0x51*/ PTI_MODRM_TRUE,
370 /*opcode 0x52*/ PTI_MODRM_TRUE,
371 /*opcode 0x53*/ PTI_MODRM_TRUE,
372 /*opcode 0x54*/ PTI_MODRM_TRUE,
373 /*opcode 0x55*/ PTI_MODRM_TRUE,
374 /*opcode 0x56*/ PTI_MODRM_TRUE,
375 /*opcode 0x57*/ PTI_MODRM_TRUE,
376 /*opcode 0x58*/ PTI_MODRM_TRUE,
377 /*opcode 0x59*/ PTI_MODRM_TRUE,
378 /*opcode 0x5a*/ PTI_MODRM_TRUE,
379 /*opcode 0x5b*/ PTI_MODRM_TRUE,
380 /*opcode 0x5c*/ PTI_MODRM_TRUE,
381 /*opcode 0x5d*/ PTI_MODRM_TRUE,
382 /*opcode 0x5e*/ PTI_MODRM_TRUE,
383 /*opcode 0x5f*/ PTI_MODRM_TRUE,
384 /*opcode 0x60*/ PTI_MODRM_TRUE,
385 /*opcode 0x61*/ PTI_MODRM_TRUE,
386 /*opcode 0x62*/ PTI_MODRM_TRUE,
387 /*opcode 0x63*/ PTI_MODRM_TRUE,
388 /*opcode 0x64*/ PTI_MODRM_TRUE,
389 /*opcode 0x65*/ PTI_MODRM_TRUE,
390 /*opcode 0x66*/ PTI_MODRM_TRUE,
391 /*opcode 0x67*/ PTI_MODRM_TRUE,
392 /*opcode 0x68*/ PTI_MODRM_TRUE,
393 /*opcode 0x69*/ PTI_MODRM_TRUE,
394 /*opcode 0x6a*/ PTI_MODRM_TRUE,
395 /*opcode 0x6b*/ PTI_MODRM_TRUE,
396 /*opcode 0x6c*/ PTI_MODRM_TRUE,
397 /*opcode 0x6d*/ PTI_MODRM_TRUE,
398 /*opcode 0x6e*/ PTI_MODRM_TRUE,
399 /*opcode 0x6f*/ PTI_MODRM_TRUE,
400 /*opcode 0x70*/ PTI_MODRM_TRUE,
401 /*opcode 0x71*/ PTI_MODRM_TRUE,
402 /*opcode 0x72*/ PTI_MODRM_TRUE,
403 /*opcode 0x73*/ PTI_MODRM_TRUE,
404 /*opcode 0x74*/ PTI_MODRM_TRUE,
405 /*opcode 0x75*/ PTI_MODRM_TRUE,
406 /*opcode 0x76*/ PTI_MODRM_TRUE,
407 /*opcode 0x77*/ PTI_MODRM_FALSE,
408 /*opcode 0x78*/ PTI_MODRM_TRUE,
409 /*opcode 0x79*/ PTI_MODRM_TRUE,
410 /*opcode 0x7a*/ PTI_MODRM_TRUE,
411 /*opcode 0x7b*/ PTI_MODRM_TRUE,
412 /*opcode 0x7c*/ PTI_MODRM_TRUE,
413 /*opcode 0x7d*/ PTI_MODRM_TRUE,
414 /*opcode 0x7e*/ PTI_MODRM_TRUE,
415 /*opcode 0x7f*/ PTI_MODRM_TRUE,
416 /*opcode 0x80*/ PTI_MODRM_FALSE,
417 /*opcode 0x81*/ PTI_MODRM_FALSE,
418 /*opcode 0x82*/ PTI_MODRM_FALSE,
419 /*opcode 0x83*/ PTI_MODRM_FALSE,
420 /*opcode 0x84*/ PTI_MODRM_FALSE,
421 /*opcode 0x85*/ PTI_MODRM_FALSE,
422 /*opcode 0x86*/ PTI_MODRM_FALSE,
423 /*opcode 0x87*/ PTI_MODRM_FALSE,
424 /*opcode 0x88*/ PTI_MODRM_FALSE,
425 /*opcode 0x89*/ PTI_MODRM_FALSE,
426 /*opcode 0x8a*/ PTI_MODRM_FALSE,
427 /*opcode 0x8b*/ PTI_MODRM_FALSE,
428 /*opcode 0x8c*/ PTI_MODRM_FALSE,
429 /*opcode 0x8d*/ PTI_MODRM_FALSE,
430 /*opcode 0x8e*/ PTI_MODRM_FALSE,
431 /*opcode 0x8f*/ PTI_MODRM_FALSE,
432 /*opcode 0x90*/ PTI_MODRM_TRUE,
433 /*opcode 0x91*/ PTI_MODRM_TRUE,
434 /*opcode 0x92*/ PTI_MODRM_TRUE,
435 /*opcode 0x93*/ PTI_MODRM_TRUE,
436 /*opcode 0x94*/ PTI_MODRM_TRUE,
437 /*opcode 0x95*/ PTI_MODRM_TRUE,
438 /*opcode 0x96*/ PTI_MODRM_TRUE,
439 /*opcode 0x97*/ PTI_MODRM_TRUE,
440 /*opcode 0x98*/ PTI_MODRM_TRUE,
441 /*opcode 0x99*/ PTI_MODRM_TRUE,
442 /*opcode 0x9a*/ PTI_MODRM_TRUE,
443 /*opcode 0x9b*/ PTI_MODRM_TRUE,
444 /*opcode 0x9c*/ PTI_MODRM_TRUE,
445 /*opcode 0x9d*/ PTI_MODRM_TRUE,
446 /*opcode 0x9e*/ PTI_MODRM_TRUE,
447 /*opcode 0x9f*/ PTI_MODRM_TRUE,
448 /*opcode 0xa0*/ PTI_MODRM_FALSE,
449 /*opcode 0xa1*/ PTI_MODRM_FALSE,
450 /*opcode 0xa2*/ PTI_MODRM_FALSE,
451 /*opcode 0xa3*/ PTI_MODRM_TRUE,
452 /*opcode 0xa4*/ PTI_MODRM_TRUE,
453 /*opcode 0xa5*/ PTI_MODRM_TRUE,
454 /*opcode 0xa6*/ PTI_MODRM_UNDEF,
455 /*opcode 0xa7*/ PTI_MODRM_UNDEF,
456 /*opcode 0xa8*/ PTI_MODRM_FALSE,
457 /*opcode 0xa9*/ PTI_MODRM_FALSE,
458 /*opcode 0xaa*/ PTI_MODRM_FALSE,
459 /*opcode 0xab*/ PTI_MODRM_TRUE,
460 /*opcode 0xac*/ PTI_MODRM_TRUE,
461 /*opcode 0xad*/ PTI_MODRM_TRUE,
462 /*opcode 0xae*/ PTI_MODRM_TRUE,
463 /*opcode 0xaf*/ PTI_MODRM_TRUE,
464 /*opcode 0xb0*/ PTI_MODRM_TRUE,
465 /*opcode 0xb1*/ PTI_MODRM_TRUE,
466 /*opcode 0xb2*/ PTI_MODRM_TRUE,
467 /*opcode 0xb3*/ PTI_MODRM_TRUE,
468 /*opcode 0xb4*/ PTI_MODRM_TRUE,
469 /*opcode 0xb5*/ PTI_MODRM_TRUE,
470 /*opcode 0xb6*/ PTI_MODRM_TRUE,
471 /*opcode 0xb7*/ PTI_MODRM_TRUE,
472 /*opcode 0xb8*/ PTI_MODRM_TRUE,
473 /*opcode 0xb9*/ PTI_MODRM_UNDEF,
474 /*opcode 0xba*/ PTI_MODRM_TRUE,
475 /*opcode 0xbb*/ PTI_MODRM_TRUE,
476 /*opcode 0xbc*/ PTI_MODRM_TRUE,
477 /*opcode 0xbd*/ PTI_MODRM_TRUE,
478 /*opcode 0xbe*/ PTI_MODRM_TRUE,
479 /*opcode 0xbf*/ PTI_MODRM_TRUE,
480 /*opcode 0xc0*/ PTI_MODRM_TRUE,
481 /*opcode 0xc1*/ PTI_MODRM_TRUE,
482 /*opcode 0xc2*/ PTI_MODRM_TRUE,
483 /*opcode 0xc3*/ PTI_MODRM_TRUE,
484 /*opcode 0xc4*/ PTI_MODRM_TRUE,
485 /*opcode 0xc5*/ PTI_MODRM_TRUE,
486 /*opcode 0xc6*/ PTI_MODRM_TRUE,
487 /*opcode 0xc7*/ PTI_MODRM_TRUE,
488 /*opcode 0xc8*/ PTI_MODRM_FALSE,
489 /*opcode 0xc9*/ PTI_MODRM_FALSE,
490 /*opcode 0xca*/ PTI_MODRM_FALSE,
491 /*opcode 0xcb*/ PTI_MODRM_FALSE,
492 /*opcode 0xcc*/ PTI_MODRM_FALSE,
493 /*opcode 0xcd*/ PTI_MODRM_FALSE,
494 /*opcode 0xce*/ PTI_MODRM_FALSE,
495 /*opcode 0xcf*/ PTI_MODRM_FALSE,
496 /*opcode 0xd0*/ PTI_MODRM_TRUE,
497 /*opcode 0xd1*/ PTI_MODRM_TRUE,
498 /*opcode 0xd2*/ PTI_MODRM_TRUE,
499 /*opcode 0xd3*/ PTI_MODRM_TRUE,
500 /*opcode 0xd4*/ PTI_MODRM_TRUE,
501 /*opcode 0xd5*/ PTI_MODRM_TRUE,
502 /*opcode 0xd6*/ PTI_MODRM_TRUE,
503 /*opcode 0xd7*/ PTI_MODRM_TRUE,
504 /*opcode 0xd8*/ PTI_MODRM_TRUE,
505 /*opcode 0xd9*/ PTI_MODRM_TRUE,
506 /*opcode 0xda*/ PTI_MODRM_TRUE,
507 /*opcode 0xdb*/ PTI_MODRM_TRUE,
508 /*opcode 0xdc*/ PTI_MODRM_TRUE,
509 /*opcode 0xdd*/ PTI_MODRM_TRUE,
510 /*opcode 0xde*/ PTI_MODRM_TRUE,
511 /*opcode 0xdf*/ PTI_MODRM_TRUE,
512 /*opcode 0xe0*/ PTI_MODRM_TRUE,
513 /*opcode 0xe1*/ PTI_MODRM_TRUE,
514 /*opcode 0xe2*/ PTI_MODRM_TRUE,
515 /*opcode 0xe3*/ PTI_MODRM_TRUE,
516 /*opcode 0xe4*/ PTI_MODRM_TRUE,
517 /*opcode 0xe5*/ PTI_MODRM_TRUE,
518 /*opcode 0xe6*/ PTI_MODRM_TRUE,
519 /*opcode 0xe7*/ PTI_MODRM_TRUE,
520 /*opcode 0xe8*/ PTI_MODRM_TRUE,
521 /*opcode 0xe9*/ PTI_MODRM_TRUE,
522 /*opcode 0xea*/ PTI_MODRM_TRUE,
523 /*opcode 0xeb*/ PTI_MODRM_TRUE,
524 /*opcode 0xec*/ PTI_MODRM_TRUE,
525 /*opcode 0xed*/ PTI_MODRM_TRUE,
526 /*opcode 0xee*/ PTI_MODRM_TRUE,
527 /*opcode 0xef*/ PTI_MODRM_TRUE,
528 /*opcode 0xf0*/ PTI_MODRM_TRUE,
529 /*opcode 0xf1*/ PTI_MODRM_TRUE,
530 /*opcode 0xf2*/ PTI_MODRM_TRUE,
531 /*opcode 0xf3*/ PTI_MODRM_TRUE,
532 /*opcode 0xf4*/ PTI_MODRM_TRUE,
533 /*opcode 0xf5*/ PTI_MODRM_TRUE,
534 /*opcode 0xf6*/ PTI_MODRM_TRUE,
535 /*opcode 0xf7*/ PTI_MODRM_TRUE,
536 /*opcode 0xf8*/ PTI_MODRM_TRUE,
537 /*opcode 0xf9*/ PTI_MODRM_TRUE,
538 /*opcode 0xfa*/ PTI_MODRM_TRUE,
539 /*opcode 0xfb*/ PTI_MODRM_TRUE,
540 /*opcode 0xfc*/ PTI_MODRM_TRUE,
541 /*opcode 0xfd*/ PTI_MODRM_TRUE,
542 /*opcode 0xfe*/ PTI_MODRM_TRUE,
543 /*opcode 0xff*/ PTI_MODRM_UNDEF,
544 };
545