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