• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 {
2   "License": [
3     "Copyright (C) 2023 The Android Open Source Project",
4     "",
5     "Licensed under the Apache License, Version 2.0 (the “License”);",
6     "you may not use this file except in compliance with the License.",
7     "You may obtain a copy of the License at",
8     "",
9     "     http://www.apache.org/licenses/LICENSE-2.0",
10     "",
11     "Unless required by applicable law or agreed to in writing, software",
12     "distributed under the License is distributed on an “AS IS” BASIS,",
13     "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.",
14     "See the License for the specific language governing permissions and",
15     "limitations under the License."
16   ],
17   "arch": "common_x86",
18   "insns": [
19     {
20       "encodings": {
21         "Adcb": { "opcodes": [ "80", "2" ] },
22         "Rclb": { "opcodes": [ "C0", "2" ] },
23         "Rcrb": { "opcodes": [ "C0", "3" ] },
24         "Sbbb": { "opcodes": [ "80", "3" ] }
25       },
26       "args": [
27         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
28         { "class": "Imm8" },
29         { "class": "FLAGS", "usage": "use_def" }
30       ]
31     },
32     {
33       "encodings": {
34         "Adcb": { "opcodes": [ "12" ] },
35         "Sbbb": { "opcodes": [ "1A" ] }
36       },
37       "args": [
38         { "class": "GeneralReg8", "usage": "use_def" },
39         { "class": "Mem8", "usage": "use" },
40         { "class": "FLAGS", "usage": "use_def" }
41       ]
42     },
43     {
44       "encodings": {
45         "Adcb": { "opcodes": [ "10" ], "reg_to_rm": true },
46         "Sbbb": { "opcodes": [ "18" ], "reg_to_rm": true }
47       },
48       "args": [
49         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
50         { "class": "GeneralReg8", "usage": "use" },
51         { "class": "FLAGS", "usage": "use_def" }
52       ]
53     },
54     {
55       "encodings": {
56         "AdcbAccumulator": { "opcodes": [ "14" ] },
57         "SbbbAccumulator": { "opcodes": [ "1C" ] }
58       },
59       "args": [
60         { "class": "AL", "usage": "use_def" },
61         { "class": "Imm8" },
62         { "class": "FLAGS", "usage": "use_def" }
63       ]
64     },
65     {
66       "encodings": {
67         "Adcl": { "opcodes": [ "13" ] },
68         "Sbbl": { "opcodes": [ "1B" ] }
69       },
70       "args": [
71         { "class": "GeneralReg32", "usage": "use_def" },
72         { "class": "Mem32", "usage": "use" },
73         { "class": "FLAGS", "usage": "use_def" }
74       ]
75     },
76     {
77       "encodings": {
78         "Adcl": { "opcodes": [ "81", "2" ] },
79         "Sbbl": { "opcodes": [ "81", "3" ] }
80       },
81       "args": [
82         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
83         { "class": "Imm32" },
84         { "class": "FLAGS", "usage": "use_def" }
85       ]
86     },
87     {
88       "encodings": {
89         "Adcl": { "opcodes": [ "11" ], "reg_to_rm": true },
90         "Sbbl": { "opcodes": [ "19" ], "reg_to_rm": true }
91       },
92       "args": [
93         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
94         { "class": "GeneralReg32", "usage": "use" },
95         { "class": "FLAGS", "usage": "use_def" }
96       ]
97     },
98     {
99       "encodings": {
100         "AdclAccumulator": { "opcodes": [ "15" ] },
101         "SbblAccumulator": { "opcodes": [ "1D" ] }
102       },
103       "args": [
104         { "class": "EAX", "usage": "use_def" },
105         { "class": "Imm32" },
106         { "class": "FLAGS", "usage": "use_def" }
107       ]
108     },
109     {
110       "encodings": {
111         "AdclImm8": { "opcodes": [ "83", "2" ] },
112         "Rcll": { "opcodes": [ "C1", "2" ] },
113         "Rcrl": { "opcodes": [ "C1", "3" ] },
114         "SbblImm8": { "opcodes": [ "83", "3" ] }
115       },
116       "args": [
117         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
118         { "class": "Imm8" },
119         { "class": "FLAGS", "usage": "use_def" }
120       ]
121     },
122     {
123       "encodings": {
124         "Adcw": { "opcodes": [ "66", "13" ] },
125         "Sbbw": { "opcodes": [ "66", "1B" ] }
126       },
127       "args": [
128         { "class": "GeneralReg16", "usage": "use_def" },
129         { "class": "Mem16", "usage": "use" },
130         { "class": "FLAGS", "usage": "use_def" }
131       ]
132     },
133     {
134       "encodings": {
135         "Adcw": { "opcodes": [ "66", "81", "2" ] },
136         "Sbbw": { "opcodes": [ "66", "81", "3" ] }
137       },
138       "args": [
139         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
140         { "class": "Imm16" },
141         { "class": "FLAGS", "usage": "use_def" }
142       ]
143     },
144     {
145       "encodings": {
146         "Adcw": { "opcodes": [ "66", "11" ], "reg_to_rm": true },
147         "Sbbw": { "opcodes": [ "66", "19" ], "reg_to_rm": true }
148       },
149       "args": [
150         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
151         { "class": "GeneralReg16", "usage": "use" },
152         { "class": "FLAGS", "usage": "use_def" }
153       ]
154     },
155     {
156       "encodings": {
157         "AdcwAccumulator": { "opcodes": [ "66", "15" ] },
158         "SbbwAccumulator": { "opcodes": [ "66", "1D" ] }
159       },
160       "args": [
161         { "class": "AX", "usage": "use_def" },
162         { "class": "Imm16" },
163         { "class": "FLAGS", "usage": "use_def" }
164       ]
165     },
166     {
167       "encodings": {
168         "AdcwImm8": { "opcodes": [ "66", "83", "2" ] },
169         "Rclw": { "opcodes": [ "66", "C1", "2" ] },
170         "Rcrw": { "opcodes": [ "66", "C1", "3" ] },
171         "SbbwImm8": { "opcodes": [ "66", "83", "3" ] }
172       },
173       "args": [
174         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
175         { "class": "Imm8" },
176         { "class": "FLAGS", "usage": "use_def" }
177       ]
178     },
179     {
180       "encodings": {
181         "Addb": { "opcodes": [ "80", "0" ] },
182         "Andb": { "opcodes": [ "80", "4" ] },
183         "Orb": { "opcodes": [ "80", "1" ] },
184         "Rolb": { "opcodes": [ "C0", "0" ] },
185         "Rorb": { "opcodes": [ "C0", "1" ] },
186         "Sarb": { "opcodes": [ "C0", "7" ] },
187         "Shlb": { "opcodes": [ "C0", "4" ] },
188         "Shrb": { "opcodes": [ "C0", "5" ] },
189         "Subb": { "opcodes": [ "80", "5" ] },
190         "Xorb": { "opcodes": [ "80", "6" ] }
191       },
192       "args": [
193         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
194         { "class": "Imm8" },
195         { "class": "FLAGS", "usage": "def" }
196       ]
197     },
198     {
199       "encodings": {
200         "Addb": { "opcodes": [ "02" ] },
201         "Andb": { "opcodes": [ "22" ] },
202         "Orb": { "opcodes": [ "0A" ] },
203         "Subb": { "opcodes": [ "2A" ] },
204         "Xorb": { "opcodes": [ "32" ] }
205       },
206       "args": [
207         { "class": "GeneralReg8", "usage": "use_def" },
208         { "class": "Mem8", "usage": "use" },
209         { "class": "FLAGS", "usage": "def" }
210       ]
211     },
212     {
213       "encodings": {
214         "Addb": { "opcodes": [ "00" ], "reg_to_rm": true },
215         "Andb": { "opcodes": [ "20" ], "reg_to_rm": true },
216         "Orb": { "opcodes": [ "08" ], "reg_to_rm": true },
217         "Subb": { "opcodes": [ "28" ], "reg_to_rm": true },
218         "Xorb": { "opcodes": [ "30" ], "reg_to_rm": true }
219       },
220       "args": [
221         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
222         { "class": "GeneralReg8", "usage": "use" },
223         { "class": "FLAGS", "usage": "def" }
224       ]
225     },
226     {
227       "encodings": {
228         "AddbAccumulator": { "opcodes": [ "04" ] },
229         "AndbAccumulator": { "opcodes": [ "24" ] },
230         "OrbAccumulator": { "opcodes": [ "0C" ] },
231         "SubbAccumulator": { "opcodes": [ "2C" ] },
232         "XorbAccumulator": { "opcodes": [ "34" ] }
233       },
234       "args": [
235         { "class": "AL", "usage": "use_def" },
236         { "class": "Imm8" },
237         { "class": "FLAGS", "usage": "def" }
238       ]
239     },
240     {
241       "encodings": {
242         "Addl": { "opcodes": [ "01" ], "reg_to_rm": true },
243         "Andl": { "opcodes": [ "21" ], "reg_to_rm": true },
244         "Btcl": { "opcodes": [ "0F", "BB" ], "reg_to_rm": true },
245         "Btrl": { "opcodes": [ "0F", "B3" ], "reg_to_rm": true },
246         "Btsl": { "opcodes": [ "0F", "AB" ], "reg_to_rm": true },
247         "Orl": { "opcodes": [ "09" ], "reg_to_rm": true },
248         "Subl": { "opcodes": [ "29" ], "reg_to_rm": true },
249         "Xorl": { "opcodes": [ "31" ], "reg_to_rm": true }
250       },
251       "args": [
252         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
253         { "class": "GeneralReg32", "usage": "use" },
254         { "class": "FLAGS", "usage": "def" }
255       ]
256     },
257     {
258       "encodings": {
259         "Addl": { "opcodes": [ "03" ] },
260         "Andl": { "opcodes": [ "23" ] },
261         "Orl": { "opcodes": [ "0B" ] },
262         "Subl": { "opcodes": [ "2B" ] },
263         "Xorl": { "opcodes": [ "33" ] }
264       },
265       "args": [
266         { "class": "GeneralReg32", "usage": "use_def" },
267         { "class": "Mem32", "usage": "use" },
268         { "class": "FLAGS", "usage": "def" }
269       ]
270     },
271     {
272       "encodings": {
273         "Addl": { "opcodes": [ "81", "0" ] },
274         "Andl": { "opcodes": [ "81", "4" ] },
275         "Orl": { "opcodes": [ "81", "1" ] },
276         "Subl": { "opcodes": [ "81", "5" ] },
277         "Xorl": { "opcodes": [ "81", "6" ] }
278       },
279       "args": [
280         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
281         { "class": "Imm32" },
282         { "class": "FLAGS", "usage": "def" }
283       ]
284     },
285     {
286       "encodings": {
287         "AddlAccumulator": { "opcodes": [ "05" ] },
288         "AndlAccumulator": { "opcodes": [ "25" ] },
289         "OrlAccumulator": { "opcodes": [ "0D" ] },
290         "SublAccumulator": { "opcodes": [ "2D" ] },
291         "XorlAccumulator": { "opcodes": [ "35" ] }
292       },
293       "args": [
294         { "class": "EAX", "usage": "use_def" },
295         { "class": "Imm32" },
296         { "class": "FLAGS", "usage": "def" }
297       ]
298     },
299     {
300       "encodings": {
301         "AddlImm8": { "opcodes": [ "83", "0" ] },
302         "AndlImm8": { "opcodes": [ "83", "4" ] },
303         "Btcl": { "opcodes": [ "0F", "BA", "7" ] },
304         "Btl": { "opcodes": [ "0F", "BA", "4" ] },
305         "Btrl": { "opcodes": [ "0F", "BA", "6" ] },
306         "Btsl": { "opcodes": [ "0F", "BA", "5" ] },
307         "OrlImm8": { "opcodes": [ "83", "1" ] },
308         "Roll": { "opcodes": [ "C1", "0" ] },
309         "Rorl": { "opcodes": [ "C1", "1" ] },
310         "Sarl": { "opcodes": [ "C1", "7" ] },
311         "Shll": { "opcodes": [ "C1", "4" ] },
312         "Shrl": { "opcodes": [ "C1", "5" ] },
313         "SublImm8": { "opcodes": [ "83", "5" ] },
314         "XorlImm8": { "opcodes": [ "83", "6" ] }
315       },
316       "args": [
317         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
318         { "class": "Imm8" },
319         { "class": "FLAGS", "usage": "def" }
320       ]
321     },
322     {
323       "encodings": {
324         "Addpd": { "opcodes": [ "66", "0F", "58" ] },
325         "Addps": { "opcodes": [ "0F", "58" ] },
326         "Andpd": { "opcodes": [ "66", "0F", "54" ] },
327         "Andps": { "opcodes": [ "0F", "54" ] },
328         "Cmpeqpd": { "opcodes": [ "66", "0F", "C2", "00" ] },
329         "Cmpeqps": { "opcodes": [ "0F", "C2", "00" ] },
330         "Cmplepd": { "opcodes": [ "66", "0F", "C2", "02" ] },
331         "Cmpleps": { "opcodes": [ "0F", "C2", "02" ] },
332         "Cmpltpd": { "opcodes": [ "66", "0F", "C2", "01" ] },
333         "Cmpltps": { "opcodes": [ "0F", "C2", "01" ] },
334         "Cmpneqpd": { "opcodes": [ "66", "0F", "C2", "04" ] },
335         "Cmpneqps": { "opcodes": [ "0F", "C2", "04" ] },
336         "Cmpnlepd": { "opcodes": [ "66", "0F", "C2", "06" ] },
337         "Cmpnleps": { "opcodes": [ "0F", "C2", "06" ] },
338         "Cmpnltpd": { "opcodes": [ "66", "0F", "C2", "05" ] },
339         "Cmpnltps": { "opcodes": [ "0F", "C2", "05" ] },
340         "Cmpordpd": { "opcodes": [ "66", "0F", "C2", "07" ] },
341         "Cmpordps": { "opcodes": [ "0F", "C2", "07" ] },
342         "Cmpunordpd": { "opcodes": [ "66", "0F", "C2", "03" ] },
343         "Cmpunordps": { "opcodes": [ "0F", "C2", "03" ] },
344         "Divpd": { "opcodes": [ "66", "0F", "5E" ] },
345         "Divps": { "opcodes": [ "0F", "5E" ] },
346         "Haddpd": { "feature": "SSE3", "opcodes": [ "66", "0F", "7C" ] },
347         "Haddps": { "feature": "SSE3", "opcodes": [ "F2", "0F", "7C" ] },
348         "Maxpd": { "opcodes": [ "66", "0F", "5F" ] },
349         "Maxps": { "opcodes": [ "0F", "5F" ] },
350         "Minpd": { "opcodes": [ "66", "0F", "5D" ] },
351         "Minps": { "opcodes": [ "0F", "5D" ] },
352         "Mulpd": { "opcodes": [ "66", "0F", "59" ] },
353         "Mulps": { "opcodes": [ "0F", "59" ] },
354         "Orpd": { "opcodes": [ "66", "0F", "56" ] },
355         "Orps": { "opcodes": [ "0F", "56" ] },
356         "Packssdw": { "opcodes": [ "66", "0F", "6B" ] },
357         "Packsswb": { "opcodes": [ "66", "0F", "63" ] },
358         "Packusdw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "2B" ] },
359         "Packuswb": { "opcodes": [ "66", "0F", "67" ] },
360         "Paddb": { "opcodes": [ "66", "0F", "FC" ] },
361         "Paddd": { "opcodes": [ "66", "0F", "FE" ] },
362         "Paddq": { "opcodes": [ "66", "0F", "D4" ] },
363         "Paddsb": { "opcodes": [ "66", "0F", "EC" ] },
364         "Paddsw": { "opcodes": [ "66", "0F", "ED" ] },
365         "Paddusb": { "opcodes": [ "66", "0F", "DC" ] },
366         "Paddusw": { "opcodes": [ "66", "0F", "DD" ] },
367         "Paddw": { "opcodes": [ "66", "0F", "FD" ] },
368         "Pand": { "opcodes": [ "66", "0F", "DB" ] },
369         "Pandn": { "opcodes": [ "66", "0F", "DF" ] },
370         "Pavgb": { "opcodes": [ "66", "0F", "E0" ] },
371         "Pavgw": { "opcodes": [ "66", "0F", "E3" ] },
372         "Pcmpeqb": { "opcodes": [ "66", "0F", "74" ] },
373         "Pcmpeqd": { "opcodes": [ "66", "0F", "76" ] },
374         "Pcmpeqq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "29" ] },
375         "Pcmpeqw": { "opcodes": [ "66", "0F", "75" ] },
376         "Pcmpgtb": { "opcodes": [ "66", "0F", "64" ] },
377         "Pcmpgtd": { "opcodes": [ "66", "0F", "66" ] },
378         "Pcmpgtq": { "feature": "SSE4_2", "opcodes": [ "66", "0F", "38", "37" ] },
379         "Pcmpgtw": { "opcodes": [ "66", "0F", "65" ] },
380         "Phaddd": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "02" ] },
381         "Phaddw": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "01" ] },
382         "Pmaxsb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3C" ] },
383         "Pmaxsd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3D" ] },
384         "Pmaxsw": { "opcodes": [ "66", "0F", "EE" ] },
385         "Pmaxub": { "opcodes": [ "66", "0F", "DE" ] },
386         "Pmaxud": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3F" ] },
387         "Pmaxuw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3E" ] },
388         "Pminsb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "38" ] },
389         "Pminsd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "39" ] },
390         "Pminsw": { "opcodes": [ "66", "0F", "EA" ] },
391         "Pminub": { "opcodes": [ "66", "0F", "DA" ] },
392         "Pminud": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3B" ] },
393         "Pminuw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3A" ] },
394         "Pmulhrsw": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "0B" ] },
395         "Pmulhw": { "opcodes": [ "66", "0F", "E5" ] },
396         "Pmulld": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "40" ] },
397         "Pmullw": { "opcodes": [ "66", "0F", "D5" ] },
398         "Pmuludq": { "opcodes": [ "66", "0F", "F4" ] },
399         "Por": { "opcodes": [ "66", "0F", "EB" ] },
400         "Psadbw": { "opcodes": [ "66", "0F", "F6" ] },
401         "Pshufb": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "00" ] },
402         "Pslld": { "opcodes": [ "66", "0F", "F2" ] },
403         "Psllq": { "opcodes": [ "66", "0F", "F3" ] },
404         "Psllw": { "opcodes": [ "66", "0F", "F1" ] },
405         "Psrad": { "opcodes": [ "66", "0F", "E2" ] },
406         "Psraw": { "opcodes": [ "66", "0F", "E1" ] },
407         "Psrld": { "opcodes": [ "66", "0F", "D2" ] },
408         "Psrlq": { "opcodes": [ "66", "0F", "D3" ] },
409         "Psrlw": { "opcodes": [ "66", "0F", "D1" ] },
410         "Psubb": { "opcodes": [ "66", "0F", "F8" ] },
411         "Psubd": { "opcodes": [ "66", "0F", "FA" ] },
412         "Psubq": { "opcodes": [ "66", "0F", "FB" ] },
413         "Psubsb": { "opcodes": [ "66", "0F", "E8" ] },
414         "Psubsw": { "opcodes": [ "66", "0F", "E9" ] },
415         "Psubusb": { "opcodes": [ "66", "0F", "D8" ] },
416         "Psubusw": { "opcodes": [ "66", "0F", "D9" ] },
417         "Psubw": { "opcodes": [ "66", "0F", "F9" ] },
418         "Punpckhbw": { "opcodes": [ "66", "0F", "68" ] },
419         "Punpckhdq": { "opcodes": [ "66", "0F", "6A" ] },
420         "Punpckhqdq": { "opcodes": [ "66", "0F", "6D" ] },
421         "Punpckhwd": { "opcodes": [ "66", "0F", "69" ] },
422         "Punpcklbw": { "opcodes": [ "66", "0F", "60" ] },
423         "Punpckldq": { "opcodes": [ "66", "0F", "62" ] },
424         "Punpcklqdq": { "opcodes": [ "66", "0F", "6C" ] },
425         "Punpcklwd": { "opcodes": [ "66", "0F", "61" ] },
426         "Pxor": { "opcodes": [ "66", "0F", "EF" ] },
427         "Rsqrtps": { "opcodes": [ "0F", "52" ] },
428         "Subpd": { "opcodes": [ "66", "0F", "5C" ] },
429         "Subps": { "opcodes": [ "0F", "5C" ] },
430         "Vrsqrtps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "52" ] },
431         "Xorpd": { "opcodes": [ "66", "0F", "57" ] },
432         "Xorps": { "opcodes": [ "0F", "57" ] }
433       },
434       "args": [
435         { "class": "VecReg128", "usage": "use_def" },
436         { "class": "VecReg128/VecMem128", "usage": "use" }
437       ]
438     },
439     {
440       "encodings": {
441         "Addsd": { "opcodes": [ "F2", "0F", "58" ] },
442         "Cmpeqsd": { "opcodes": [ "F2", "0F", "C2", "00" ] },
443         "Cmplesd": { "opcodes": [ "F2", "0F", "C2", "02" ] },
444         "Cmpltsd": { "opcodes": [ "F2", "0F", "C2", "01" ] },
445         "Cmpneqsd": { "opcodes": [ "F2", "0F", "C2", "04" ] },
446         "Cmpnlesd": { "opcodes": [ "F2", "0F", "C2", "06" ] },
447         "Cmpnltsd": { "opcodes": [ "F2", "0F", "C2", "05" ] },
448         "Cmpordsd": { "opcodes": [ "F2", "0F", "C2", "07" ] },
449         "Cmpunordsd": { "opcodes": [ "F2", "0F", "C2", "03" ] },
450         "Divsd": { "opcodes": [ "F2", "0F", "5E" ] },
451         "Mulsd": { "opcodes": [ "F2", "0F", "59" ] },
452         "Subsd": { "opcodes": [ "F2", "0F", "5C" ] }
453       },
454       "args": [
455         { "class": "FpReg64", "usage": "use_def" },
456         { "class": "FpReg64/VecMem64", "usage": "use" }
457       ]
458     },
459     {
460       "encodings": {
461         "Addss": { "opcodes": [ "F3", "0F", "58" ] },
462         "Cmpeqss": { "opcodes": [ "F3", "0F", "C2", "00" ] },
463         "Cmpless": { "opcodes": [ "F3", "0F", "C2", "02" ] },
464         "Cmpltss": { "opcodes": [ "F3", "0F", "C2", "01" ] },
465         "Cmpneqss": { "opcodes": [ "F3", "0F", "C2", "04" ] },
466         "Cmpnless": { "opcodes": [ "F3", "0F", "C2", "06" ] },
467         "Cmpnltss": { "opcodes": [ "F3", "0F", "C2", "05" ] },
468         "Cmpordss": { "opcodes": [ "F3", "0F", "C2", "07" ] },
469         "Cmpunordss": { "opcodes": [ "F3", "0F", "C2", "03" ] },
470         "Divss": { "opcodes": [ "F3", "0F", "5E" ] },
471         "Mulss": { "opcodes": [ "F3", "0F", "59" ] },
472         "Subss": { "opcodes": [ "F3", "0F", "5C" ] }
473       },
474       "args": [
475         { "class": "FpReg32", "usage": "use_def" },
476         { "class": "FpReg32/VecMem32", "usage": "use" }
477       ]
478     },
479     {
480       "encodings": {
481         "Addw": { "opcodes": [ "66", "01" ], "reg_to_rm": true },
482         "Andw": { "opcodes": [ "66", "21" ], "reg_to_rm": true },
483         "Btcw": { "opcodes": [ "66", "0F", "BB" ], "reg_to_rm": true },
484         "Btrw": { "opcodes": [ "66", "0F", "B3" ], "reg_to_rm": true },
485         "Btsw": { "opcodes": [ "66", "0F", "AB" ], "reg_to_rm": true },
486         "Orw": { "opcodes": [ "66", "09" ], "reg_to_rm": true },
487         "Subw": { "opcodes": [ "66", "29" ], "reg_to_rm": true },
488         "Xorw": { "opcodes": [ "66", "31" ], "reg_to_rm": true }
489       },
490       "args": [
491         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
492         { "class": "GeneralReg16", "usage": "use" },
493         { "class": "FLAGS", "usage": "def" }
494       ]
495     },
496     {
497       "encodings": {
498         "Addw": { "opcodes": [ "66", "03" ] },
499         "Andw": { "opcodes": [ "66", "23" ] },
500         "Orw": { "opcodes": [ "66", "0B" ] },
501         "Subw": { "opcodes": [ "66", "2B" ] },
502         "Xorw": { "opcodes": [ "66", "33" ] }
503       },
504       "args": [
505         { "class": "GeneralReg16", "usage": "use_def" },
506         { "class": "Mem16", "usage": "use" },
507         { "class": "FLAGS", "usage": "def" }
508       ]
509     },
510     {
511       "encodings": {
512         "Addw": { "opcodes": [ "66", "81", "0" ] },
513         "Andw": { "opcodes": [ "66", "81", "4" ] },
514         "Orw": { "opcodes": [ "66", "81", "1" ] },
515         "Subw": { "opcodes": [ "66", "81", "5" ] },
516         "Xorw": { "opcodes": [ "66", "81", "6" ] }
517       },
518       "args": [
519         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
520         { "class": "Imm16" },
521         { "class": "FLAGS", "usage": "def" }
522       ]
523     },
524     {
525       "encodings": {
526         "AddwAccumulator": { "opcodes": [ "66", "05" ] },
527         "AndwAccumulator": { "opcodes": [ "66", "25" ] },
528         "OrwAccumulator": { "opcodes": [ "66", "0D" ] },
529         "SubwAccumulator": { "opcodes": [ "66", "2D" ] },
530         "XorwAccumulator": { "opcodes": [ "66", "35" ] }
531       },
532       "args": [
533         { "class": "AX", "usage": "use_def" },
534         { "class": "Imm16" },
535         { "class": "FLAGS", "usage": "def" }
536       ]
537     },
538     {
539       "encodings": {
540         "AddwImm8": { "opcodes": [ "66", "83", "0" ] },
541         "AndwImm8": { "opcodes": [ "66", "83", "4" ] },
542         "OrwImm8": { "opcodes": [ "66", "83", "1" ] },
543         "Rolw": { "opcodes": [ "66", "C1", "0" ] },
544         "Rorw": { "opcodes": [ "66", "C1", "1" ] },
545         "Sarw": { "opcodes": [ "66", "C1", "7" ] },
546         "Shlw": { "opcodes": [ "66", "C1", "4" ] },
547         "Shrw": { "opcodes": [ "66", "C1", "5" ] },
548         "SubwImm8": { "opcodes": [ "66", "83", "5" ] },
549         "XorwImm8": { "opcodes": [ "66", "83", "6" ] }
550       },
551       "args": [
552         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
553         { "class": "Imm8" },
554         { "class": "FLAGS", "usage": "def" }
555       ]
556     },
557     {
558       "encodings": {
559         "Andnl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F2" ], "vex_rm_to_reg": true }
560       },
561       "args": [
562         { "class": "GeneralReg32", "usage": "def" },
563         { "class": "GeneralReg32", "usage": "use" },
564         { "class": "GeneralReg32/Mem32", "usage": "use" },
565         { "class": "FLAGS", "usage": "def" }
566       ]
567     },
568     {
569       "encodings": {
570         "Bextrl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F7" ] },
571         "Bzhil": { "feature": "BMI2", "opcodes": [ "C4", "02", "00", "F5" ] }
572       },
573       "args": [
574         { "class": "GeneralReg32", "usage": "use_def" },
575         { "class": "GeneralReg32/Mem32", "usage": "use" },
576         { "class": "GeneralReg32", "usage": "use" },
577         { "class": "FLAGS", "usage": "def" }
578       ]
579     },
580     {
581       "encodings": {
582         "Blsil": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F3", "3" ], "rm_to_vex": true },
583         "Blsmskl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F3", "2" ], "rm_to_vex": true },
584         "Blsrl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F3", "1" ], "rm_to_vex": true },
585         "Bsfl": { "opcodes": [ "0F", "BC" ] },
586         "Bsrl": { "opcodes": [ "0F", "BD" ] },
587         "Lzcntl": { "feature": "LZCNT", "opcodes": [ "F3", "0F", "BD" ] },
588         "Popcntl": { "feature": "POPCNT", "opcodes": [ "F3", "0F", "B8" ] },
589         "Tzcntl": { "feature": "BMI", "opcodes": [ "F3", "0F", "BC" ] }
590       },
591       "args": [
592         { "class": "GeneralReg32", "usage": "def" },
593         { "class": "GeneralReg32/Mem32", "usage": "use" },
594         { "class": "FLAGS", "usage": "def" }
595       ]
596     },
597     {
598       "encodings": {
599         "Bsfw": { "opcodes": [ "66", "0F", "BC" ] },
600         "Bsrw": { "opcodes": [ "66", "0F", "BD" ] },
601         "Lzcntw": { "feature": "LZCNT", "opcodes": [ "66", "F3", "0F", "BD" ] },
602         "Popcntw": { "feature": "POPCNT", "opcodes": [ "66", "F3", "0F", "B8" ] },
603         "Tzcntw": { "feature": "BMI", "opcodes": [ "66", "F3", "0F", "BC" ] }
604       },
605       "args": [
606         { "class": "GeneralReg16", "usage": "def" },
607         { "class": "GeneralReg16/Mem16", "usage": "use" },
608         { "class": "FLAGS", "usage": "def" }
609       ]
610     },
611     {
612       "encodings": {
613         "Bswapl": { "opcodes": [ "0F", "C8" ] }
614       },
615       "args": [
616         { "class": "GeneralReg32", "usage": "use_def" }
617       ]
618     },
619     {
620       "encodings": {
621         "Btl": { "opcodes": [ "0F", "A3" ], "reg_to_rm": true },
622         "Cmpl": { "opcodes": [ "39" ], "reg_to_rm": true },
623         "Testl": { "opcodes": [ "85" ], "reg_to_rm": true }
624       },
625       "args": [
626         { "class": "GeneralReg32/Mem32", "usage": "use" },
627         { "class": "GeneralReg32", "usage": "use" },
628         { "class": "FLAGS", "usage": "def" }
629       ]
630     },
631     {
632       "encodings": {
633         "Btw": { "opcodes": [ "66", "0F", "A3" ], "reg_to_rm": true },
634         "Cmpw": { "opcodes": [ "66", "39" ], "reg_to_rm": true },
635         "Testw": { "opcodes": [ "66", "85" ], "reg_to_rm": true }
636       },
637       "args": [
638         { "class": "GeneralReg16/Mem16", "usage": "use" },
639         { "class": "GeneralReg16", "usage": "use" },
640         { "class": "FLAGS", "usage": "def" }
641       ]
642     },
643     {
644       "encodings": {
645         "Call": { "opcodes": [ "FF", "02" ] },
646         "Push": { "opcodes": [ "50" ] }
647       },
648       "args": [
649         { "class": "RSP", "usage": "use_def" },
650         { "class": "GeneralReg", "usage": "use" }
651       ]
652     },
653     {
654       "stems": [ "Call" ],
655       "args": [
656         { "class": "RSP", "usage": "use_def" },
657         { "class": "Label" }
658       ]
659     },
660     {
661       "encodings": {
662         "Cbtw": { "opcodes": [ "66", "98" ] },
663         "Cbw": { "opcodes": [ "66", "98" ] }
664       },
665       "args": [
666         { "class": "AL", "usage": "use" },
667         { "class": "AX", "usage": "def" }
668       ]
669     },
670     {
671       "encodings": {
672         "Cdq": { "opcodes": [ "99" ] },
673         "Cltd": { "opcodes": [ "99" ] }
674       },
675       "args": [
676         { "class": "EAX", "usage": "use" },
677         { "class": "EDX", "usage": "def" }
678       ]
679     },
680     {
681       "encodings": {
682         "Clc": { "opcodes": [ "F8" ] },
683         "Cmc": { "opcodes": [ "F5" ] },
684         "Stc": { "opcodes": [ "F9" ] }
685       },
686       "args": [
687         { "class": "FLAGS", "usage": "use_def" }
688       ]
689     },
690     {
691       "encodings": {
692         "Cmovl": { "opcodes": [ "0F", "40" ] }
693       },
694       "args": [
695         { "class": "Cond" },
696         { "class": "GeneralReg32", "usage": "use_def" },
697         { "class": "GeneralReg32/Mem32", "usage": "use" },
698         { "class": "FLAGS", "usage": "use" }
699       ]
700     },
701     {
702       "encodings": {
703         "Cmovw": { "opcodes": [ "66", "0F", "40" ] }
704       },
705       "args": [
706         { "class": "Cond" },
707         { "class": "GeneralReg16", "usage": "use_def" },
708         { "class": "GeneralReg16/Mem16", "usage": "use" },
709         { "class": "FLAGS", "usage": "use" }
710       ]
711     },
712     {
713       "encodings": {
714         "CmpXchg8b": { "opcodes": [ "0F", "C7", "1" ] },
715         "LockCmpXchg8b": { "opcodes": [ "F0", "0F", "C7", "1" ] }
716       },
717       "args": [
718         { "class": "EAX", "usage": "use_def" },
719         { "class": "EDX", "usage": "use_def" },
720         { "class": "EBX", "usage": "use" },
721         { "class": "ECX", "usage": "use" },
722         { "class": "VecMem64", "usage": "use_def" },
723         { "class": "FLAGS", "usage": "def" }
724       ]
725     },
726     {
727       "encodings": {
728         "CmpXchgl": { "opcodes": [ "0F", "B1" ], "reg_to_rm": true }
729       },
730       "args": [
731         { "class": "EAX", "usage": "use_def" },
732         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
733         { "class": "GeneralReg32", "usage": "use" },
734         { "class": "FLAGS", "usage": "def" }
735       ]
736     },
737     {
738       "encodings": {
739         "Cmpb": { "opcodes": [ "80", "7" ] },
740         "Testb": { "opcodes": [ "F6", "0" ] }
741       },
742       "args": [
743         { "class": "GeneralReg8/Mem8", "usage": "use" },
744         { "class": "Imm8" },
745         { "class": "FLAGS", "usage": "def" }
746       ]
747     },
748     {
749       "encodings": {
750         "Cmpb": { "opcodes": [ "38" ], "reg_to_rm": true },
751         "Testb": { "opcodes": [ "84" ], "reg_to_rm": true }
752       },
753       "args": [
754         { "class": "GeneralReg8/Mem8", "usage": "use" },
755         { "class": "GeneralReg8", "usage": "use" },
756         { "class": "FLAGS", "usage": "def" }
757       ]
758     },
759     {
760       "encodings": {
761         "Cmpb": { "opcodes": [ "3A" ] }
762       },
763       "args": [
764         { "class": "GeneralReg8", "usage": "use" },
765         { "class": "Mem8", "usage": "use" },
766         { "class": "FLAGS", "usage": "def" }
767       ]
768     },
769     {
770       "encodings": {
771         "CmpbAccumulator": { "opcodes": [ "3C" ] },
772         "TestbAccumulator": { "opcodes": [ "A8" ] }
773       },
774       "args": [
775         { "class": "AL", "usage": "use" },
776         { "class": "Imm8" },
777         { "class": "FLAGS", "usage": "def" }
778       ]
779     },
780     {
781       "encodings": {
782         "Cmpl": { "opcodes": [ "81", "7" ] },
783         "Testl": { "opcodes": [ "F7", "0" ] }
784       },
785       "args": [
786         { "class": "GeneralReg32/Mem32", "usage": "use" },
787         { "class": "Imm32" },
788         { "class": "FLAGS", "usage": "def" }
789       ]
790     },
791     {
792       "encodings": {
793         "Cmpl": { "opcodes": [ "3B" ] }
794       },
795       "args": [
796         { "class": "GeneralReg32", "usage": "use" },
797         { "class": "Mem32", "usage": "use" },
798         { "class": "FLAGS", "usage": "def" }
799       ]
800     },
801     {
802       "encodings": {
803         "CmplAccumulator": { "opcodes": [ "3D" ] },
804         "TestlAccumulator": { "opcodes": [ "A9" ] }
805       },
806       "args": [
807         { "class": "EAX", "usage": "use" },
808         { "class": "Imm32" },
809         { "class": "FLAGS", "usage": "def" }
810       ]
811     },
812     {
813       "encodings": {
814         "CmplImm8": { "opcodes": [ "83", "7" ] }
815       },
816       "args": [
817         { "class": "GeneralReg32/Mem32", "usage": "use" },
818         { "class": "Imm8" },
819         { "class": "FLAGS", "usage": "def" }
820       ]
821     },
822     {
823       "encodings": {
824         "Cmpw": { "opcodes": [ "66", "81", "7" ] },
825         "Testw": { "opcodes": [ "66", "F7", "0" ] }
826       },
827       "args": [
828         { "class": "GeneralReg16/Mem16", "usage": "use" },
829         { "class": "Imm16" },
830         { "class": "FLAGS", "usage": "def" }
831       ]
832     },
833     {
834       "encodings": {
835         "Cmpw": { "opcodes": [ "66", "3B" ] }
836       },
837       "args": [
838         { "class": "GeneralReg16", "usage": "use" },
839         { "class": "Mem16", "usage": "use" },
840         { "class": "FLAGS", "usage": "def" }
841       ]
842     },
843     {
844       "encodings": {
845         "CmpwAccumulator": { "opcodes": [ "66", "3D" ] },
846         "TestwAccumulator": { "opcodes": [ "66", "A9" ] }
847       },
848       "args": [
849         { "class": "AX", "usage": "use" },
850         { "class": "Imm16" },
851         { "class": "FLAGS", "usage": "def" }
852       ]
853     },
854     {
855       "encodings": {
856         "CmpwImm8": { "opcodes": [ "66", "83", "7" ] }
857       },
858       "args": [
859         { "class": "GeneralReg16/Mem16", "usage": "use" },
860         { "class": "Imm8" },
861         { "class": "FLAGS", "usage": "def" }
862       ]
863     },
864     {
865       "encodings": {
866         "Cvtdq2pd": { "opcodes": [ "F3", "0F", "E6" ] },
867         "Cvtdq2ps": { "opcodes": [ "0F", "5B" ] },
868         "Cvtpd2dq": { "opcodes": [ "F2", "0F", "E6" ] },
869         "Cvtpd2ps": { "opcodes": [ "66", "0F", "5A" ] },
870         "Cvtps2dq": { "opcodes": [ "66", "0F", "5B" ] },
871         "Cvtps2pd": { "opcodes": [ "0F", "5A" ] },
872         "Cvttpd2dq": { "opcodes": [ "66", "0F", "E6" ] },
873         "Cvttps2dq": { "opcodes": [ "F3", "0F", "5B" ] },
874         "Vcvtdq2pd": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "E6" ] },
875         "Vcvtdq2ps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5B" ] },
876         "Vcvtpd2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "E6" ] },
877         "Vcvtpd2ps": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5A" ] },
878         "Vcvtps2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5B" ] },
879         "Vcvtps2pd": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5A" ] },
880         "Vcvttpd2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E6" ] },
881         "Vcvttps2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5B" ] }
882       },
883       "args": [
884         { "class": "VecReg128", "usage": "def" },
885         { "class": "VecReg128/VecMem128", "usage": "use" }
886       ]
887     },
888     {
889       "encodings": {
890         "Cvtsd2sil": { "opcodes": [ "F2", "0F", "2D" ] },
891         "Cvttsd2sil": { "opcodes": [ "F2", "0F", "2C" ] },
892         "Vcvtsd2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "2D" ] },
893         "Vcvttsd2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "2C" ] }
894       },
895       "args": [
896         { "class": "GeneralReg32", "usage": "def" },
897         { "class": "FpReg64/VecMem64", "usage": "use" }
898       ]
899     },
900     {
901       "encodings": {
902         "Cvtsd2ss": { "opcodes": [ "F2", "0F", "5A" ] }
903       },
904       "args": [
905         { "class": "FpReg32", "usage": "def" },
906         { "class": "FpReg64/VecMem64", "usage": "use" }
907       ]
908     },
909     {
910       "encodings": {
911         "Cvtsi2sdl": { "opcodes": [ "F2", "0F", "2A" ] }
912       },
913       "args": [
914         { "class": "FpReg64", "usage": "def" },
915         { "class": "GeneralReg32/Mem32", "usage": "use" }
916       ]
917     },
918     {
919       "encodings": {
920         "Cvtsi2ssl": { "opcodes": [ "F3", "0F", "2A" ] }
921       },
922       "args": [
923         { "class": "FpReg32", "usage": "def" },
924         { "class": "GeneralReg32/Mem32", "usage": "use" }
925       ]
926     },
927     {
928       "encodings": {
929         "Cvtss2sd": { "opcodes": [ "F3", "0F", "5A" ] }
930       },
931       "args": [
932         { "class": "FpReg64", "usage": "def" },
933         { "class": "FpReg32/VecMem32", "usage": "use" }
934       ]
935     },
936     {
937       "encodings": {
938         "Cvtss2sil": { "opcodes": [ "F3", "0F", "2D" ] },
939         "Cvttss2sil": { "opcodes": [ "F3", "0F", "2C" ] },
940         "Vcvtss2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "2D" ] },
941         "Vcvttss2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "2C" ] }
942       },
943       "args": [
944         { "class": "GeneralReg32", "usage": "def" },
945         { "class": "FpReg32/VecMem32", "usage": "use" }
946       ]
947     },
948     {
949       "encodings": {
950         "Cwd": { "opcodes": [ "66", "99" ] },
951         "Cwtd": { "opcodes": [ "66", "99" ] }
952       },
953       "args": [
954         { "class": "AX", "usage": "use" },
955         { "class": "DX", "usage": "def" }
956       ]
957     },
958     {
959       "encodings": {
960         "Cwde": { "opcodes": [ "98" ] },
961         "Cwtl": { "opcodes": [ "98" ] }
962       },
963       "args": [
964         { "class": "AX", "usage": "use" },
965         { "class": "EAX", "usage": "def" }
966       ]
967     },
968     {
969       "encodings": {
970         "Decb": { "opcodes": [ "FE", "1" ] },
971         "Incb": { "opcodes": [ "FE", "0" ] },
972         "Negb": { "opcodes": [ "F6", "3" ] },
973         "RolbByOne": { "opcodes": [ "D0", "0" ] },
974         "RorbByOne": { "opcodes": [ "D0", "1" ] },
975         "SarbByOne": { "opcodes": [ "D0", "7" ] },
976         "ShlbByOne": { "opcodes": [ "D0", "4" ] },
977         "ShrbByOne": { "opcodes": [ "D0", "5" ] }
978       },
979       "args": [
980         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
981         { "class": "FLAGS", "usage": "def" }
982       ]
983     },
984     {
985       "encodings": {
986         "Decl": { "opcodes": [ "FF", "1" ] },
987         "Incl": { "opcodes": [ "FF", "0" ] }
988       },
989       "args": [
990         { "class": "Mem32", "usage": "use_def" },
991         { "class": "FLAGS", "usage": "def" }
992       ]
993     },
994     {
995       "encodings": {
996         "Decw": { "opcodes": [ "66", "FF", "1" ] },
997         "Incw": { "opcodes": [ "66", "FF", "0" ] }
998       },
999       "args": [
1000         { "class": "Mem16", "usage": "use_def" },
1001         { "class": "FLAGS", "usage": "def" }
1002       ]
1003     },
1004     {
1005       "encodings": {
1006         "Divb": { "opcodes": [ "F6", "6" ] },
1007         "Idivb": { "opcodes": [ "F6", "7" ] }
1008       },
1009       "args": [
1010         { "class": "AX", "usage": "use_def" },
1011         { "class": "GeneralReg8/Mem8", "usage": "use" },
1012         { "class": "FLAGS", "usage": "def" }
1013       ]
1014     },
1015     {
1016       "encodings": {
1017         "Divl": { "opcodes": [ "F7", "6" ] },
1018         "Idivl": { "opcodes": [ "F7", "7" ] }
1019       },
1020       "args": [
1021         { "class": "EAX", "usage": "use_def" },
1022         { "class": "EDX", "usage": "use_def" },
1023         { "class": "GeneralReg32/Mem32", "usage": "use" },
1024         { "class": "FLAGS", "usage": "def" }
1025       ]
1026     },
1027     {
1028       "encodings": {
1029         "Divw": { "opcodes": [ "66", "F7", "6" ] },
1030         "Idivw": { "opcodes": [ "66", "F7", "7" ] }
1031       },
1032       "args": [
1033         { "class": "AX", "usage": "use_def" },
1034         { "class": "DX", "usage": "use_def" },
1035         { "class": "GeneralReg16/Mem16", "usage": "use" },
1036         { "class": "FLAGS", "usage": "def" }
1037       ]
1038     },
1039     {
1040       "encodings": {
1041         "F2xm1": { "opcodes": [ "D9", "F0" ] },
1042         "Fabs": { "opcodes": [ "D9", "E1" ] },
1043         "Fchs": { "opcodes": [ "D9", "E0" ] },
1044         "Fcos": { "opcodes": [ "D9", "FF" ] },
1045         "Frndint": { "opcodes": [ "D9", "FC" ] },
1046         "Fscale": { "opcodes": [ "D9", "FD" ] },
1047         "Fsin": { "opcodes": [ "D9", "FE" ] },
1048         "Fsqrt": { "opcodes": [ "D9", "FA" ] },
1049         "Ftst": { "opcodes": [ "D9", "E4" ] }
1050       },
1051       "args": [
1052         { "class": "ST", "usage": "use_def" }
1053       ]
1054     },
1055     {
1056       "encodings": {
1057         "FaddFromSt": { "opcodes": [ "DC", "0" ] },
1058         "FaddpFromSt": { "opcodes": [ "DE", "0" ] },
1059         "FdivFromSt": { "opcodes": [ "DC", "6" ] },
1060         "FdivpFromSt": { "opcodes": [ "DE", "6" ] },
1061         "FdivrFromSt": { "opcodes": [ "DC", "7" ] },
1062         "FdivrpFromSt": { "opcodes": [ "DE", "7" ] },
1063         "FmulFromSt": { "opcodes": [ "DC", "1" ] },
1064         "FmulpFromSt": { "opcodes": [ "DE", "1" ] },
1065         "FsubFromSt": { "opcodes": [ "DC", "4" ] },
1066         "FsubpFromSt": { "opcodes": [ "DE", "4" ] },
1067         "FsubrFromSt": { "opcodes": [ "DC", "5" ] },
1068         "FsubrpFromSt": { "opcodes": [ "DE", "5" ] }
1069       },
1070       "args": [
1071         { "class": "RegX87", "usage": "use_def" },
1072         { "class": "ST", "usage": "use" }
1073       ]
1074     },
1075     {
1076       "encodings": {
1077         "FaddToSt": { "opcodes": [ "D8", "0" ] },
1078         "FdivToSt": { "opcodes": [ "D8", "6" ] },
1079         "FdivrToSt": { "opcodes": [ "D8", "7" ] },
1080         "FmulToSt": { "opcodes": [ "D8", "1" ] },
1081         "FsubToSt": { "opcodes": [ "D8", "4" ] },
1082         "FsubrToSt": { "opcodes": [ "D8", "5" ] }
1083       },
1084       "args": [
1085         { "class": "ST", "usage": "use_def" },
1086         { "class": "RegX87", "usage": "use" }
1087       ]
1088     },
1089     {
1090       "encodings": {
1091         "Faddl": { "opcodes": [ "DC", "0" ] },
1092         "Fdivl": { "opcodes": [ "DC", "6" ] },
1093         "Fdivrl": { "opcodes": [ "DC", "7" ] },
1094         "Fmull": { "opcodes": [ "DC", "1" ] },
1095         "Fsubl": { "opcodes": [ "DC", "4" ] },
1096         "Fsubrl": { "opcodes": [ "DC", "5" ] }
1097       },
1098       "args": [
1099         { "class": "ST", "usage": "use_def" },
1100         { "class": "MemX8764", "usage": "use" }
1101       ]
1102     },
1103     {
1104       "encodings": {
1105         "Fadds": { "opcodes": [ "D8", "0" ] },
1106         "Fdivrs": { "opcodes": [ "D8", "7" ] },
1107         "Fdivs": { "opcodes": [ "D8", "6" ] },
1108         "Fiaddl": { "opcodes": [ "DA", "0" ] },
1109         "Fidivl": { "opcodes": [ "DA", "6" ] },
1110         "Fidivrl": { "opcodes": [ "DA", "7" ] },
1111         "Fimull": { "opcodes": [ "DA", "1" ] },
1112         "Fisubl": { "opcodes": [ "DA", "4" ] },
1113         "Fisubrl": { "opcodes": [ "DA", "5" ] },
1114         "Fmuls": { "opcodes": [ "D8", "1" ] },
1115         "Fsubrs": { "opcodes": [ "D8", "5" ] },
1116         "Fsubs": { "opcodes": [ "D8", "4" ] }
1117       },
1118       "args": [
1119         { "class": "ST", "usage": "use_def" },
1120         { "class": "MemX8732", "usage": "use" }
1121       ]
1122     },
1123     {
1124       "encodings": {
1125         "Fbld": { "opcodes": [ "DF", "4" ] },
1126         "Fldt": { "opcodes": [ "DB", "5" ] }
1127       },
1128       "args": [
1129         { "class": "ST", "usage": "def" },
1130         { "class": "MemX8780", "usage": "use" }
1131       ]
1132     },
1133     {
1134       "encodings": {
1135         "Fbstp": { "opcodes": [ "DF", "6" ] },
1136         "Fstpt": { "opcodes": [ "DB", "7" ] }
1137       },
1138       "args": [
1139         { "class": "MemX8780", "usage": "def" },
1140         { "class": "ST", "usage": "use" }
1141       ]
1142     },
1143     {
1144       "encodings": {
1145         "FcmovbToSt": { "opcodes": [ "DA", "0" ] },
1146         "FcmovbeToSt": { "opcodes": [ "DA", "2" ] },
1147         "FcmoveToSt": { "opcodes": [ "DA", "1" ] },
1148         "FcmovnbToSt": { "opcodes": [ "DB", "0" ] },
1149         "FcmovnbeToSt": { "opcodes": [ "DB", "2" ] },
1150         "FcmovneToSt": { "opcodes": [ "DB", "1" ] },
1151         "FcmovnuToSt": { "opcodes": [ "DB", "3" ] },
1152         "FcmovuToSt": { "opcodes": [ "DA", "3" ] }
1153       },
1154       "args": [
1155         { "class": "ST", "usage": "use_def" },
1156         { "class": "RegX87", "usage": "use" },
1157         { "class": "FLAGS", "usage": "use" }
1158       ]
1159     },
1160     {
1161       "encodings": {
1162         "Fcom": { "opcodes": [ "D8", "2" ] },
1163         "Fcomp": { "opcodes": [ "D8", "3" ] },
1164         "Fucom": { "opcodes": [ "DD", "4" ] },
1165         "Fucomp": { "opcodes": [ "DD", "5" ] }
1166       },
1167       "args": [
1168         { "class": "ST", "usage": "use" },
1169         { "class": "RegX87", "usage": "use" },
1170         { "class": "CC", "usage": "def" }
1171       ]
1172     },
1173     {
1174       "encodings": {
1175         "Fcomi": { "opcodes": [ "DB", "6" ] },
1176         "Fcomip": { "opcodes": [ "DF", "6" ] },
1177         "Fucomi": { "opcodes": [ "DB", "5" ] },
1178         "Fucomip": { "opcodes": [ "DF", "5" ] }
1179       },
1180       "args": [
1181         { "class": "ST", "usage": "use" },
1182         { "class": "RegX87", "usage": "use" },
1183         { "class": "FLAGS", "usage": "def" }
1184       ]
1185     },
1186     {
1187       "encodings": {
1188         "Fcoml": { "opcodes": [ "DC", "2" ] },
1189         "Fcompl": { "opcodes": [ "DC", "3" ] }
1190       },
1191       "args": [
1192         { "class": "ST", "usage": "use" },
1193         { "class": "MemX8764", "usage": "use" },
1194         { "class": "CC", "usage": "def" }
1195       ]
1196     },
1197     {
1198       "encodings": {
1199         "Fcompp": { "opcodes": [ "DE", "D9" ] },
1200         "Fucompp": { "opcodes": [ "DA", "E9" ] }
1201       },
1202       "args": [
1203         { "class": "ST", "usage": "use" },
1204         { "class": "ST1", "usage": "use" },
1205         { "class": "CC", "usage": "def" }
1206       ]
1207     },
1208     {
1209       "encodings": {
1210         "Fcomps": { "opcodes": [ "D8", "3" ] },
1211         "Fcoms": { "opcodes": [ "D8", "2" ] },
1212         "Ficoml": { "opcodes": [ "DA", "2" ] },
1213         "Ficompl": { "opcodes": [ "DA", "3" ] }
1214       },
1215       "args": [
1216         { "class": "ST", "usage": "use" },
1217         { "class": "MemX8732", "usage": "use" },
1218         { "class": "CC", "usage": "def" }
1219       ]
1220     },
1221     {
1222       "encodings": {
1223         "Fdecstp": { "opcodes": [ "D9", "F6" ] },
1224         "Fincstp": { "opcodes": [ "D9", "F7" ] },
1225         "Fnop": { "opcodes": [ "D9", "D0" ] },
1226         "Fwait": { "opcodes": [ "9B" ] },
1227         "Int3": { "opcodes": [ "CC" ] },
1228         "Lfence": { "opcodes": [ "0F", "AE", "E8" ] },
1229         "Mfence": { "opcodes": [ "0F", "AE", "F0" ] },
1230         "Sfence": { "opcodes": [ "0F", "AE", "F8" ] },
1231         "Nop": { "opcodes": [ "90" ] },
1232         "UD2": { "opcodes": [ "0F", "0B" ] },
1233         "Wait": { "opcodes": [ "9B" ] }
1234       },
1235       "args": []
1236     },
1237     {
1238       "encodings": {
1239         "Ffree": { "opcodes": [ "DD", "0" ] }
1240       },
1241       "args": [
1242         { "class": "RegX87", "usage": "use" }
1243       ]
1244     },
1245     {
1246       "encodings": {
1247         "Fiadds": { "opcodes": [ "DE", "0" ] },
1248         "Fidivrs": { "opcodes": [ "DE", "7" ] },
1249         "Fidivs": { "opcodes": [ "DE", "6" ] },
1250         "Fimuls": { "opcodes": [ "DE", "1" ] },
1251         "Fisubrs": { "opcodes": [ "DE", "5" ] },
1252         "Fisubs": { "opcodes": [ "DE", "4" ] }
1253       },
1254       "args": [
1255         { "class": "ST", "usage": "use_def" },
1256         { "class": "MemX8716", "usage": "use" }
1257       ]
1258     },
1259     {
1260       "encodings": {
1261         "Ficomps": { "opcodes": [ "DE", "3" ] },
1262         "Ficoms": { "opcodes": [ "DE", "2" ] }
1263       },
1264       "args": [
1265         { "class": "ST", "usage": "use" },
1266         { "class": "MemX8716", "usage": "use" },
1267         { "class": "CC", "usage": "def" }
1268       ]
1269     },
1270     {
1271       "encodings": {
1272         "Fildl": { "opcodes": [ "DB", "0" ] },
1273         "Flds": { "opcodes": [ "D9", "0" ] }
1274       },
1275       "args": [
1276         { "class": "ST", "usage": "def" },
1277         { "class": "MemX8732", "usage": "use" }
1278       ]
1279     },
1280     {
1281       "encodings": {
1282         "Fildll": { "opcodes": [ "DF", "5" ] },
1283         "Fldl": { "opcodes": [ "DD", "0" ] }
1284       },
1285       "args": [
1286         { "class": "ST", "usage": "def" },
1287         { "class": "MemX8764", "usage": "use" }
1288       ]
1289     },
1290     {
1291       "encodings": {
1292         "Filds": { "opcodes": [ "DF", "0" ] }
1293       },
1294       "args": [
1295         { "class": "ST", "usage": "def" },
1296         { "class": "MemX8716", "usage": "use" }
1297       ]
1298     },
1299     {
1300       "encodings": {
1301         "Fistl": { "opcodes": [ "DB", "2" ] },
1302         "Fistpl": { "opcodes": [ "DB", "3" ] },
1303         "Fisttpl": { "feature": "SSE3", "opcodes": [ "DB", "1" ] },
1304         "Fstps": { "opcodes": [ "D9", "3" ] },
1305         "Fsts": { "opcodes": [ "D9", "2" ] }
1306       },
1307       "args": [
1308         { "class": "MemX8732", "usage": "def" },
1309         { "class": "ST", "usage": "use" }
1310       ]
1311     },
1312     {
1313       "encodings": {
1314         "Fistpll": { "opcodes": [ "DF", "7" ] },
1315         "Fisttpll": { "feature": "SSE3", "opcodes": [ "DD", "1" ] },
1316         "Fstl": { "opcodes": [ "DD", "2" ] },
1317         "Fstpl": { "opcodes": [ "DD", "3" ] }
1318       },
1319       "args": [
1320         { "class": "MemX8764", "usage": "def" },
1321         { "class": "ST", "usage": "use" }
1322       ]
1323     },
1324     {
1325       "encodings": {
1326         "Fistps": { "opcodes": [ "DF", "3" ] },
1327         "Fists": { "opcodes": [ "DF", "2" ] },
1328         "Fisttps": { "feature": "SSE3", "opcodes": [ "DF", "1" ] }
1329       },
1330       "args": [
1331         { "class": "MemX8716", "usage": "def" },
1332         { "class": "ST", "usage": "use" }
1333       ]
1334     },
1335     {
1336       "encodings": {
1337         "Fld1": { "opcodes": [ "D9", "E8" ] },
1338         "Fldl2e": { "opcodes": [ "D9", "EA" ] },
1339         "Fldl2t": { "opcodes": [ "D9", "E9" ] },
1340         "Fldlg2": { "opcodes": [ "D9", "EC" ] },
1341         "Fldln2": { "opcodes": [ "D9", "ED" ] },
1342         "Fldpi": { "opcodes": [ "D9", "EB" ] },
1343         "Fldz": { "opcodes": [ "D9", "EE" ] }
1344       },
1345       "args": [
1346         { "class": "ST", "usage": "use_def" }
1347       ]
1348     },
1349     {
1350       "encodings": {
1351         "Fld": { "opcodes": [ "D9", "0" ] }
1352       },
1353       "args": [
1354         { "class": "ST", "usage": "def" },
1355         { "class": "RegX87", "usage": "use" }
1356       ]
1357     },
1358     {
1359       "encodings": {
1360         "Fldcw": { "opcodes": [ "D9", "5" ] }
1361       },
1362       "args": [
1363         { "class": "CC", "usage": "def" },
1364         { "class": "MemX8732", "usage": "use" }
1365       ]
1366     },
1367     {
1368       "encodings": {
1369         "Fldenv": { "opcodes": [ "D9", "4" ] },
1370         "Frstor": { "opcodes": [ "DD", "4" ] },
1371         "Fxrstor": { "opcodes": [ "0F", "AE", "1" ] }
1372       },
1373       "args": [
1374         { "class": "MemX87", "usage": "use" },
1375         { "class": "CC", "usage": "def" }
1376       ]
1377     },
1378     {
1379       "encodings": {
1380         "Fnclex": { "opcodes": [ "DB", "E2" ] },
1381         "Fndisi": { "opcodes": [ "DB", "E1" ] },
1382         "Fneni": { "opcodes": [ "DB", "E0" ] },
1383         "Fninit": { "opcodes": [ "DB", "E3" ] },
1384         "Fnsetpm": { "opcodes": [ "DB", "E4" ] }
1385       },
1386       "args": [
1387         { "class": "CC", "usage": "def" }
1388       ]
1389     },
1390     {
1391       "encodings": {
1392         "Fnsave": { "opcodes": [ "DD", "6" ] },
1393         "Fnstenv": { "opcodes": [ "D9", "6" ] },
1394         "Fxsave": { "opcodes": [ "0F", "AE", "0" ] }
1395       },
1396       "args": [
1397         { "class": "CC", "usage": "def" },
1398         { "class": "MemX87", "usage": "use" }
1399       ]
1400     },
1401     {
1402       "encodings": {
1403         "Fnstcw": { "opcodes": [ "D9", "7" ] }
1404       },
1405       "args": [
1406         { "class": "MemX8732", "usage": "def" },
1407         { "class": "CC", "usage": "use" }
1408       ]
1409     },
1410     {
1411       "encodings": {
1412         "Fnstsw": { "opcodes": [ "DF", "E0" ] }
1413       },
1414       "args": [
1415         { "class": "AX", "usage": "def" },
1416         { "class": "SW", "usage": "use" }
1417       ]
1418     },
1419     {
1420       "encodings": {
1421         "Fnstsw": { "opcodes": [ "DD", "7" ] }
1422       },
1423       "args": [
1424         { "class": "MemX8732", "usage": "def" },
1425         { "class": "SW", "usage": "use" }
1426       ]
1427     },
1428     {
1429       "encodings": {
1430         "Fpatan": { "opcodes": [ "D9", "F3" ] },
1431         "Fprem": { "opcodes": [ "D9", "F8" ] },
1432         "Fprem1": { "opcodes": [ "D9", "F5" ] },
1433         "Fyl2x": { "opcodes": [ "D9", "F1" ] },
1434         "Fyl2xp1": { "opcodes": [ "D9", "F9" ] }
1435       },
1436       "args": [
1437         { "class": "ST", "usage": "use_def" },
1438         { "class": "ST1", "usage": "use" }
1439       ]
1440     },
1441     {
1442       "encodings": {
1443         "Fptan": { "opcodes": [ "D9", "F2" ] },
1444         "Fsincos": { "opcodes": [ "D9", "FB" ] },
1445         "Fxtract": { "opcodes": [ "D9", "F4" ] }
1446       },
1447       "args": [
1448         { "class": "ST", "usage": "use_def" },
1449         { "class": "ST1", "usage": "def" }
1450       ]
1451     },
1452     {
1453       "encodings": {
1454         "Fst": { "opcodes": [ "DD", "2" ] },
1455         "Fstp": { "opcodes": [ "DD", "3" ] }
1456       },
1457       "args": [
1458         { "class": "RegX87", "usage": "def" },
1459         { "class": "ST", "usage": "use" }
1460       ]
1461     },
1462     {
1463       "encodings": {
1464         "Fxam": { "opcodes": [ "D9", "E5" ] }
1465       },
1466       "args": [
1467         { "class": "ST", "usage": "use" },
1468         { "class": "CC", "usage": "def" }
1469       ]
1470     },
1471     {
1472       "encodings": {
1473         "Fxch": { "opcodes": [ "D9", "1" ] }
1474       },
1475       "args": [
1476         { "class": "RegX87", "usage": "use_def" },
1477         { "class": "ST", "usage": "use_def" }
1478       ]
1479     },
1480     {
1481       "encodings": {
1482         "Imulb": { "opcodes": [ "F6", "5" ] },
1483         "Mulb": { "opcodes": [ "F6", "4" ] }
1484       },
1485       "args": [
1486         { "class": "AL", "usage": "use" },
1487         { "class": "AX", "usage": "def" },
1488         { "class": "GeneralReg8/Mem8", "usage": "use" },
1489         { "class": "FLAGS", "usage": "def" }
1490       ]
1491     },
1492     {
1493       "encodings": {
1494         "Imull": { "opcodes": [ "F7", "5" ] },
1495         "Mull": { "opcodes": [ "F7", "4" ] }
1496       },
1497       "args": [
1498         { "class": "EAX", "usage": "use_def" },
1499         { "class": "EDX", "usage": "def" },
1500         { "class": "GeneralReg32/Mem32", "usage": "use" },
1501         { "class": "FLAGS", "usage": "def" }
1502       ]
1503     },
1504     {
1505       "encodings": {
1506         "Imull": { "opcodes": [ "69" ] }
1507       },
1508       "args": [
1509         { "class": "GeneralReg32", "usage": "def" },
1510         { "class": "GeneralReg32/Mem32", "usage": "use" },
1511         { "class": "Imm32" },
1512         { "class": "FLAGS", "usage": "def" }
1513       ]
1514     },
1515     {
1516       "encodings": {
1517         "Imull": { "opcodes": [ "0F", "AF" ] }
1518       },
1519       "args": [
1520         { "class": "GeneralReg32", "usage": "use_def" },
1521         { "class": "GeneralReg32/Mem32", "usage": "use" },
1522         { "class": "FLAGS", "usage": "def" }
1523       ]
1524     },
1525     {
1526       "encodings": {
1527         "ImullImm8": { "opcodes": [ "6B" ] }
1528       },
1529       "args": [
1530         { "class": "GeneralReg32", "usage": "def" },
1531         { "class": "GeneralReg32/Mem32", "usage": "use" },
1532         { "class": "Imm8" },
1533         { "class": "FLAGS", "usage": "def" }
1534       ]
1535     },
1536     {
1537       "encodings": {
1538         "Imulw": { "opcodes": [ "66", "F7", "5" ] },
1539         "Mulw": { "opcodes": [ "66", "F7", "4" ] }
1540       },
1541       "args": [
1542         { "class": "AX", "usage": "use_def" },
1543         { "class": "DX", "usage": "def" },
1544         { "class": "GeneralReg16/Mem16", "usage": "use" },
1545         { "class": "FLAGS", "usage": "def" }
1546       ]
1547     },
1548     {
1549       "encodings": {
1550         "Imulw": { "opcodes": [ "66", "69" ] }
1551       },
1552       "args": [
1553         { "class": "GeneralReg16", "usage": "def" },
1554         { "class": "GeneralReg16/Mem16", "usage": "use" },
1555         { "class": "Imm16" },
1556         { "class": "FLAGS", "usage": "def" }
1557       ]
1558     },
1559     {
1560       "encodings": {
1561         "Imulw": { "opcodes": [ "66", "0F", "AF" ] }
1562       },
1563       "args": [
1564         { "class": "GeneralReg16", "usage": "use_def" },
1565         { "class": "GeneralReg16/Mem16", "usage": "use" },
1566         { "class": "FLAGS", "usage": "def" }
1567       ]
1568     },
1569     {
1570       "encodings": {
1571         "ImulwImm8": { "opcodes": [ "66", "6B" ] }
1572       },
1573       "args": [
1574         { "class": "GeneralReg16", "usage": "def" },
1575         { "class": "GeneralReg16/Mem16", "usage": "use" },
1576         { "class": "Imm8" },
1577         { "class": "FLAGS", "usage": "def" }
1578       ]
1579     },
1580     {
1581       "stems": [ "Jcc" ],
1582       "args": [
1583         { "class": "Cond" },
1584         { "class": "Label" },
1585         { "class": "FLAGS", "usage": "use" }
1586       ]
1587     },
1588     {
1589       "stems": [ "Jmp" ],
1590       "args": [
1591         { "class": "Label" }
1592       ]
1593     },
1594     {
1595       "encodings": {
1596         "Jmp": { "opcodes": [ "FF", "4" ] }
1597       },
1598       "args": [
1599         { "class": "GeneralReg", "usage": "use" }
1600       ]
1601     },
1602     {
1603       "encodings": {
1604         "Lahf": { "opcodes": [ "9F" ] }
1605       },
1606       "args": [
1607         { "class": "EAX", "usage": "use_def" },
1608         { "class": "FLAGS", "usage": "use" }
1609       ],
1610       "comment": "Use use_def below because LAHF writes to AH while preserving the rest of RAX"
1611     },
1612     {
1613       "encodings": {
1614         "Ldmxcsr": { "opcodes": [ "0F", "AE", "2" ] },
1615         "Vldmxcsr": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "AE", "2" ] }
1616       },
1617       "args": [
1618         { "class": "Mem32", "usage": "use" }
1619       ]
1620     },
1621     {
1622       "encodings": {
1623         "Leal": { "opcodes": [ "8D" ] },
1624         "Movl": { "opcodes": [ "8B" ] }
1625       },
1626       "args": [
1627         { "class": "GeneralReg32", "usage": "def" },
1628         { "class": "Mem32", "usage": "use" }
1629       ]
1630     },
1631     {
1632       "encodings": {
1633         "LockCmpXchgb": { "opcodes": [ "F0", "0F", "B0" ], "reg_to_rm": true }
1634       },
1635       "args": [
1636         { "class": "AL", "usage": "use_def" },
1637         { "class": "Mem8", "usage": "use_def" },
1638         { "class": "GeneralReg8", "usage": "use" },
1639         { "class": "FLAGS", "usage": "def" }
1640       ]
1641     },
1642     {
1643       "encodings": {
1644         "LockCmpXchgl": { "opcodes": [ "F0", "0F", "B1" ], "reg_to_rm": true }
1645       },
1646       "args": [
1647         { "class": "EAX", "usage": "use_def" },
1648         { "class": "Mem32", "usage": "use_def" },
1649         { "class": "GeneralReg32", "usage": "use" },
1650         { "class": "FLAGS", "usage": "def" }
1651       ]
1652     },
1653     {
1654       "encodings": {
1655         "LockCmpXchgw": { "opcodes": [ "F0", "66", "0F", "B1" ], "reg_to_rm": true }
1656       },
1657       "args": [
1658         { "class": "AX", "usage": "use_def" },
1659         { "class": "Mem16", "usage": "use_def" },
1660         { "class": "GeneralReg16", "usage": "use" },
1661         { "class": "FLAGS", "usage": "def" }
1662       ]
1663     },
1664     {
1665       "encodings": {
1666         "Movapd": { "opcodes": [ "66", "0F", "29" ] },
1667         "Movaps": { "opcodes": [ "0F", "29" ] },
1668         "Vmovapd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "29" ] },
1669         "Vmovaps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "29" ] }
1670       },
1671       "args": [
1672         { "class": "VecMem128", "usage": "def" },
1673         { "class": "XmmReg", "usage": "use" }
1674       ]
1675     },
1676     {
1677       "encodings": {
1678         "Movapd": { "opcodes": [ "66", "0F", "28" ] },
1679         "Movaps": { "opcodes": [ "0F", "28" ] }
1680       },
1681       "args": [
1682         { "class": "XmmReg", "usage": "def" },
1683         { "class": "XmmReg/VecMem128", "usage": "use" }
1684       ]
1685     },
1686     {
1687       "encodings": {
1688         "Movb": { "opcodes": [ "B0" ] }
1689       },
1690       "args": [
1691         { "class": "GeneralReg8", "usage": "def" },
1692         { "class": "Imm8" }
1693       ]
1694     },
1695     {
1696       "encodings": {
1697         "Movb": { "opcodes": [ "8A" ] }
1698       },
1699       "args": [
1700         { "class": "GeneralReg8", "usage": "def" },
1701         { "class": "Mem8", "usage": "use" }
1702       ]
1703     },
1704     {
1705       "encodings": {
1706         "Movb": { "opcodes": [ "88" ], "reg_to_rm": true }
1707       },
1708       "args": [
1709         { "class": "GeneralReg8/Mem8", "usage": "def" },
1710         { "class": "GeneralReg8", "usage": "use" }
1711       ]
1712     },
1713     {
1714       "encodings": {
1715         "Movb": { "opcodes": [ "C6", "0" ] }
1716       },
1717       "args": [
1718         { "class": "Mem8", "usage": "def" },
1719         { "class": "Imm8" }
1720       ]
1721     },
1722     {
1723       "encodings": {
1724         "Movd": { "opcodes": [ "66", "0F", "7E" ], "reg_to_rm": true },
1725         "Vmovd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "7E" ], "reg_to_rm": true }
1726       },
1727       "args": [
1728         { "class": "GeneralReg32/Mem32", "usage": "def" },
1729         { "class": "XmmReg", "usage": "use" }
1730       ]
1731     },
1732     {
1733       "encodings": {
1734         "Movd": { "opcodes": [ "66", "0F", "6E" ] },
1735         "Vmovd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6E" ] }
1736       },
1737       "args": [
1738         { "class": "XmmReg", "usage": "def" },
1739         { "class": "GeneralReg32/Mem32", "usage": "use" }
1740       ]
1741     },
1742     {
1743       "name": "MovdqRegReg",
1744       "args": [
1745         { "class": "XmmReg", "usage": "def" },
1746         { "class": "XmmReg", "usage": "use" }
1747       ],
1748       "asm": "Pmov",
1749       "mnemo": "MOVDQ"
1750     },
1751     {
1752       "encodings": {
1753         "Movdqa": { "opcodes": [ "66", "0F", "7F" ] },
1754         "Movdqu": { "opcodes": [ "F3", "0F", "7F" ] },
1755         "Vmovdqa": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "7F" ] },
1756         "Vmovdqu": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "7F" ] }
1757       },
1758       "args": [
1759         { "class": "VecMem128", "usage": "def" },
1760         { "class": "XmmReg", "usage": "use" }
1761       ]
1762     },
1763     {
1764       "encodings": {
1765         "Movdqa": { "opcodes": [ "66", "0F", "6F" ] },
1766         "Movdqu": { "opcodes": [ "F3", "0F", "6F" ] }
1767       },
1768       "args": [
1769         { "class": "XmmReg", "usage": "def" },
1770         { "class": "XmmReg/VecMem128", "usage": "use" }
1771       ]
1772     },
1773     {
1774       "encodings": {
1775         "Movhlps": { "opcodes": [ "0F", "12" ] },
1776         "Movlhps": { "opcodes": [ "0F", "16" ] },
1777         "Movsd": { "opcodes": [ "F2", "0F", "10" ] },
1778         "Movss": { "opcodes": [ "F3", "0F", "10" ] }
1779       },
1780       "args": [
1781         { "class": "XmmReg", "usage": "use_def" },
1782         { "class": "XmmReg", "usage": "use" }
1783       ],
1784       "comment": "Upper bits (lower bits for Movlhps) are unchanged"
1785     },
1786     {
1787       "encodings": {
1788         "Movhpd": { "opcodes": [ "66", "0F", "17" ] },
1789         "Movhps": { "opcodes": [ "0F", "17" ] },
1790         "Movlpd": { "opcodes": [ "66", "0F", "13" ] },
1791         "Movlps": { "opcodes": [ "0F", "13" ] },
1792         "Vmovhpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "17" ] },
1793         "Vmovhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "17" ] },
1794         "Vmovlpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "13" ] },
1795         "Vmovlps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "13" ] }
1796       },
1797       "args": [
1798         { "class": "VecMem64", "usage": "use_def" },
1799         { "class": "XmmReg", "usage": "use" }
1800       ]
1801     },
1802     {
1803       "encodings": {
1804         "Movhpd": { "opcodes": [ "66", "0F", "16" ] },
1805         "Movhps": { "opcodes": [ "0F", "16" ] },
1806         "Movlpd": { "opcodes": [ "66", "0F", "12" ] },
1807         "Movlps": { "opcodes": [ "0F", "12" ] }
1808       },
1809       "args": [
1810         { "class": "XmmReg", "usage": "use_def" },
1811         { "class": "VecMem64", "usage": "use" }
1812       ]
1813     },
1814     {
1815       "encodings": {
1816         "Movl": { "opcodes": [ "B8" ] }
1817       },
1818       "args": [
1819         { "class": "GeneralReg32", "usage": "def" },
1820         { "class": "Imm32" }
1821       ]
1822     },
1823     {
1824       "encodings": {
1825         "Movl": { "opcodes": [ "89" ], "reg_to_rm": true }
1826       },
1827       "args": [
1828         { "class": "GeneralReg32/Mem32", "usage": "def" },
1829         { "class": "GeneralReg32", "usage": "use" }
1830       ]
1831     },
1832     {
1833       "encodings": {
1834         "Movl": { "opcodes": [ "C7", "0" ] }
1835       },
1836       "args": [
1837         { "class": "Mem32", "usage": "def" },
1838         { "class": "Imm32" }
1839       ]
1840     },
1841     {
1842       "encodings": {
1843         "Movmskpd": { "opcodes": [ "66", "0F", "50" ] },
1844         "Movmskps": { "opcodes": [ "0F", "50" ] },
1845         "Vmovmskpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "50" ] },
1846         "Vmovmskps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "50" ] }
1847       },
1848       "args": [
1849         { "class": "GeneralReg32", "usage": "def" },
1850         { "class": "XmmReg", "usage": "use" }
1851       ]
1852     },
1853     {
1854       "encodings": {
1855         "Movq": { "opcodes": [ "66", "0F", "D6" ] },
1856         "Movsd": { "opcodes": [ "F2", "0F", "11" ] },
1857         "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D6" ] },
1858         "Vmovsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "11" ] }
1859       },
1860       "args": [
1861         { "class": "VecMem64", "usage": "def" },
1862         { "class": "XmmReg", "usage": "use" }
1863       ]
1864     },
1865     {
1866       "encodings": {
1867         "Movq": { "opcodes": [ "F3", "0F", "7E" ] },
1868         "Pmovsxbw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "20" ] },
1869         "Pmovsxdq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "25" ] },
1870         "Pmovsxwd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "23" ] },
1871         "Pmovzxbw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "30" ] },
1872         "Pmovzxdq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "35" ] },
1873         "Pmovzxwd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "33" ] },
1874         "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "7E" ] }
1875       },
1876       "args": [
1877         { "class": "XmmReg", "usage": "def" },
1878         { "class": "XmmReg/VecMem64", "usage": "use" }
1879       ],
1880       "comment": "Upper bits are zero-filled for Movq/Vmovq"
1881     },
1882     {
1883       "encodings": {
1884         "Movsd": { "opcodes": [ "F2", "0F", "10" ] },
1885         "Vmovsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "10" ] }
1886       },
1887       "args": [
1888         { "class": "XmmReg", "usage": "def" },
1889         { "class": "VecMem64", "usage": "use" }
1890       ],
1891       "comment": "Upper bits are zero-filled"
1892     },
1893     {
1894       "encodings": {
1895         "Movss": { "opcodes": [ "F3", "0F", "10" ] },
1896         "Vmovss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "10" ] }
1897       },
1898       "args": [
1899         { "class": "XmmReg", "usage": "def" },
1900         { "class": "VecMem32", "usage": "use" }
1901       ],
1902       "comment": "Upper bits are zero-filled"
1903     },
1904     {
1905       "encodings": {
1906         "Movss": { "opcodes": [ "F3", "0F", "11" ] }
1907       },
1908       "args": [
1909         { "class": "Mem32", "usage": "def" },
1910         { "class": "XmmReg", "usage": "use" }
1911       ]
1912     },
1913     {
1914       "encodings": {
1915         "Movsxbl": { "opcodes": [ "0F", "BE" ] },
1916         "Movzxbl": { "opcodes": [ "0F", "B6" ] }
1917       },
1918       "args": [
1919         { "class": "GeneralReg32", "usage": "def" },
1920         { "class": "GeneralReg8/Mem8", "usage": "use" }
1921       ]
1922     },
1923     {
1924       "encodings": {
1925         "Movsxwl": { "opcodes": [ "0F", "BF" ] },
1926         "Movzxwl": { "opcodes": [ "0F", "B7" ] }
1927       },
1928       "args": [
1929         { "class": "GeneralReg32", "usage": "def" },
1930         { "class": "GeneralReg16/Mem16", "usage": "use" }
1931       ]
1932     },
1933     {
1934       "encodings": {
1935         "Movw": { "opcodes": [ "66", "B8" ] }
1936       },
1937       "args": [
1938         { "class": "GeneralReg16", "usage": "def" },
1939         { "class": "Imm16" }
1940       ]
1941     },
1942     {
1943       "encodings": {
1944         "Movw": { "opcodes": [ "66", "8B" ] }
1945       },
1946       "args": [
1947         { "class": "GeneralReg16", "usage": "def" },
1948         { "class": "Mem16", "usage": "use" }
1949       ]
1950     },
1951     {
1952       "encodings": {
1953         "Movw": { "opcodes": [ "66", "89" ], "reg_to_rm": true }
1954       },
1955       "args": [
1956         { "class": "GeneralReg16/Mem16", "usage": "def" },
1957         { "class": "GeneralReg16", "usage": "use" }
1958       ]
1959     },
1960     {
1961       "encodings": {
1962         "Movw": { "opcodes": [ "66", "C7", "0" ] }
1963       },
1964       "args": [
1965         { "class": "Mem16", "usage": "def" },
1966         { "class": "Imm16" }
1967       ]
1968     },
1969     {
1970       "encodings": {
1971         "Mulxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "03", "F6" ], "vex_rm_to_reg": true },
1972         "Pdepl": { "feature": "BMI2", "opcodes": [ "C4", "02", "03", "F5" ], "vex_rm_to_reg": true },
1973         "Pextl": { "feature": "BMI2", "opcodes": [ "C4", "02", "02", "F5" ], "vex_rm_to_reg": true }
1974       },
1975       "args": [
1976         { "class": "GeneralReg32", "usage": "use_def" },
1977         { "class": "GeneralReg32", "usage": "use" },
1978         { "class": "GeneralReg32/Mem32", "usage": "use" }
1979       ]
1980     },
1981     {
1982       "encodings": {
1983         "Negl": { "opcodes": [ "F7", "3" ] },
1984         "RollByOne": { "opcodes": [ "D1", "0" ] },
1985         "RorlByOne": { "opcodes": [ "D1", "1" ] },
1986         "SarlByOne": { "opcodes": [ "D1", "7" ] },
1987         "ShllByOne": { "opcodes": [ "D1", "4" ] },
1988         "ShrlByOne": { "opcodes": [ "D1", "5" ] }
1989       },
1990       "args": [
1991         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
1992         { "class": "FLAGS", "usage": "def" }
1993       ]
1994     },
1995     {
1996       "encodings": {
1997         "Negw": { "opcodes": [ "66", "F7", "3" ] },
1998         "RolwByOne": { "opcodes": [ "66", "D1", "0" ] },
1999         "RorwByOne": { "opcodes": [ "66", "D1", "1" ] },
2000         "SarwByOne": { "opcodes": [ "66", "D1", "7" ] },
2001         "ShlwByOne": { "opcodes": [ "66", "D1", "4" ] },
2002         "ShrwByOne": { "opcodes": [ "66", "D1", "5" ] }
2003       },
2004       "args": [
2005         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2006         { "class": "FLAGS", "usage": "def" }
2007       ]
2008     },
2009     {
2010       "encodings": {
2011         "Notb": { "opcodes": [ "F6", "2" ] }
2012       },
2013       "args": [
2014         { "class": "GeneralReg8/Mem8", "usage": "use_def" }
2015       ]
2016     },
2017     {
2018       "encodings": {
2019         "Notl": { "opcodes": [ "F7", "2" ] }
2020       },
2021       "args": [
2022         { "class": "GeneralReg32/Mem32", "usage": "use_def" }
2023       ]
2024     },
2025     {
2026       "encodings": {
2027         "Notw": { "opcodes": [ "66", "F7", "2" ] }
2028       },
2029       "args": [
2030         { "class": "GeneralReg16/Mem16", "usage": "use_def" }
2031       ]
2032     },
2033     {
2034       "encodings": {
2035         "Pextrb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "14" ], "reg_to_rm": true },
2036         "Pextrd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "16" ], "reg_to_rm": true },
2037         "Pextrw": { "opcodes": [ "66", "0F", "C5" ] },
2038         "Vpextrb": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "14" ], "reg_to_rm": true },
2039         "Vpextrd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "16" ], "reg_to_rm": true },
2040         "Vpextrw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C5" ] }
2041       },
2042       "args": [
2043         { "class": "GeneralReg32", "usage": "def" },
2044         { "class": "VecReg128", "usage": "use" },
2045         { "class": "Imm8" }
2046       ]
2047     },
2048     {
2049       "encodings": {
2050         "Pinsrb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "20" ] },
2051         "Pinsrd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "22" ] },
2052         "Pinsrw": { "opcodes": [ "66", "0F", "C4" ] }
2053       },
2054       "args": [
2055         { "class": "VecReg128", "usage": "use_def" },
2056         { "class": "GeneralReg32", "usage": "use" },
2057         { "class": "Imm8" }
2058       ]
2059     },
2060     {
2061       "encodings": {
2062         "Pmovmskb": { "opcodes": [ "66", "0F", "D7" ] },
2063         "Vpmovmskb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D7" ] }
2064       },
2065       "args": [
2066         { "class": "GeneralReg32", "usage": "def" },
2067         { "class": "VecReg128", "usage": "use" }
2068       ]
2069     },
2070     {
2071       "encodings": {
2072         "Pmovsxbd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "21" ] },
2073         "Pmovsxwq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "24" ] },
2074         "Pmovzxbd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "31" ] },
2075         "Pmovzxwq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "34" ] }
2076       },
2077       "args": [
2078         { "class": "XmmReg", "usage": "def" },
2079         { "class": "XmmReg/VecMem32", "usage": "use" }
2080       ]
2081     },
2082     {
2083       "encodings": {
2084         "Pop": { "opcodes": [ "58" ] }
2085       },
2086       "args": [
2087         { "class": "RSP", "usage": "use_def" },
2088         { "class": "GeneralReg", "usage": "def" }
2089       ]
2090     },
2091     {
2092       "encodings": {
2093         "Pshufd": { "opcodes": [ "66", "0F", "70" ] },
2094         "Pshufhw": { "opcodes": [ "F3", "0F", "70" ] },
2095         "Pshuflw": { "opcodes": [ "F2", "0F", "70" ] },
2096         "Roundpd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "09" ] },
2097         "Roundps": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "08" ] },
2098         "Vpshufd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "70" ] },
2099         "Vpshufhw": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "70" ] },
2100         "Vpshuflw": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "70" ] },
2101         "Vroundpd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "09" ] },
2102         "Vroundps": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "08" ] }
2103       },
2104       "args": [
2105         { "class": "VecReg128", "usage": "def" },
2106         { "class": "VecReg128/VecMem128", "usage": "use" },
2107         { "class": "Imm8" }
2108       ]
2109     },
2110     {
2111       "encodings": {
2112         "Pslld": { "opcodes": [ "66", "0F", "72", "6" ] },
2113         "Pslldq": { "opcodes": [ "66", "0F", "73", "7" ] },
2114         "Psllq": { "opcodes": [ "66", "0F", "73", "6" ] },
2115         "Psllw": { "opcodes": [ "66", "0F", "71", "6" ] },
2116         "Psrad": { "opcodes": [ "66", "0F", "72", "4" ] },
2117         "Psraw": { "opcodes": [ "66", "0F", "71", "4" ] },
2118         "Psrld": { "opcodes": [ "66", "0F", "72", "2" ] },
2119         "Psrldq": { "opcodes": [ "66", "0F", "73", "3" ] },
2120         "Psrlq": { "opcodes": [ "66", "0F", "73", "2" ] },
2121         "Psrlw": { "opcodes": [ "66", "0F", "71", "2" ] }
2122       },
2123       "args": [
2124         { "class": "VecReg128", "usage": "use_def" },
2125         { "class": "Imm8" }
2126       ]
2127     },
2128     {
2129       "encodings": {
2130         "Push": { "opcodes": [ "68" ] }
2131       },
2132       "args": [
2133         { "class": "RSP", "usage": "use_def" },
2134         { "class": "Imm32" }
2135       ]
2136     },
2137     {
2138       "encodings": {
2139         "PushImm8": { "opcodes": [ "6A" ] }
2140       },
2141       "args": [
2142         { "class": "RSP", "usage": "use_def" },
2143         { "class": "Imm8" }
2144       ]
2145     },
2146     {
2147       "encodings": {
2148         "RclbByCl": { "opcodes": [ "D2", "2" ] },
2149         "RcrbByCl": { "opcodes": [ "D2", "3" ] }
2150       },
2151       "args": [
2152         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
2153         { "class": "CL", "usage": "use" },
2154         { "class": "FLAGS", "usage": "use_def" }
2155       ]
2156     },
2157     {
2158       "encodings": {
2159         "RclbByOne": { "opcodes": [ "D0", "2" ] },
2160         "RcrbByOne": { "opcodes": [ "D0", "3" ] }
2161       },
2162       "args": [
2163         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
2164         { "class": "FLAGS", "usage": "use_def" }
2165       ]
2166     },
2167     {
2168       "encodings": {
2169         "RcllByCl": { "opcodes": [ "D3", "2" ] },
2170         "RcrlByCl": { "opcodes": [ "D3", "3" ] }
2171       },
2172       "args": [
2173         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2174         { "class": "CL", "usage": "use" },
2175         { "class": "FLAGS", "usage": "use_def" }
2176       ]
2177     },
2178     {
2179       "encodings": {
2180         "RcllByOne": { "opcodes": [ "D1", "2" ] },
2181         "RcrlByOne": { "opcodes": [ "D1", "3" ] }
2182       },
2183       "args": [
2184         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2185         { "class": "FLAGS", "usage": "use_def" }
2186       ]
2187     },
2188     {
2189       "encodings": {
2190         "RclwByCl": { "opcodes": [ "66", "D3", "2" ] },
2191         "RcrwByCl": { "opcodes": [ "66", "D3", "3" ] }
2192       },
2193       "args": [
2194         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2195         { "class": "CL", "usage": "use" },
2196         { "class": "FLAGS", "usage": "use_def" }
2197       ]
2198     },
2199     {
2200       "encodings": {
2201         "RclwByOne": { "opcodes": [ "66", "D1", "2" ] },
2202         "RcrwByOne": { "opcodes": [ "66", "D1", "3" ] }
2203       },
2204       "args": [
2205         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2206         { "class": "FLAGS", "usage": "use_def" }
2207       ]
2208     },
2209     {
2210       "encodings": {
2211         "Ret": { "opcodes": [ "C3" ] }
2212       },
2213       "args": [
2214         { "class": "RSP", "usage": "use_def" }
2215       ]
2216     },
2217     {
2218       "encodings": {
2219         "RolbByCl": { "opcodes": [ "D2", "0" ] },
2220         "RorbByCl": { "opcodes": [ "D2", "1" ] },
2221         "SarbByCl": { "opcodes": [ "D2", "7" ] },
2222         "ShlbByCl": { "opcodes": [ "D2", "4" ] },
2223         "ShrbByCl": { "opcodes": [ "D2", "5" ] }
2224       },
2225       "args": [
2226         { "class": "GeneralReg8/Mem8", "usage": "use_def" },
2227         { "class": "CL", "usage": "use" },
2228         { "class": "FLAGS", "usage": "def" }
2229       ]
2230     },
2231     {
2232       "encodings": {
2233         "RollByCl": { "opcodes": [ "D3", "0" ] },
2234         "RorlByCl": { "opcodes": [ "D3", "1" ] },
2235         "SarlByCl": { "opcodes": [ "D3", "7" ] },
2236         "ShllByCl": { "opcodes": [ "D3", "4" ] },
2237         "ShrlByCl": { "opcodes": [ "D3", "5" ] }
2238       },
2239       "args": [
2240         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2241         { "class": "CL", "usage": "use" },
2242         { "class": "FLAGS", "usage": "def" }
2243       ]
2244     },
2245     {
2246       "encodings": {
2247         "RolwByCl": { "opcodes": [ "66", "D3", "0" ] },
2248         "RorwByCl": { "opcodes": [ "66", "D3", "1" ] },
2249         "SarwByCl": { "opcodes": [ "66", "D3", "7" ] },
2250         "ShlwByCl": { "opcodes": [ "66", "D3", "4" ] },
2251         "ShrwByCl": { "opcodes": [ "66", "D3", "5" ] }
2252       },
2253       "args": [
2254         { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2255         { "class": "CL", "usage": "use" },
2256         { "class": "FLAGS", "usage": "def" }
2257       ]
2258     },
2259     {
2260       "encodings": {
2261         "Rorxl": { "feature": "BMI2", "opcodes": [ "C4", "03", "03", "F0" ] }
2262       },
2263       "args": [
2264         { "class": "GeneralReg32", "usage": "def" },
2265         { "class": "GeneralReg32/Mem32", "usage": "use" },
2266         { "class": "Imm8" }
2267       ]
2268     },
2269     {
2270       "encodings": {
2271         "Roundsd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "0B" ] }
2272       },
2273       "args": [
2274         { "class": "FpReg64", "usage": "def" },
2275         { "class": "FpReg64/VecMem64", "usage": "use" },
2276         { "class": "Imm8" }
2277       ]
2278     },
2279     {
2280       "encodings": {
2281         "Roundss": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "0A" ] }
2282       },
2283       "args": [
2284         { "class": "FpReg32", "usage": "def" },
2285         { "class": "FpReg32/VecMem32", "usage": "use" },
2286         { "class": "Imm8" }
2287       ]
2288     },
2289     {
2290       "encodings": {
2291         "Sahf": { "opcodes": [ "9E" ] }
2292       },
2293       "args": [
2294         { "class": "EAX", "usage": "use" },
2295         { "class": "FLAGS", "usage": "def" }
2296       ]
2297     },
2298     {
2299       "encodings": {
2300         "Sarxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "02", "F7" ] },
2301         "Shlxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "01", "F7" ] },
2302         "Shrxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "03", "F7" ] }
2303       },
2304       "args": [
2305         { "class": "GeneralReg32", "usage": "use_def" },
2306         { "class": "GeneralReg32/Mem32", "usage": "use" },
2307         { "class": "GeneralReg32", "usage": "use" }
2308       ]
2309     },
2310     {
2311       "encodings": {
2312         "Setcc": { "opcodes": [ "0F", "90", "0" ] }
2313       },
2314       "args": [
2315         { "class": "Cond" },
2316         { "class": "GeneralReg8/Mem8", "usage": "def" },
2317         { "class": "FLAGS", "usage": "use" }
2318       ]
2319     },
2320     {
2321       "encodings": {
2322         "Shldl": { "opcodes": [ "0F", "A4" ], "reg_to_rm": true },
2323         "Shrdl": { "opcodes": [ "0F", "AC" ], "reg_to_rm": true }
2324       },
2325       "args": [
2326         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2327         { "class": "GeneralReg32", "usage": "use" },
2328         { "class": "Imm8" },
2329         { "class": "FLAGS", "usage": "def" }
2330       ]
2331     },
2332     {
2333       "encodings": {
2334         "ShldlByCl": { "opcodes": [ "0F", "A5" ], "reg_to_rm": true },
2335         "ShrdlByCl": { "opcodes": [ "0F", "AD" ], "reg_to_rm": true }
2336       },
2337       "args": [
2338         { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2339         { "class": "GeneralReg32", "usage": "use" },
2340         { "class": "CL", "usage": "use" },
2341         { "class": "FLAGS", "usage": "def" }
2342       ]
2343     },
2344     {
2345       "encodings": {
2346         "Shufpd": { "opcodes": [ "66", "0F", "C6" ] },
2347         "Shufps": { "opcodes": [ "0F", "C6" ] }
2348       },
2349       "args": [
2350         { "class": "VecReg128", "usage": "use_def" },
2351         { "class": "VecReg128/VecMem128", "usage": "use" },
2352         { "class": "Imm8" }
2353       ]
2354     },
2355     {
2356       "encodings": {
2357         "Sqrtsd": { "opcodes": [ "F2", "0F", "51" ] }
2358       },
2359       "args": [
2360         { "class": "FpReg64", "usage": "def" },
2361         { "class": "FpReg64/VecMem64", "usage": "use" }
2362       ]
2363     },
2364     {
2365       "encodings": {
2366         "Sqrtss": { "opcodes": [ "F3", "0F", "51" ] }
2367       },
2368       "args": [
2369         { "class": "FpReg32", "usage": "def" },
2370         { "class": "FpReg32/VecMem32", "usage": "use" }
2371       ]
2372     },
2373     {
2374       "encodings": {
2375         "Stmxcsr": { "opcodes": [ "0F", "AE", "3" ] },
2376         "Vstmxcsr": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "AE", "3" ] }
2377       },
2378       "args": [
2379         { "class": "Mem32", "usage": "def" }
2380       ]
2381     },
2382     {
2383       "encodings": {
2384         "Ucomisd": { "opcodes": [ "66", "0F", "2E" ] }
2385       },
2386       "args": [
2387         { "class": "FpReg64", "usage": "use" },
2388         { "class": "FpReg64/VecMem64", "usage": "use" },
2389         { "class": "FLAGS", "usage": "def" }
2390       ]
2391     },
2392     {
2393       "encodings": {
2394         "Ucomiss": { "opcodes": [ "0F", "2E" ] }
2395       },
2396       "args": [
2397         { "class": "FpReg32", "usage": "use" },
2398         { "class": "FpReg32/VecMem32", "usage": "use" },
2399         { "class": "FLAGS", "usage": "def" }
2400       ]
2401     },
2402     {
2403       "encodings": {
2404         "Vaddpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "58" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2405         "Vaddps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "58" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2406         "Vandpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "54" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2407         "Vandps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "54" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2408         "Vcmpeqpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "00" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2409         "Vcmpeqps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "00" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2410         "Vcmplepd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "02" ], "vex_rm_to_reg": true },
2411         "Vcmpleps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "02" ], "vex_rm_to_reg": true },
2412         "Vcmpltpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "01" ], "vex_rm_to_reg": true },
2413         "Vcmpltps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "01" ], "vex_rm_to_reg": true },
2414         "Vcmpneqpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "04" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2415         "Vcmpneqps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "04" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2416         "Vcmpnlepd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "06" ], "vex_rm_to_reg": true },
2417         "Vcmpnleps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "06" ], "vex_rm_to_reg": true },
2418         "Vcmpnltpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "05" ], "vex_rm_to_reg": true },
2419         "Vcmpnltps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "05" ], "vex_rm_to_reg": true },
2420         "Vcmpordpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "07" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2421         "Vcmpordps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "07" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2422         "Vcmpunordpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "03" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2423         "Vcmpunordps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "03" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2424         "Vdivpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5E" ], "vex_rm_to_reg": true },
2425         "Vdivps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5E" ], "vex_rm_to_reg": true },
2426         "Vhaddpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "7C" ], "vex_rm_to_reg": true },
2427         "Vhaddps": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "7C" ], "vex_rm_to_reg": true },
2428         "Vmaxpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5F" ], "vex_rm_to_reg": true },
2429         "Vmaxps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5F" ], "vex_rm_to_reg": true },
2430         "Vminpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5D" ], "vex_rm_to_reg": true },
2431         "Vminps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5D" ], "vex_rm_to_reg": true },
2432         "Vmulpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "59" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2433         "Vmulps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "59" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2434         "Vorpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "56" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2435         "Vorps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "56" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2436         "Vpackssdw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6B" ], "vex_rm_to_reg": true },
2437         "Vpacksswb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "63" ], "vex_rm_to_reg": true },
2438         "Vpackusdw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "2B" ], "vex_rm_to_reg": true },
2439         "Vpackuswb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "67" ], "vex_rm_to_reg": true },
2440         "Vpaddb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FC" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2441         "Vpaddd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FE" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2442         "Vpaddq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D4" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2443         "Vpaddsb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EC" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2444         "Vpaddsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "ED" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2445         "Vpaddusb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DC" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2446         "Vpaddusw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DD" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2447         "Vpaddw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FD" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2448         "Vpand": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DB" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2449         "Vpandn": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DF" ], "vex_rm_to_reg": true },
2450         "Vpavgb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E0" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2451         "Vpavgw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E3" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2452         "Vpcmpeqb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "74" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2453         "Vpcmpeqd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "76" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2454         "Vpcmpeqq": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "29" ], "vex_rm_to_reg": true },
2455         "Vpcmpeqw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "75" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2456         "Vpcmpgtb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "64" ], "vex_rm_to_reg": true },
2457         "Vpcmpgtd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "66" ], "vex_rm_to_reg": true },
2458         "Vpcmpgtq": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "37" ], "vex_rm_to_reg": true },
2459         "Vpcmpgtw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "65" ], "vex_rm_to_reg": true },
2460         "Vpmaxsb": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3C" ], "vex_rm_to_reg": true },
2461         "Vpmaxsd": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3D" ], "vex_rm_to_reg": true },
2462         "Vpmaxsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EE" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2463         "Vpmaxub": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DE" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2464         "Vpmaxud": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3F" ], "vex_rm_to_reg": true },
2465         "Vpmaxuw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3E" ], "vex_rm_to_reg": true },
2466         "Vpminsb": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "38" ], "vex_rm_to_reg": true },
2467         "Vpminsd": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "39" ], "vex_rm_to_reg": true },
2468         "Vpminsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EA" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2469         "Vpminub": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DA" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2470         "Vpminud": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3B" ], "vex_rm_to_reg": true },
2471         "Vpminuw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3A" ], "vex_rm_to_reg": true },
2472         "Vpmulhrsw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "0B" ], "vex_rm_to_reg": true },
2473         "Vpmulhw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E5" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2474         "Vpmulld": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "40" ], "vex_rm_to_reg": true },
2475         "Vpmullw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D5" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2476         "Vpmuludq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F4" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2477         "Vpor": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EB" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2478         "Vpsadbw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F6" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2479         "Vpshufb": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "00" ], "vex_rm_to_reg": true },
2480         "Vpslld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F2" ], "vex_rm_to_reg": true },
2481         "Vpsllq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F3" ], "vex_rm_to_reg": true },
2482         "Vpsllw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F1" ], "vex_rm_to_reg": true },
2483         "Vpsrad": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E2" ], "vex_rm_to_reg": true },
2484         "Vpsraw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E1" ], "vex_rm_to_reg": true },
2485         "Vpsrld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D2" ], "vex_rm_to_reg": true },
2486         "Vpsrlq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D3" ], "vex_rm_to_reg": true },
2487         "Vpsrlw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D1" ], "vex_rm_to_reg": true },
2488         "Vpsubb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F8" ], "vex_rm_to_reg": true },
2489         "Vpsubd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FA" ], "vex_rm_to_reg": true },
2490         "Vpsubq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FB" ], "vex_rm_to_reg": true },
2491         "Vpsubsb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E8" ], "vex_rm_to_reg": true },
2492         "Vpsubsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E9" ], "vex_rm_to_reg": true },
2493         "Vpsubusb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D8" ], "vex_rm_to_reg": true },
2494         "Vpsubusw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D9" ], "vex_rm_to_reg": true },
2495         "Vpsubw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F9" ], "vex_rm_to_reg": true },
2496         "Vpunpckhbw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "68" ], "vex_rm_to_reg": true },
2497         "Vpunpckhdq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6A" ], "vex_rm_to_reg": true },
2498         "Vpunpckhqdq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6D" ], "vex_rm_to_reg": true },
2499         "Vpunpckhwd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "69" ], "vex_rm_to_reg": true },
2500         "Vpunpcklbw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "60" ], "vex_rm_to_reg": true },
2501         "Vpunpckldq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "62" ], "vex_rm_to_reg": true },
2502         "Vpunpcklqdq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6C" ], "vex_rm_to_reg": true },
2503         "Vpunpcklwd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "61" ], "vex_rm_to_reg": true },
2504         "Vpxor": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EF" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2505         "Vsubpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5C" ], "vex_rm_to_reg": true },
2506         "Vsubps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5C" ], "vex_rm_to_reg": true },
2507         "Vxorpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "57" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2508         "Vxorps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "57" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true }
2509       },
2510       "args": [
2511         { "class": "VecReg128", "usage": "def" },
2512         { "class": "VecReg128", "usage": "use" },
2513         { "class": "VecReg128/VecMem128", "usage": "use" }
2514       ]
2515     },
2516     {
2517       "encodings": {
2518         "Vaddsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "58" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2519         "Vcmpeqsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "00" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2520         "Vcmplesd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "02" ], "vex_rm_to_reg": true },
2521         "Vcmpltsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "01" ], "vex_rm_to_reg": true },
2522         "Vcmpneqsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "04" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2523         "Vcmpnlesd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "06" ], "vex_rm_to_reg": true },
2524         "Vcmpnltsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "05" ], "vex_rm_to_reg": true },
2525         "Vcmpordsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "07" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2526         "Vcmpunordsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "03" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2527         "Vdivsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "5E" ], "vex_rm_to_reg": true },
2528         "Vmulsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "59" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2529         "Vsubsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "5C" ], "vex_rm_to_reg": true }
2530       },
2531       "args": [
2532         { "class": "FpReg64", "usage": "def" },
2533         { "class": "FpReg64", "usage": "use" },
2534         { "class": "FpReg64/VecMem64", "usage": "use" }
2535       ]
2536     },
2537     {
2538       "encodings": {
2539         "Vaddss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "58" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2540         "Vcmpeqss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "00" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2541         "Vcmpless": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "02" ], "vex_rm_to_reg": true },
2542         "Vcmpltss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "01" ], "vex_rm_to_reg": true },
2543         "Vcmpneqss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "04" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2544         "Vcmpnless": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "06" ], "vex_rm_to_reg": true },
2545         "Vcmpnltss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "05" ], "vex_rm_to_reg": true },
2546         "Vcmpordss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "07" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2547         "Vcmpunordss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "03" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2548         "Vdivss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5E" ], "vex_rm_to_reg": true },
2549         "Vmulss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "59" ], "is_optimizable_using_commutation": true, "vex_rm_to_reg": true },
2550         "Vsubss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5C" ], "vex_rm_to_reg": true }
2551       },
2552       "args": [
2553         { "class": "FpReg32", "usage": "def" },
2554         { "class": "FpReg32", "usage": "use" },
2555         { "class": "FpReg32/VecMem32", "usage": "use" }
2556       ]
2557     },
2558     {
2559       "encodings": {
2560         "Vcvtsd2ss": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "5A" ], "vex_rm_to_reg": true }
2561       },
2562       "args": [
2563         { "class": "FpReg32", "usage": "def" },
2564         { "class": "XmmReg", "usage": "use" },
2565         { "class": "FpReg64/VecMem64", "usage": "use" }
2566       ]
2567     },
2568     {
2569       "encodings": {
2570         "Vcvtsi2sdl": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "2A" ], "vex_rm_to_reg": true }
2571       },
2572       "args": [
2573         { "class": "FpReg64", "usage": "def" },
2574         { "class": "XmmReg", "usage": "use" },
2575         { "class": "GeneralReg32/Mem32", "usage": "use" }
2576       ]
2577     },
2578     {
2579       "encodings": {
2580         "Vcvtsi2ssl": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "2A" ], "vex_rm_to_reg": true }
2581       },
2582       "args": [
2583         { "class": "FpReg32", "usage": "def" },
2584         { "class": "XmmReg", "usage": "use" },
2585         { "class": "GeneralReg32/Mem32", "usage": "use" }
2586       ]
2587     },
2588     {
2589       "encodings": {
2590         "Vcvtss2sd": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5A" ], "vex_rm_to_reg": true }
2591       },
2592       "args": [
2593         { "class": "FpReg64", "usage": "def" },
2594         { "class": "XmmReg", "usage": "use" },
2595         { "class": "FpReg32/VecMem32", "usage": "use" }
2596       ]
2597     },
2598     {
2599       "encodings": {
2600         "Vfmadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "98" ], "vex_rm_to_reg": true },
2601         "Vfmadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "98" ], "vex_rm_to_reg": true },
2602         "Vfmadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A8" ], "vex_rm_to_reg": true },
2603         "Vfmadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A8" ], "vex_rm_to_reg": true },
2604         "Vfmadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B8" ], "vex_rm_to_reg": true },
2605         "Vfmadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B8" ], "vex_rm_to_reg": true },
2606         "Vfmaddsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "96" ], "vex_rm_to_reg": true },
2607         "Vfmaddsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "96" ], "vex_rm_to_reg": true },
2608         "Vfmaddsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A6" ], "vex_rm_to_reg": true },
2609         "Vfmaddsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A6" ], "vex_rm_to_reg": true },
2610         "Vfmaddsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B6" ], "vex_rm_to_reg": true },
2611         "Vfmaddsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B6" ], "vex_rm_to_reg": true },
2612         "Vfmsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9A" ], "vex_rm_to_reg": true },
2613         "Vfmsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9A" ], "vex_rm_to_reg": true },
2614         "Vfmsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AA" ], "vex_rm_to_reg": true },
2615         "Vfmsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AA" ], "vex_rm_to_reg": true },
2616         "Vfmsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BA" ], "vex_rm_to_reg": true },
2617         "Vfmsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BA" ], "vex_rm_to_reg": true },
2618         "Vfmsubadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "97" ], "vex_rm_to_reg": true },
2619         "Vfmsubadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "97" ], "vex_rm_to_reg": true },
2620         "Vfmsubadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A7" ], "vex_rm_to_reg": true },
2621         "Vfmsubadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A7" ], "vex_rm_to_reg": true },
2622         "Vfmsubadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B7" ], "vex_rm_to_reg": true },
2623         "Vfmsubadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B7" ], "vex_rm_to_reg": true },
2624         "Vfnmadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9C" ], "vex_rm_to_reg": true },
2625         "Vfnmadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9C" ], "vex_rm_to_reg": true },
2626         "Vfnmadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AC" ], "vex_rm_to_reg": true },
2627         "Vfnmadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AC" ], "vex_rm_to_reg": true },
2628         "Vfnmadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BC" ], "vex_rm_to_reg": true },
2629         "Vfnmadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BC" ], "vex_rm_to_reg": true },
2630         "Vfnmsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9E" ], "vex_rm_to_reg": true },
2631         "Vfnmsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9E" ], "vex_rm_to_reg": true },
2632         "Vfnmsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AE" ], "vex_rm_to_reg": true },
2633         "Vfnmsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AE" ], "vex_rm_to_reg": true },
2634         "Vfnmsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BE" ], "vex_rm_to_reg": true },
2635         "Vfnmsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BE" ], "vex_rm_to_reg": true }
2636       },
2637       "args": [
2638         { "class": "VecReg128", "usage": "use_def" },
2639         { "class": "VecReg128", "usage": "use" },
2640         { "class": "VecReg128/VecMem128", "usage": "use" }
2641       ]
2642     },
2643     {
2644       "encodings": {
2645         "Vfmadd132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "99" ], "vex_rm_to_reg": true },
2646         "Vfmadd213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A9" ], "vex_rm_to_reg": true },
2647         "Vfmadd231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B9" ], "vex_rm_to_reg": true },
2648         "Vfmsub132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9B" ], "vex_rm_to_reg": true },
2649         "Vfmsub213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AB" ], "vex_rm_to_reg": true },
2650         "Vfmsub231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BB" ], "vex_rm_to_reg": true },
2651         "Vfnmadd132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9D" ], "vex_rm_to_reg": true },
2652         "Vfnmadd213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AD" ], "vex_rm_to_reg": true },
2653         "Vfnmadd231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BD" ], "vex_rm_to_reg": true },
2654         "Vfnmsub132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9F" ], "vex_rm_to_reg": true },
2655         "Vfnmsub213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AF" ], "vex_rm_to_reg": true },
2656         "Vfnmsub231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BF" ], "vex_rm_to_reg": true }
2657       },
2658       "args": [
2659         { "class": "XmmReg", "usage": "use_def" },
2660         { "class": "XmmReg", "usage": "use" },
2661         { "class": "XmmReg/VecMem64", "usage": "use" }
2662       ]
2663     },
2664     {
2665       "encodings": {
2666         "Vfmadd132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "99" ], "vex_rm_to_reg": true },
2667         "Vfmadd213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A9" ], "vex_rm_to_reg": true },
2668         "Vfmadd231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B9" ], "vex_rm_to_reg": true },
2669         "Vfmsub132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9B" ], "vex_rm_to_reg": true },
2670         "Vfmsub213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AB" ], "vex_rm_to_reg": true },
2671         "Vfmsub231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BB" ], "vex_rm_to_reg": true },
2672         "Vfnmadd132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9D" ], "vex_rm_to_reg": true },
2673         "Vfnmadd213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AD" ], "vex_rm_to_reg": true },
2674         "Vfnmadd231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BD" ], "vex_rm_to_reg": true },
2675         "Vfnmsub132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9F" ], "vex_rm_to_reg": true },
2676         "Vfnmsub213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AF" ], "vex_rm_to_reg": true },
2677         "Vfnmsub231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BF" ], "vex_rm_to_reg": true }
2678       },
2679       "args": [
2680         { "class": "XmmReg", "usage": "use_def" },
2681         { "class": "XmmReg", "usage": "use" },
2682         { "class": "XmmReg/VecMem32", "usage": "use" }
2683       ]
2684     },
2685     {
2686       "encodings": {
2687         "Vfmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "69" ], "vex_rm_imm_to_reg": true },
2688         "Vfmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "68" ], "vex_rm_imm_to_reg": true },
2689         "Vfmaddsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5D" ], "vex_rm_imm_to_reg": true },
2690         "Vfmaddsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5C" ], "vex_rm_imm_to_reg": true },
2691         "Vfmsubaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5F" ], "vex_rm_imm_to_reg": true },
2692         "Vfmsubaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5E" ], "vex_rm_imm_to_reg": true },
2693         "Vfmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6D" ], "vex_rm_imm_to_reg": true },
2694         "Vfmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6C" ], "vex_rm_imm_to_reg": true },
2695         "Vfnmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "79" ], "vex_rm_imm_to_reg": true },
2696         "Vfnmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "78" ], "vex_rm_imm_to_reg": true },
2697         "Vfnmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7D" ], "vex_rm_imm_to_reg": true },
2698         "Vfnmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7C" ], "vex_rm_imm_to_reg": true }
2699       },
2700       "args": [
2701         { "class": "VecReg128", "usage": "def" },
2702         { "class": "VecReg128", "usage": "use" },
2703         { "class": "VecMem128", "usage": "use" },
2704         { "class": "VecReg128", "usage": "use" }
2705       ]
2706     },
2707     {
2708       "encodings": {
2709         "Vfmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "69" ], "vex_imm_rm_to_reg": true },
2710         "Vfmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "68" ], "vex_imm_rm_to_reg": true },
2711         "Vfmaddsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5D" ], "vex_imm_rm_to_reg": true },
2712         "Vfmaddsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5C" ], "vex_imm_rm_to_reg": true },
2713         "Vfmsubaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5F" ], "vex_imm_rm_to_reg": true },
2714         "Vfmsubaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5E" ], "vex_imm_rm_to_reg": true },
2715         "Vfmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6D" ], "vex_imm_rm_to_reg": true },
2716         "Vfmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6C" ], "vex_imm_rm_to_reg": true },
2717         "Vfnmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "79" ], "vex_imm_rm_to_reg": true },
2718         "Vfnmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "78" ], "vex_imm_rm_to_reg": true },
2719         "Vfnmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7D" ], "vex_imm_rm_to_reg": true },
2720         "Vfnmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7C" ], "vex_imm_rm_to_reg": true }
2721       },
2722       "args": [
2723         { "class": "VecReg128", "usage": "def" },
2724         { "class": "VecReg128", "usage": "use" },
2725         { "class": "VecReg128", "usage": "use" },
2726         { "class": "VecReg128/VecMem128", "usage": "use" }
2727       ]
2728     },
2729     {
2730       "encodings": {
2731         "Vfmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6B" ], "vex_rm_imm_to_reg": true },
2732         "Vfmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6F" ], "vex_rm_imm_to_reg": true },
2733         "Vfnmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7B" ], "vex_rm_imm_to_reg": true },
2734         "Vfnmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7F" ], "vex_rm_imm_to_reg": true }
2735       },
2736       "args": [
2737         { "class": "XmmReg", "usage": "def" },
2738         { "class": "XmmReg", "usage": "use" },
2739         { "class": "VecMem64", "usage": "use" },
2740         { "class": "XmmReg", "usage": "use" }
2741       ]
2742     },
2743     {
2744       "encodings": {
2745         "Vfmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6B" ], "vex_imm_rm_to_reg": true },
2746         "Vfmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6F" ], "vex_imm_rm_to_reg": true },
2747         "Vfnmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7B" ], "vex_imm_rm_to_reg": true },
2748         "Vfnmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7F" ], "vex_imm_rm_to_reg": true }
2749       },
2750       "args": [
2751         { "class": "XmmReg", "usage": "def" },
2752         { "class": "XmmReg", "usage": "use" },
2753         { "class": "XmmReg", "usage": "use" },
2754         { "class": "XmmReg/VecMem64", "usage": "use" }
2755       ]
2756     },
2757     {
2758       "encodings": {
2759         "Vfmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6A" ], "vex_rm_imm_to_reg": true },
2760         "Vfmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6E" ], "vex_rm_imm_to_reg": true },
2761         "Vfnmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7A" ], "vex_rm_imm_to_reg": true },
2762         "Vfnmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7E" ], "vex_rm_imm_to_reg": true }
2763       },
2764       "args": [
2765         { "class": "XmmReg", "usage": "def" },
2766         { "class": "XmmReg", "usage": "use" },
2767         { "class": "VecMem32", "usage": "use" },
2768         { "class": "XmmReg", "usage": "use" }
2769       ]
2770     },
2771     {
2772       "encodings": {
2773         "Vfmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6A" ], "vex_imm_rm_to_reg": true },
2774         "Vfmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6E" ], "vex_imm_rm_to_reg": true },
2775         "Vfnmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7A" ], "vex_imm_rm_to_reg": true },
2776         "Vfnmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7E" ], "vex_imm_rm_to_reg": true }
2777       },
2778       "args": [
2779         { "class": "XmmReg", "usage": "def" },
2780         { "class": "XmmReg", "usage": "use" },
2781         { "class": "XmmReg", "usage": "use" },
2782         { "class": "XmmReg/VecMem32", "usage": "use" }
2783       ]
2784     },
2785     {
2786       "encodings": {
2787         "Vmovapd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "28" ] },
2788         "Vmovaps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "28" ] }
2789       },
2790       "args": [
2791         { "class": "XmmReg", "usage": "def" },
2792         { "class": "VecMem128", "usage": "use" }
2793       ]
2794     },
2795     {
2796       "encodings": {
2797         "Vmovdqa": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6F" ] },
2798         "Vmovdqu": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "6F" ] }
2799       },
2800       "args": [
2801         { "class": "XmmReg", "usage": "def" },
2802         { "class": "VecMem128", "usage": "use" }
2803       ]
2804     },
2805     {
2806       "encodings": {
2807         "Vmovhlps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "12" ], "vex_rm_to_reg": true },
2808         "Vmovlhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "16" ], "vex_rm_to_reg": true }
2809       },
2810       "args": [
2811         { "class": "XmmReg", "usage": "def" },
2812         { "class": "XmmReg", "usage": "use" },
2813         { "class": "XmmReg", "usage": "use" }
2814       ]
2815     },
2816     {
2817       "encodings": {
2818         "Vmovhpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "16" ] },
2819         "Vmovhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "16" ] },
2820         "Vmovlpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "12" ] },
2821         "Vmovlps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "12" ] }
2822       },
2823       "args": [
2824         { "class": "XmmReg", "usage": "def" },
2825         { "class": "XmmReg", "usage": "use" },
2826         { "class": "VecMem64", "usage": "use" }
2827       ]
2828     },
2829     {
2830       "encodings": {
2831         "Vpermil2pd": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "49" ], "vex_imm_rm_to_reg": true },
2832         "Vpermil2ps": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "48" ], "vex_imm_rm_to_reg": true }
2833       },
2834       "args": [
2835         { "class": "VecReg128", "usage": "def" },
2836         { "class": "VecReg128", "usage": "use" },
2837         { "class": "VecReg128", "usage": "use" },
2838         { "class": "VecMem128", "usage": "use" },
2839         { "class": "Imm2" }
2840       ]
2841     },
2842     {
2843       "encodings": {
2844         "Vpermil2pd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "49" ], "vex_rm_imm_to_reg": true },
2845         "Vpermil2ps": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "48" ], "vex_rm_imm_to_reg": true }
2846       },
2847       "args": [
2848         { "class": "VecReg128", "usage": "def" },
2849         { "class": "VecReg128", "usage": "use" },
2850         { "class": "VecReg128/VecMem128", "usage": "use" },
2851         { "class": "VecReg128", "usage": "use" },
2852         { "class": "Imm2" }
2853       ]
2854     },
2855     {
2856       "encodings": {
2857         "Vpinsrb": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "20" ], "vex_rm_to_reg": true },
2858         "Vpinsrd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "22" ], "vex_rm_to_reg": true },
2859         "Vpinsrw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C4" ], "vex_rm_to_reg": true }
2860       },
2861       "args": [
2862         { "class": "VecReg128", "usage": "use_def" },
2863         { "class": "VecReg128", "usage": "use" },
2864         { "class": "GeneralReg32", "usage": "use" },
2865         { "class": "Imm8" }
2866       ]
2867     },
2868     {
2869       "encodings": {
2870         "Vpslld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "72", "6" ], "rm_to_vex": true },
2871         "Vpslldq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "7" ], "rm_to_vex": true },
2872         "Vpsllq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "6" ], "rm_to_vex": true },
2873         "Vpsllw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "71", "6" ], "rm_to_vex": true },
2874         "Vpsrad": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "72", "4" ], "rm_to_vex": true },
2875         "Vpsraw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "71", "4" ], "rm_to_vex": true },
2876         "Vpsrld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "72", "2" ], "rm_to_vex": true },
2877         "Vpsrldq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "3" ], "rm_to_vex": true },
2878         "Vpsrlq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "2" ], "rm_to_vex": true },
2879         "Vpsrlw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "71", "2" ], "rm_to_vex": true }
2880       },
2881       "args": [
2882         { "class": "VecReg128", "usage": "def" },
2883         { "class": "VecReg128", "usage": "use" },
2884         { "class": "Imm8" }
2885       ]
2886     },
2887     {
2888       "encodings": {
2889         "Vroundsd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "0B" ], "vex_rm_to_reg": true }
2890       },
2891       "args": [
2892         { "class": "FpReg64", "usage": "def" },
2893         { "class": "XmmReg", "usage": "use" },
2894         { "class": "FpReg64/VecMem64", "usage": "use" },
2895         { "class": "Imm8" }
2896       ]
2897     },
2898     {
2899       "encodings": {
2900         "Vroundss": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "0A" ], "vex_rm_to_reg": true }
2901       },
2902       "args": [
2903         { "class": "FpReg32", "usage": "def" },
2904         { "class": "XmmReg", "usage": "use" },
2905         { "class": "FpReg32/VecMem32", "usage": "use" },
2906         { "class": "Imm8" }
2907       ]
2908     },
2909     {
2910       "encodings": {
2911         "Vshufpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C6" ], "vex_rm_to_reg": true },
2912         "Vshufps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C6" ], "vex_rm_to_reg": true }
2913       },
2914       "args": [
2915         { "class": "VecReg128", "usage": "def" },
2916         { "class": "VecReg128", "usage": "use" },
2917         { "class": "VecReg128/VecMem128", "usage": "use" },
2918         { "class": "Imm8" }
2919       ]
2920     },
2921     {
2922       "stems": [ "Xchgl" ],
2923       "args": [
2924         { "class": "GeneralReg32", "usage": "use_def" },
2925         { "class": "GeneralReg32", "usage": "use_def" }
2926       ]
2927     },
2928     {
2929       "encodings": {
2930         "Xchgl": { "opcodes": [ "87" ] }
2931       },
2932       "args": [
2933         { "class": "GeneralReg32", "usage": "use_def" },
2934         { "class": "Mem32", "usage": "use_def" }
2935       ]
2936     }
2937   ]
2938 }
2939