• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "License": [
3    "Copyright (C) 2023 The Android Open Source Project",
4    "",
5    "Licensed under the Apache License, Version 2.0 (the “License”);",
6    "you may not use this file except in compliance with the License.",
7    "You may obtain a copy of the License at",
8    "",
9    "     http://www.apache.org/licenses/LICENSE-2.0",
10    "",
11    "Unless required by applicable law or agreed to in writing, software",
12    "distributed under the License is distributed on an “AS IS” BASIS,",
13    "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.",
14    "See the License for the specific language governing permissions and",
15    "limitations under the License."
16  ],
17  "arch": "common_x86",
18  "insns": [
19    {
20      "encodings": {
21        "Adcb": { "opcodes": [ "80", "2" ] },
22        "Rclb": { "opcodes": [ "C0", "2" ] },
23        "Rcrb": { "opcodes": [ "C0", "3" ] },
24        "Sbbb": { "opcodes": [ "80", "3" ] }
25      },
26      "args": [
27        { "class": "GeneralReg8/Mem8", "usage": "use_def" },
28        { "class": "Imm8" },
29        { "class": "FLAGS", "usage": "use_def" }
30      ]
31    },
32    {
33      "encodings": {
34        "Adcb": { "opcode": "12" },
35        "Sbbb": { "opcode": "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": { "opcode": "10", "type": "reg_to_rm" },
46        "Sbbb": { "opcode": "18", "type": "reg_to_rm" }
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": { "opcode": "14" },
57        "SbbbAccumulator": { "opcode": "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": { "opcode": "13" },
68        "Sbbl": { "opcode": "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": { "opcode": "11", "type": "reg_to_rm" },
79        "Sbbl": { "opcode": "19", "type": "reg_to_rm", "dependency_breaking": "true" }
80      },
81      "args": [
82        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
83        { "class": "GeneralReg32", "usage": "use" },
84        { "class": "FLAGS", "usage": "use_def" }
85      ]
86    },
87    {
88      "encodings": {
89        "Adcl": { "opcodes": [ "81", "2" ] },
90        "Sbbl": { "opcodes": [ "81", "3" ] }
91      },
92      "args": [
93        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
94        { "class": "Imm32" },
95        { "class": "FLAGS", "usage": "use_def" }
96      ]
97    },
98    {
99      "encodings": {
100        "AdclAccumulator": { "opcode": "15" },
101        "SbblAccumulator": { "opcode": "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", "11" ], "type": "reg_to_rm" },
136        "Sbbw": { "opcodes": [ "66", "19" ], "type": "reg_to_rm" }
137      },
138      "args": [
139        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
140        { "class": "GeneralReg16", "usage": "use" },
141        { "class": "FLAGS", "usage": "use_def" }
142      ]
143    },
144    {
145      "encodings": {
146        "Adcw": { "opcodes": [ "66", "81", "2" ] },
147        "Sbbw": { "opcodes": [ "66", "81", "3" ] }
148      },
149      "args": [
150        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
151        { "class": "Imm16" },
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": { "opcode": "02" },
201        "Andb": { "opcode": "22" },
202        "Orb": { "opcode": "0A" },
203        "Subb": { "opcode": "2A" },
204        "Xorb": { "opcode": "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": { "opcode": "00", "type": "reg_to_rm" },
215        "Andb": { "opcode": "20", "type": "reg_to_rm" },
216        "Orb": { "opcode": "08", "type": "reg_to_rm" },
217        "Subb": { "opcode": "28", "type": "reg_to_rm" },
218        "Xorb": { "opcode": "30", "type": "reg_to_rm" }
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": { "opcode": "04" },
229        "AndbAccumulator": { "opcode": "24" },
230        "OrbAccumulator": { "opcode": "0C" },
231        "SubbAccumulator": { "opcode": "2C" },
232        "XorbAccumulator": { "opcode": "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": { "opcode": "01", "type": "reg_to_rm" },
243        "Andl": { "opcode": "21", "type": "reg_to_rm" },
244        "Btcl": { "opcodes": [ "0F", "BB" ], "type": "reg_to_rm" },
245        "Btrl": { "opcodes": [ "0F", "B3" ], "type": "reg_to_rm" },
246        "Btsl": { "opcodes": [ "0F", "AB" ], "type": "reg_to_rm" },
247        "Orl": { "opcode": "09", "type": "reg_to_rm" },
248        "Subl": { "opcode": "29", "type": "reg_to_rm", "dependency_breaking": "true" },
249        "Xorl": { "opcode": "31", "type": "reg_to_rm", "dependency_breaking": "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": { "opcode": "03" },
260        "Andl": { "opcode": "23" },
261        "Orl": { "opcode": "0B" },
262        "Subl": { "opcode": "2B" },
263        "Xorl": { "opcode": "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": { "opcode": "05" },
288        "AndlAccumulator": { "opcode": "25" },
289        "OrlAccumulator": { "opcode": "0D" },
290        "SublAccumulator": { "opcode": "2D" },
291        "XorlAccumulator": { "opcode": "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        "Aesdec": { "feature": "AES", "opcodes": [ "66", "0F", "38", "DE" ] },
327        "Aesdeclast": { "feature": "AES", "opcodes": [ "66", "0F", "38", "DF" ] },
328        "Aesenc": { "feature": "AES", "opcodes": [ "66", "0F", "38", "DC" ] },
329        "Aesenclast": { "feature": "AES", "opcodes": [ "66", "0F", "38", "DD" ] },
330        "Andpd": { "opcodes": [ "66", "0F", "54" ] },
331        "Andps": { "opcodes": [ "0F", "54" ] },
332        "Cmpeqpd": { "opcodes": [ "66", "0F", "C2", "00" ] },
333        "Cmpeqps": { "opcodes": [ "0F", "C2", "00" ] },
334        "Cmplepd": { "opcodes": [ "66", "0F", "C2", "02" ] },
335        "Cmpleps": { "opcodes": [ "0F", "C2", "02" ] },
336        "Cmpltpd": { "opcodes": [ "66", "0F", "C2", "01" ] },
337        "Cmpltps": { "opcodes": [ "0F", "C2", "01" ] },
338        "Cmpneqpd": { "opcodes": [ "66", "0F", "C2", "04" ] },
339        "Cmpneqps": { "opcodes": [ "0F", "C2", "04" ] },
340        "Cmpnlepd": { "opcodes": [ "66", "0F", "C2", "06" ] },
341        "Cmpnleps": { "opcodes": [ "0F", "C2", "06" ] },
342        "Cmpnltpd": { "opcodes": [ "66", "0F", "C2", "05" ] },
343        "Cmpnltps": { "opcodes": [ "0F", "C2", "05" ] },
344        "Cmpordpd": { "opcodes": [ "66", "0F", "C2", "07" ] },
345        "Cmpordps": { "opcodes": [ "0F", "C2", "07" ] },
346        "Cmpunordpd": { "opcodes": [ "66", "0F", "C2", "03" ] },
347        "Cmpunordps": { "opcodes": [ "0F", "C2", "03" ] },
348        "Divpd": { "opcodes": [ "66", "0F", "5E" ] },
349        "Divps": { "opcodes": [ "0F", "5E" ] },
350        "Haddpd": { "feature": "SSE3", "opcodes": [ "66", "0F", "7C" ] },
351        "Haddps": { "feature": "SSE3", "opcodes": [ "F2", "0F", "7C" ] },
352        "Maxpd": { "opcodes": [ "66", "0F", "5F" ] },
353        "Maxps": { "opcodes": [ "0F", "5F" ] },
354        "Minpd": { "opcodes": [ "66", "0F", "5D" ] },
355        "Minps": { "opcodes": [ "0F", "5D" ] },
356        "Mulpd": { "opcodes": [ "66", "0F", "59" ] },
357        "Mulps": { "opcodes": [ "0F", "59" ] },
358        "Orpd": { "opcodes": [ "66", "0F", "56" ] },
359        "Orps": { "opcodes": [ "0F", "56" ] },
360        "Packssdw": { "opcodes": [ "66", "0F", "6B" ] },
361        "Packsswb": { "opcodes": [ "66", "0F", "63" ] },
362        "Packusdw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "2B" ] },
363        "Packuswb": { "opcodes": [ "66", "0F", "67" ] },
364        "Paddb": { "opcodes": [ "66", "0F", "FC" ] },
365        "Paddd": { "opcodes": [ "66", "0F", "FE" ] },
366        "Paddq": { "opcodes": [ "66", "0F", "D4" ] },
367        "Paddsb": { "opcodes": [ "66", "0F", "EC" ] },
368        "Paddsw": { "opcodes": [ "66", "0F", "ED" ] },
369        "Paddusb": { "opcodes": [ "66", "0F", "DC" ] },
370        "Paddusw": { "opcodes": [ "66", "0F", "DD" ] },
371        "Paddw": { "opcodes": [ "66", "0F", "FD" ] },
372        "Pand": { "opcodes": [ "66", "0F", "DB" ] },
373        "Pandn": { "opcodes": [ "66", "0F", "DF" ], "dependency_breaking": "true" },
374        "Pavgb": { "opcodes": [ "66", "0F", "E0" ] },
375        "Pavgw": { "opcodes": [ "66", "0F", "E3" ] },
376        "Pclmulhqhqdq": { "feature": "CLMUL", "opcodes": [ "66", "0F", "3A", "44", "11" ] },
377        "Pclmulhqlqdq": { "feature": "CLMUL", "opcodes": [ "66", "0F", "3A", "44", "01" ] },
378        "Pclmullqhqdq": { "feature": "CLMUL", "opcodes": [ "66", "0F", "3A", "44", "10" ] },
379        "Pclmullqlqdq": { "feature": "CLMUL", "opcodes": [ "66", "0F", "3A", "44", "00" ] },
380        "Pcmpeqb": { "opcodes": [ "66", "0F", "74" ], "dependency_breaking": "true" },
381        "Pcmpeqd": { "opcodes": [ "66", "0F", "76" ], "dependency_breaking": "true" },
382        "Pcmpeqq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "29" ], "dependency_breaking": "true" },
383        "Pcmpeqw": { "opcodes": [ "66", "0F", "75" ], "dependency_breaking": "true" },
384        "Pcmpgtb": { "opcodes": [ "66", "0F", "64" ], "dependency_breaking": "true" },
385        "Pcmpgtd": { "opcodes": [ "66", "0F", "66" ], "dependency_breaking": "true" },
386        "Pcmpgtq": { "feature": "SSE4_2", "opcodes": [ "66", "0F", "38", "37" ], "dependency_breaking": "true" },
387        "Pcmpgtw": { "opcodes": [ "66", "0F", "65" ], "dependency_breaking": "true" },
388        "Phaddd": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "02" ] },
389        "Phaddw": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "01" ] },
390        "Pmaxsb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3C" ] },
391        "Pmaxsd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3D" ] },
392        "Pmaxsw": { "opcodes": [ "66", "0F", "EE" ] },
393        "Pmaxub": { "opcodes": [ "66", "0F", "DE" ] },
394        "Pmaxud": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3F" ] },
395        "Pmaxuw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3E" ] },
396        "Pminsb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "38" ] },
397        "Pminsd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "39" ] },
398        "Pminsw": { "opcodes": [ "66", "0F", "EA" ] },
399        "Pminub": { "opcodes": [ "66", "0F", "DA" ] },
400        "Pminud": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3B" ] },
401        "Pminuw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "3A" ] },
402        "Pmulhrsw": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "0B" ] },
403        "Pmulhw": { "opcodes": [ "66", "0F", "E5" ] },
404        "Pmulld": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "40" ] },
405        "Pmullw": { "opcodes": [ "66", "0F", "D5" ] },
406        "Pmuludq": { "opcodes": [ "66", "0F", "F4" ] },
407        "Por": { "opcodes": [ "66", "0F", "EB" ] },
408        "Psadbw": { "opcodes": [ "66", "0F", "F6" ] },
409        "Pshufb": { "feature": "SSSE3", "opcodes": [ "66", "0F", "38", "00" ] },
410        "Pslld": { "opcodes": [ "66", "0F", "F2" ] },
411        "Psllq": { "opcodes": [ "66", "0F", "F3" ] },
412        "Psllw": { "opcodes": [ "66", "0F", "F1" ] },
413        "Psrad": { "opcodes": [ "66", "0F", "E2" ] },
414        "Psraw": { "opcodes": [ "66", "0F", "E1" ] },
415        "Psrld": { "opcodes": [ "66", "0F", "D2" ] },
416        "Psrlq": { "opcodes": [ "66", "0F", "D3" ] },
417        "Psrlw": { "opcodes": [ "66", "0F", "D1" ] },
418        "Psubb": { "opcodes": [ "66", "0F", "F8" ], "dependency_breaking": "true" },
419        "Psubd": { "opcodes": [ "66", "0F", "FA" ], "dependency_breaking": "true" },
420        "Psubq": { "opcodes": [ "66", "0F", "FB" ], "dependency_breaking": "true" },
421        "Psubsb": { "opcodes": [ "66", "0F", "E8" ] },
422        "Psubsw": { "opcodes": [ "66", "0F", "E9" ] },
423        "Psubusb": { "opcodes": [ "66", "0F", "D8" ] },
424        "Psubusw": { "opcodes": [ "66", "0F", "D9" ] },
425        "Psubw": { "opcodes": [ "66", "0F", "F9" ], "dependency_breaking": "true" },
426        "Punpckhbw": { "opcodes": [ "66", "0F", "68" ] },
427        "Punpckhdq": { "opcodes": [ "66", "0F", "6A" ] },
428        "Punpckhqdq": { "opcodes": [ "66", "0F", "6D" ] },
429        "Punpckhwd": { "opcodes": [ "66", "0F", "69" ] },
430        "Punpcklbw": { "opcodes": [ "66", "0F", "60" ] },
431        "Punpckldq": { "opcodes": [ "66", "0F", "62" ] },
432        "Punpcklqdq": { "opcodes": [ "66", "0F", "6C" ] },
433        "Punpcklwd": { "opcodes": [ "66", "0F", "61" ] },
434        "Pxor": { "opcodes": [ "66", "0F", "EF" ], "dependency_breaking": "true" },
435        "Rsqrtps": { "opcodes": [ "0F", "52" ] },
436        "Subpd": { "opcodes": [ "66", "0F", "5C" ] },
437        "Subps": { "opcodes": [ "0F", "5C" ] },
438        "Unpckhpd": { "opcodes": [ "66", "0F", "15" ] },
439        "Unpckhps": { "opcodes": [ "0F", "15" ] },
440        "Unpcklpd": { "opcodes": [ "66", "0F", "14" ] },
441        "Unpcklps": { "opcodes": [ "0F", "14" ] },
442        "Vrsqrtps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "52" ] },
443        "Xorpd": { "opcodes": [ "66", "0F", "57" ], "dependency_breaking": "true" },
444        "Xorps": { "opcodes": [ "0F", "57" ], "dependency_breaking": "true" }
445      },
446      "args": [
447        { "class": "VecReg128", "usage": "use_def" },
448        { "class": "VecReg128/VecMem128", "usage": "use" }
449      ]
450    },
451    {
452      "encodings": {
453        "Addsd": { "opcodes": [ "F2", "0F", "58" ] },
454        "Cmpeqsd": { "opcodes": [ "F2", "0F", "C2", "00" ] },
455        "Cmplesd": { "opcodes": [ "F2", "0F", "C2", "02" ] },
456        "Cmpltsd": { "opcodes": [ "F2", "0F", "C2", "01" ] },
457        "Cmpneqsd": { "opcodes": [ "F2", "0F", "C2", "04" ] },
458        "Cmpnlesd": { "opcodes": [ "F2", "0F", "C2", "06" ] },
459        "Cmpnltsd": { "opcodes": [ "F2", "0F", "C2", "05" ] },
460        "Cmpordsd": { "opcodes": [ "F2", "0F", "C2", "07" ] },
461        "Cmpunordsd": { "opcodes": [ "F2", "0F", "C2", "03" ] },
462        "Divsd": { "opcodes": [ "F2", "0F", "5E" ] },
463        "Mulsd": { "opcodes": [ "F2", "0F", "59" ] },
464        "Subsd": { "opcodes": [ "F2", "0F", "5C" ] }
465      },
466      "args": [
467        { "class": "FpReg64", "usage": "use_def" },
468        { "class": "FpReg64/VecMem64", "usage": "use" }
469      ]
470    },
471    {
472      "encodings": {
473        "Addss": { "opcodes": [ "F3", "0F", "58" ] },
474        "Cmpeqss": { "opcodes": [ "F3", "0F", "C2", "00" ] },
475        "Cmpless": { "opcodes": [ "F3", "0F", "C2", "02" ] },
476        "Cmpltss": { "opcodes": [ "F3", "0F", "C2", "01" ] },
477        "Cmpneqss": { "opcodes": [ "F3", "0F", "C2", "04" ] },
478        "Cmpnless": { "opcodes": [ "F3", "0F", "C2", "06" ] },
479        "Cmpnltss": { "opcodes": [ "F3", "0F", "C2", "05" ] },
480        "Cmpordss": { "opcodes": [ "F3", "0F", "C2", "07" ] },
481        "Cmpunordss": { "opcodes": [ "F3", "0F", "C2", "03" ] },
482        "Divss": { "opcodes": [ "F3", "0F", "5E" ] },
483        "Mulss": { "opcodes": [ "F3", "0F", "59" ] },
484        "Subss": { "opcodes": [ "F3", "0F", "5C" ] }
485      },
486      "args": [
487        { "class": "FpReg32", "usage": "use_def" },
488        { "class": "FpReg32/VecMem32", "usage": "use" }
489      ]
490    },
491    {
492      "encodings": {
493        "Addw": { "opcodes": [ "66", "01" ], "type": "reg_to_rm" },
494        "Andw": { "opcodes": [ "66", "21" ], "type": "reg_to_rm" },
495        "Btcw": { "opcodes": [ "66", "0F", "BB" ], "type": "reg_to_rm" },
496        "Btrw": { "opcodes": [ "66", "0F", "B3" ], "type": "reg_to_rm" },
497        "Btsw": { "opcodes": [ "66", "0F", "AB" ], "type": "reg_to_rm" },
498        "Orw": { "opcodes": [ "66", "09" ], "type": "reg_to_rm" },
499        "Subw": { "opcodes": [ "66", "29" ], "type": "reg_to_rm" },
500        "Xorw": { "opcodes": [ "66", "31" ], "type": "reg_to_rm" }
501      },
502      "args": [
503        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
504        { "class": "GeneralReg16", "usage": "use" },
505        { "class": "FLAGS", "usage": "def" }
506      ]
507    },
508    {
509      "encodings": {
510        "Addw": { "opcodes": [ "66", "03" ] },
511        "Andw": { "opcodes": [ "66", "23" ] },
512        "Orw": { "opcodes": [ "66", "0B" ] },
513        "Subw": { "opcodes": [ "66", "2B" ] },
514        "Xorw": { "opcodes": [ "66", "33" ] }
515      },
516      "args": [
517        { "class": "GeneralReg16", "usage": "use_def" },
518        { "class": "Mem16", "usage": "use" },
519        { "class": "FLAGS", "usage": "def" }
520      ]
521    },
522    {
523      "encodings": {
524        "Addw": { "opcodes": [ "66", "81", "0" ] },
525        "Andw": { "opcodes": [ "66", "81", "4" ] },
526        "Orw": { "opcodes": [ "66", "81", "1" ] },
527        "Subw": { "opcodes": [ "66", "81", "5" ] },
528        "Xorw": { "opcodes": [ "66", "81", "6" ] }
529      },
530      "args": [
531        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
532        { "class": "Imm16" },
533        { "class": "FLAGS", "usage": "def" }
534      ]
535    },
536    {
537      "encodings": {
538        "AddwAccumulator": { "opcodes": [ "66", "05" ] },
539        "AndwAccumulator": { "opcodes": [ "66", "25" ] },
540        "OrwAccumulator": { "opcodes": [ "66", "0D" ] },
541        "SubwAccumulator": { "opcodes": [ "66", "2D" ] },
542        "XorwAccumulator": { "opcodes": [ "66", "35" ] }
543      },
544      "args": [
545        { "class": "AX", "usage": "use_def" },
546        { "class": "Imm16" },
547        { "class": "FLAGS", "usage": "def" }
548      ]
549    },
550    {
551      "encodings": {
552        "AddwImm8": { "opcodes": [ "66", "83", "0" ] },
553        "AndwImm8": { "opcodes": [ "66", "83", "4" ] },
554        "OrwImm8": { "opcodes": [ "66", "83", "1" ] },
555        "Rolw": { "opcodes": [ "66", "C1", "0" ] },
556        "Rorw": { "opcodes": [ "66", "C1", "1" ] },
557        "Sarw": { "opcodes": [ "66", "C1", "7" ] },
558        "Shlw": { "opcodes": [ "66", "C1", "4" ] },
559        "Shrw": { "opcodes": [ "66", "C1", "5" ] },
560        "SubwImm8": { "opcodes": [ "66", "83", "5" ] },
561        "XorwImm8": { "opcodes": [ "66", "83", "6" ] }
562      },
563      "args": [
564        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
565        { "class": "Imm8" },
566        { "class": "FLAGS", "usage": "def" }
567      ]
568    },
569    {
570      "encodings": {
571        "Aesimc": { "feature": "AES", "opcodes": [ "66", "0F", "38", "DB" ] },
572        "Movq": { "opcodes": [ "F3", "0F", "7E" ] },
573        "Pmovsxbw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "20" ] },
574        "Pmovsxdq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "25" ] },
575        "Pmovsxwd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "23" ] },
576        "Pmovzxbw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "30" ] },
577        "Pmovzxdq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "35" ] },
578        "Pmovzxwd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "33" ] },
579        "Vaesimc": { "feature": "AESAVX", "opcodes": [ "C4", "02", "01", "DB" ] },
580        "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "7E" ] }
581      },
582      "args": [
583        { "class": "XmmReg", "usage": "def" },
584        { "class": "XmmReg/VecMem64", "usage": "use" }
585      ],
586      "comment": "Upper bits are zero-filled for Movq/Vmovq"
587    },
588    {
589      "encodings": {
590        "Aeskeygenassist": { "feature": "AVX", "opcodes": [ "66", "0F", "3A", "DF" ] },
591        "Pshufd": { "opcodes": [ "66", "0F", "70" ] },
592        "Pshufhw": { "opcodes": [ "F3", "0F", "70" ] },
593        "Pshuflw": { "opcodes": [ "F2", "0F", "70" ] },
594        "Roundpd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "09" ] },
595        "Roundps": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "08" ] },
596        "Vaeskeygenassist": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "DF" ] },
597        "Vpshufd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "70" ] },
598        "Vpshufhw": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "70" ] },
599        "Vpshuflw": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "70" ] },
600        "Vroundpd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "09" ] },
601        "Vroundps": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "08" ] }
602      },
603      "args": [
604        { "class": "VecReg128", "usage": "def" },
605        { "class": "VecReg128/VecMem128", "usage": "use" },
606        { "class": "Imm8" }
607      ]
608    },
609    {
610      "encodings": {
611        "Andnl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F2" ], "type": "vex_rm_to_reg" }
612      },
613      "args": [
614        { "class": "GeneralReg32", "usage": "def" },
615        { "class": "GeneralReg32", "usage": "use" },
616        { "class": "GeneralReg32/Mem32", "usage": "use" },
617        { "class": "FLAGS", "usage": "def" }
618      ]
619    },
620    {
621      "encodings": {
622        "Bextrl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F7" ] },
623        "Bzhil": { "feature": "BMI2", "opcodes": [ "C4", "02", "00", "F5" ] }
624      },
625      "args": [
626        { "class": "GeneralReg32", "usage": "def" },
627        { "class": "GeneralReg32/Mem32", "usage": "use" },
628        { "class": "GeneralReg32", "usage": "use" },
629        { "class": "FLAGS", "usage": "def" }
630      ]
631    },
632    {
633      "encodings": {
634        "Blsil": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F3", "3" ], "type": "rm_to_vex" },
635        "Blsmskl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F3", "2" ], "type": "rm_to_vex" },
636        "Blsrl": { "feature": "BMI", "opcodes": [ "C4", "02", "00", "F3", "1" ], "type": "rm_to_vex" },
637        "Bsfl": { "opcodes": [ "0F", "BC" ] },
638        "Bsrl": { "opcodes": [ "0F", "BD" ] },
639        "Lzcntl": { "feature": "LZCNT", "opcodes": [ "F3", "0F", "BD" ] },
640        "Popcntl": { "feature": "POPCNT", "opcodes": [ "F3", "0F", "B8" ] },
641        "Tzcntl": { "feature": "BMI", "opcodes": [ "F3", "0F", "BC" ] }
642      },
643      "args": [
644        { "class": "GeneralReg32", "usage": "def" },
645        { "class": "GeneralReg32/Mem32", "usage": "use" },
646        { "class": "FLAGS", "usage": "def" }
647      ]
648    },
649    {
650      "encodings": {
651        "Bsfw": { "opcodes": [ "66", "0F", "BC" ] },
652        "Bsrw": { "opcodes": [ "66", "0F", "BD" ] },
653        "Lzcntw": { "feature": "LZCNT", "opcodes": [ "66", "F3", "0F", "BD" ] },
654        "Popcntw": { "feature": "POPCNT", "opcodes": [ "66", "F3", "0F", "B8" ] },
655        "Tzcntw": { "feature": "BMI", "opcodes": [ "66", "F3", "0F", "BC" ] }
656      },
657      "args": [
658        { "class": "GeneralReg16", "usage": "def" },
659        { "class": "GeneralReg16/Mem16", "usage": "use" },
660        { "class": "FLAGS", "usage": "def" }
661      ]
662    },
663    {
664      "encodings": {
665        "Bswapl": { "opcodes": [ "0F", "C8" ] }
666      },
667      "args": [
668        { "class": "GeneralReg32", "usage": "use_def" }
669      ]
670    },
671    {
672      "encodings": {
673        "Btl": { "opcodes": [ "0F", "A3" ], "type": "reg_to_rm" },
674        "Cmpl": { "opcode": "39", "type": "reg_to_rm", "dependency_breaking": "true" },
675        "Testl": { "opcode": "85", "type": "reg_to_rm" }
676      },
677      "args": [
678        { "class": "GeneralReg32/Mem32", "usage": "use" },
679        { "class": "GeneralReg32", "usage": "use" },
680        { "class": "FLAGS", "usage": "def" }
681      ]
682    },
683    {
684      "encodings": {
685        "Btw": { "opcodes": [ "66", "0F", "A3" ], "type": "reg_to_rm" },
686        "Cmpw": { "opcodes": [ "66", "39" ], "type": "reg_to_rm" },
687        "Testw": { "opcodes": [ "66", "85" ], "type": "reg_to_rm" }
688      },
689      "args": [
690        { "class": "GeneralReg16/Mem16", "usage": "use" },
691        { "class": "GeneralReg16", "usage": "use" },
692        { "class": "FLAGS", "usage": "def" }
693      ]
694    },
695    {
696      "encodings": {
697        "Call": { "opcodes": [ "FF", "02" ] },
698        "Push": { "opcode": "50" }
699      },
700      "args": [
701        { "class": "RSP", "usage": "use_def" },
702        { "class": "GeneralReg", "usage": "use" }
703      ]
704    },
705    {
706      "stems": [ "Call" ],
707      "args": [
708        { "class": "RSP", "usage": "use_def" },
709        { "class": "Label" }
710      ]
711    },
712    {
713      "encodings": {
714        "Cbtw": { "opcodes": [ "66", "98" ] },
715        "Cbw": { "opcodes": [ "66", "98" ] }
716      },
717      "args": [
718        { "class": "AL", "usage": "use" },
719        { "class": "AX", "usage": "def" }
720      ]
721    },
722    {
723      "encodings": {
724        "Cdq": { "opcode": "99" },
725        "Cltd": { "opcode": "99" }
726      },
727      "args": [
728        { "class": "EAX", "usage": "use" },
729        { "class": "EDX", "usage": "def" }
730      ]
731    },
732    {
733      "encodings": {
734        "Clc": { "opcode": "F8" },
735        "Cmc": { "opcode": "F5" },
736        "Stc": { "opcode": "F9" }
737      },
738      "args": [
739        { "class": "FLAGS", "usage": "use_def" }
740      ]
741    },
742    {
743      "encodings": {
744        "Cmovl": { "opcodes": [ "0F", "40" ] }
745      },
746      "args": [
747        { "class": "Cond" },
748        { "class": "GeneralReg32", "usage": "use_def" },
749        { "class": "GeneralReg32/Mem32", "usage": "use" },
750        { "class": "FLAGS", "usage": "use" }
751      ]
752    },
753    {
754      "encodings": {
755        "Cmovw": { "opcodes": [ "66", "0F", "40" ] }
756      },
757      "args": [
758        { "class": "Cond" },
759        { "class": "GeneralReg16", "usage": "use_def" },
760        { "class": "GeneralReg16/Mem16", "usage": "use" },
761        { "class": "FLAGS", "usage": "use" }
762      ]
763    },
764    {
765      "encodings": {
766        "CmpXchg8b": { "opcodes": [ "0F", "C7", "1" ] },
767        "Lock CmpXchg8b": { "opcodes": [ "F0", "0F", "C7", "1" ] }
768      },
769      "args": [
770        { "class": "EAX", "usage": "use_def" },
771        { "class": "EDX", "usage": "use_def" },
772        { "class": "EBX", "usage": "use" },
773        { "class": "ECX", "usage": "use" },
774        { "class": "VecMem64", "usage": "use_def" },
775        { "class": "FLAGS", "usage": "def" }
776      ]
777    },
778    {
779      "encodings": {
780        "CmpXchgl": { "opcodes": [ "0F", "B1" ], "type": "reg_to_rm" }
781      },
782      "args": [
783        { "class": "EAX", "usage": "use_def" },
784        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
785        { "class": "GeneralReg32", "usage": "use" },
786        { "class": "FLAGS", "usage": "def" }
787      ]
788    },
789    {
790      "encodings": {
791        "Cmpb": { "opcode": "38", "type": "reg_to_rm" },
792        "Testb": { "opcode": "84", "type": "reg_to_rm" }
793      },
794      "args": [
795        { "class": "GeneralReg8/Mem8", "usage": "use" },
796        { "class": "GeneralReg8", "usage": "use" },
797        { "class": "FLAGS", "usage": "def" }
798      ]
799    },
800    {
801      "encodings": {
802        "Cmpb": { "opcodes": [ "80", "7" ] },
803        "Testb": { "opcodes": [ "F6", "0" ] }
804      },
805      "args": [
806        { "class": "GeneralReg8/Mem8", "usage": "use" },
807        { "class": "Imm8" },
808        { "class": "FLAGS", "usage": "def" }
809      ]
810    },
811    {
812      "encodings": {
813        "Cmpb": { "opcode": "3A" }
814      },
815      "args": [
816        { "class": "GeneralReg8", "usage": "use" },
817        { "class": "Mem8", "usage": "use" },
818        { "class": "FLAGS", "usage": "def" }
819      ]
820    },
821    {
822      "encodings": {
823        "CmpbAccumulator": { "opcode": "3C" },
824        "TestbAccumulator": { "opcode": "A8" }
825      },
826      "args": [
827        { "class": "AL", "usage": "use" },
828        { "class": "Imm8" },
829        { "class": "FLAGS", "usage": "def" }
830      ]
831    },
832    {
833      "encodings": {
834        "Cmpl": { "opcodes": [ "81", "7" ] },
835        "Testl": { "opcodes": [ "F7", "0" ] }
836      },
837      "args": [
838        { "class": "GeneralReg32/Mem32", "usage": "use" },
839        { "class": "Imm32" },
840        { "class": "FLAGS", "usage": "def" }
841      ]
842    },
843    {
844      "encodings": {
845        "Cmpl": { "opcode": "3B" }
846      },
847      "args": [
848        { "class": "GeneralReg32", "usage": "use" },
849        { "class": "Mem32", "usage": "use" },
850        { "class": "FLAGS", "usage": "def" }
851      ]
852    },
853    {
854      "encodings": {
855        "CmplAccumulator": { "opcode": "3D" },
856        "TestlAccumulator": { "opcode": "A9" }
857      },
858      "args": [
859        { "class": "EAX", "usage": "use" },
860        { "class": "Imm32" },
861        { "class": "FLAGS", "usage": "def" }
862      ]
863    },
864    {
865      "encodings": {
866        "CmplImm8": { "opcodes": [ "83", "7" ] }
867      },
868      "args": [
869        { "class": "GeneralReg32/Mem32", "usage": "use" },
870        { "class": "Imm8" },
871        { "class": "FLAGS", "usage": "def" }
872      ]
873    },
874    {
875      "encodings": {
876        "Cmpw": { "opcodes": [ "66", "81", "7" ] },
877        "Testw": { "opcodes": [ "66", "F7", "0" ] }
878      },
879      "args": [
880        { "class": "GeneralReg16/Mem16", "usage": "use" },
881        { "class": "Imm16" },
882        { "class": "FLAGS", "usage": "def" }
883      ]
884    },
885    {
886      "encodings": {
887        "Cmpw": { "opcodes": [ "66", "3B" ] }
888      },
889      "args": [
890        { "class": "GeneralReg16", "usage": "use" },
891        { "class": "Mem16", "usage": "use" },
892        { "class": "FLAGS", "usage": "def" }
893      ]
894    },
895    {
896      "encodings": {
897        "CmpwAccumulator": { "opcodes": [ "66", "3D" ] },
898        "TestwAccumulator": { "opcodes": [ "66", "A9" ] }
899      },
900      "args": [
901        { "class": "AX", "usage": "use" },
902        { "class": "Imm16" },
903        { "class": "FLAGS", "usage": "def" }
904      ]
905    },
906    {
907      "encodings": {
908        "CmpwImm8": { "opcodes": [ "66", "83", "7" ] }
909      },
910      "args": [
911        { "class": "GeneralReg16/Mem16", "usage": "use" },
912        { "class": "Imm8" },
913        { "class": "FLAGS", "usage": "def" }
914      ]
915    },
916    {
917      "encodings": {
918        "Cvtdq2pd": { "opcodes": [ "F3", "0F", "E6" ] },
919        "Cvtdq2ps": { "opcodes": [ "0F", "5B" ] },
920        "Cvtpd2dq": { "opcodes": [ "F2", "0F", "E6" ] },
921        "Cvtpd2ps": { "opcodes": [ "66", "0F", "5A" ] },
922        "Cvtps2dq": { "opcodes": [ "66", "0F", "5B" ] },
923        "Cvtps2pd": { "opcodes": [ "0F", "5A" ] },
924        "Cvttpd2dq": { "opcodes": [ "66", "0F", "E6" ] },
925        "Cvttps2dq": { "opcodes": [ "F3", "0F", "5B" ] },
926        "Vcvtdq2pd": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "E6" ] },
927        "Vcvtdq2ps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5B" ] },
928        "Vcvtpd2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "E6" ] },
929        "Vcvtpd2dqx": {
930          "comment": [
931            "Suffix “x” used to distingush 128bit memory operand from 256bit memory operand",
932            "This is common convention for assemblers that use AT&T syntax"
933          ],
934          "feature": "AVX",
935          "opcodes": [ "C4", "01", "03", "E6" ]
936        },
937        "Vcvtpd2ps": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5A" ] },
938        "Vcvtpd2psx": {
939          "comment": [
940            "Suffix “x” used to distingush 128bit memory operand from 256bit memory operand",
941            "This is common convention for assemblers that use AT&T syntax"
942          ],
943          "feature": "AVX",
944          "opcodes": [ "C4", "01", "01", "5A" ]
945        },
946        "Vcvtph2ps": { "feature": "F16C", "opcodes": [ "C4", "02", "01", "13" ] },
947        "Vcvtps2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5B" ] },
948        "Vcvtps2pd": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5A" ] },
949        "Vcvttpd2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E6" ] },
950        "Vcvttpd2dqx": {
951          "comment": [
952            "Suffix “x” used to distingush 128bit memory operand from 256bit memory operand",
953            "This is common convention for assemblers that use AT&T syntax"
954          ],
955          "feature": "AVX",
956          "opcodes": [ "C4", "01", "01", "E6" ]
957        },
958        "Vcvttps2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5B" ] }
959      },
960      "args": [
961        { "class": "VecReg128", "usage": "def" },
962        { "class": "VecReg128/VecMem128", "usage": "use" }
963      ]
964    },
965    {
966      "encodings": {
967        "Cvtsd2sil": { "opcodes": [ "F2", "0F", "2D" ] },
968        "Cvttsd2sil": { "opcodes": [ "F2", "0F", "2C" ] },
969        "Vcvtsd2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "2D" ] },
970        "Vcvttsd2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "2C" ] }
971      },
972      "args": [
973        { "class": "GeneralReg32", "usage": "def" },
974        { "class": "FpReg64/VecMem64", "usage": "use" }
975      ]
976    },
977    {
978      "encodings": {
979        "Cvtsd2ss": { "opcodes": [ "F2", "0F", "5A" ] }
980      },
981      "args": [
982        { "class": "FpReg32", "usage": "def" },
983        { "class": "FpReg64/VecMem64", "usage": "use" }
984      ]
985    },
986    {
987      "encodings": {
988        "Cvtsi2sdl": { "opcodes": [ "F2", "0F", "2A" ] }
989      },
990      "args": [
991        { "class": "FpReg64", "usage": "def" },
992        { "class": "GeneralReg32/Mem32", "usage": "use" }
993      ]
994    },
995    {
996      "encodings": {
997        "Cvtsi2ssl": { "opcodes": [ "F3", "0F", "2A" ] }
998      },
999      "args": [
1000        { "class": "FpReg32", "usage": "def" },
1001        { "class": "GeneralReg32/Mem32", "usage": "use" }
1002      ]
1003    },
1004    {
1005      "encodings": {
1006        "Cvtss2sd": { "opcodes": [ "F3", "0F", "5A" ] }
1007      },
1008      "args": [
1009        { "class": "FpReg64", "usage": "def" },
1010        { "class": "FpReg32/VecMem32", "usage": "use" }
1011      ]
1012    },
1013    {
1014      "encodings": {
1015        "Cvtss2sil": { "opcodes": [ "F3", "0F", "2D" ] },
1016        "Cvttss2sil": { "opcodes": [ "F3", "0F", "2C" ] },
1017        "Vcvtss2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "2D" ] },
1018        "Vcvttss2sil": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "2C" ] }
1019      },
1020      "args": [
1021        { "class": "GeneralReg32", "usage": "def" },
1022        { "class": "FpReg32/VecMem32", "usage": "use" }
1023      ]
1024    },
1025    {
1026      "encodings": {
1027        "Cwd": { "opcodes": [ "66", "99" ] },
1028        "Cwtd": { "opcodes": [ "66", "99" ] }
1029      },
1030      "args": [
1031        { "class": "AX", "usage": "use" },
1032        { "class": "DX", "usage": "def" }
1033      ]
1034    },
1035    {
1036      "encodings": {
1037        "Cwde": { "opcode": "98" },
1038        "Cwtl": { "opcode": "98" }
1039      },
1040      "args": [
1041        { "class": "AX", "usage": "use" },
1042        { "class": "EAX", "usage": "def" }
1043      ]
1044    },
1045    {
1046      "encodings": {
1047        "Decb": { "opcodes": [ "FE", "1" ] },
1048        "Incb": { "opcodes": [ "FE", "0" ] },
1049        "Negb": { "opcodes": [ "F6", "3" ] },
1050        "RolbByOne": { "opcodes": [ "D0", "0" ] },
1051        "RorbByOne": { "opcodes": [ "D0", "1" ] },
1052        "SarbByOne": { "opcodes": [ "D0", "7" ] },
1053        "ShlbByOne": { "opcodes": [ "D0", "4" ] },
1054        "ShrbByOne": { "opcodes": [ "D0", "5" ] }
1055      },
1056      "args": [
1057        { "class": "GeneralReg8/Mem8", "usage": "use_def" },
1058        { "class": "FLAGS", "usage": "def" }
1059      ]
1060    },
1061    {
1062      "encodings": {
1063        "Decl": { "opcodes": [ "FF", "1" ] },
1064        "Incl": { "opcodes": [ "FF", "0" ] }
1065      },
1066      "args": [
1067        { "class": "Mem32", "usage": "use_def" },
1068        { "class": "FLAGS", "usage": "def" }
1069      ]
1070    },
1071    {
1072      "encodings": {
1073        "Decw": { "opcodes": [ "66", "FF", "1" ] },
1074        "Incw": { "opcodes": [ "66", "FF", "0" ] }
1075      },
1076      "args": [
1077        { "class": "Mem16", "usage": "use_def" },
1078        { "class": "FLAGS", "usage": "def" }
1079      ]
1080    },
1081    {
1082      "encodings": {
1083        "Divb": { "opcodes": [ "F6", "6" ] },
1084        "Idivb": { "opcodes": [ "F6", "7" ] }
1085      },
1086      "args": [
1087        { "class": "AX", "usage": "use_def" },
1088        { "class": "GeneralReg8/Mem8", "usage": "use" },
1089        { "class": "FLAGS", "usage": "def" }
1090      ]
1091    },
1092    {
1093      "encodings": {
1094        "Divl": { "opcodes": [ "F7", "6" ] },
1095        "Idivl": { "opcodes": [ "F7", "7" ] }
1096      },
1097      "args": [
1098        { "class": "EAX", "usage": "use_def" },
1099        { "class": "EDX", "usage": "use_def" },
1100        { "class": "GeneralReg32/Mem32", "usage": "use" },
1101        { "class": "FLAGS", "usage": "def" }
1102      ]
1103    },
1104    {
1105      "encodings": {
1106        "Divw": { "opcodes": [ "66", "F7", "6" ] },
1107        "Idivw": { "opcodes": [ "66", "F7", "7" ] }
1108      },
1109      "args": [
1110        { "class": "AX", "usage": "use_def" },
1111        { "class": "DX", "usage": "use_def" },
1112        { "class": "GeneralReg16/Mem16", "usage": "use" },
1113        { "class": "FLAGS", "usage": "def" }
1114      ]
1115    },
1116    {
1117      "encodings": {
1118        "F2xm1": { "opcodes": [ "D9", "F0" ] },
1119        "Fabs": { "opcodes": [ "D9", "E1" ] },
1120        "Fchs": { "opcodes": [ "D9", "E0" ] },
1121        "Fcos": { "opcodes": [ "D9", "FF" ] },
1122        "Fld1": { "opcodes": [ "D9", "E8" ] },
1123        "Fldl2e": { "opcodes": [ "D9", "EA" ] },
1124        "Fldl2t": { "opcodes": [ "D9", "E9" ] },
1125        "Fldlg2": { "opcodes": [ "D9", "EC" ] },
1126        "Fldln2": { "opcodes": [ "D9", "ED" ] },
1127        "Fldpi": { "opcodes": [ "D9", "EB" ] },
1128        "Fldz": { "opcodes": [ "D9", "EE" ] },
1129        "Frndint": { "opcodes": [ "D9", "FC" ] },
1130        "Fscale": { "opcodes": [ "D9", "FD" ] },
1131        "Fsin": { "opcodes": [ "D9", "FE" ] },
1132        "Fsqrt": { "opcodes": [ "D9", "FA" ] },
1133        "Ftst": { "opcodes": [ "D9", "E4" ] }
1134      },
1135      "args": [
1136        { "class": "ST", "usage": "use_def" }
1137      ]
1138    },
1139    {
1140      "encodings": {
1141        "FaddFromSt": { "opcodes": [ "DC", "0" ] },
1142        "FaddpFromSt": { "opcodes": [ "DE", "0" ] },
1143        "FdivFromSt": { "opcodes": [ "DC", "6" ] },
1144        "FdivpFromSt": { "opcodes": [ "DE", "6" ] },
1145        "FdivrFromSt": { "opcodes": [ "DC", "7" ] },
1146        "FdivrpFromSt": { "opcodes": [ "DE", "7" ] },
1147        "FmulFromSt": { "opcodes": [ "DC", "1" ] },
1148        "FmulpFromSt": { "opcodes": [ "DE", "1" ] },
1149        "FsubFromSt": { "opcodes": [ "DC", "4" ] },
1150        "FsubpFromSt": { "opcodes": [ "DE", "4" ] },
1151        "FsubrFromSt": { "opcodes": [ "DC", "5" ] },
1152        "FsubrpFromSt": { "opcodes": [ "DE", "5" ] }
1153      },
1154      "args": [
1155        { "class": "RegX87", "usage": "use_def" },
1156        { "class": "ST", "usage": "use" }
1157      ]
1158    },
1159    {
1160      "encodings": {
1161        "FaddToSt": { "opcodes": [ "D8", "0" ] },
1162        "FdivToSt": { "opcodes": [ "D8", "6" ] },
1163        "FdivrToSt": { "opcodes": [ "D8", "7" ] },
1164        "FmulToSt": { "opcodes": [ "D8", "1" ] },
1165        "FsubToSt": { "opcodes": [ "D8", "4" ] },
1166        "FsubrToSt": { "opcodes": [ "D8", "5" ] }
1167      },
1168      "args": [
1169        { "class": "ST", "usage": "use_def" },
1170        { "class": "RegX87", "usage": "use" }
1171      ]
1172    },
1173    {
1174      "encodings": {
1175        "Faddl": { "opcodes": [ "DC", "0" ] },
1176        "Fdivl": { "opcodes": [ "DC", "6" ] },
1177        "Fdivrl": { "opcodes": [ "DC", "7" ] },
1178        "Fmull": { "opcodes": [ "DC", "1" ] },
1179        "Fsubl": { "opcodes": [ "DC", "4" ] },
1180        "Fsubrl": { "opcodes": [ "DC", "5" ] }
1181      },
1182      "args": [
1183        { "class": "ST", "usage": "use_def" },
1184        { "class": "MemX8764", "usage": "use" }
1185      ]
1186    },
1187    {
1188      "encodings": {
1189        "Fadds": { "opcodes": [ "D8", "0" ] },
1190        "Fdivrs": { "opcodes": [ "D8", "7" ] },
1191        "Fdivs": { "opcodes": [ "D8", "6" ] },
1192        "Fiaddl": { "opcodes": [ "DA", "0" ] },
1193        "Fidivl": { "opcodes": [ "DA", "6" ] },
1194        "Fidivrl": { "opcodes": [ "DA", "7" ] },
1195        "Fimull": { "opcodes": [ "DA", "1" ] },
1196        "Fisubl": { "opcodes": [ "DA", "4" ] },
1197        "Fisubrl": { "opcodes": [ "DA", "5" ] },
1198        "Fmuls": { "opcodes": [ "D8", "1" ] },
1199        "Fsubrs": { "opcodes": [ "D8", "5" ] },
1200        "Fsubs": { "opcodes": [ "D8", "4" ] }
1201      },
1202      "args": [
1203        { "class": "ST", "usage": "use_def" },
1204        { "class": "MemX8732", "usage": "use" }
1205      ]
1206    },
1207    {
1208      "encodings": {
1209        "Fbld": { "opcodes": [ "DF", "4" ] },
1210        "Fldt": { "opcodes": [ "DB", "5" ] }
1211      },
1212      "args": [
1213        { "class": "ST", "usage": "def" },
1214        { "class": "MemX8780", "usage": "use" }
1215      ]
1216    },
1217    {
1218      "encodings": {
1219        "Fbstp": { "opcodes": [ "DF", "6" ] },
1220        "Fstpt": { "opcodes": [ "DB", "7" ] }
1221      },
1222      "args": [
1223        { "class": "MemX8780", "usage": "def" },
1224        { "class": "ST", "usage": "use" }
1225      ]
1226    },
1227    {
1228      "encodings": {
1229        "FcmovbToSt": { "opcodes": [ "DA", "0" ] },
1230        "FcmovbeToSt": { "opcodes": [ "DA", "2" ] },
1231        "FcmoveToSt": { "opcodes": [ "DA", "1" ] },
1232        "FcmovnbToSt": { "opcodes": [ "DB", "0" ] },
1233        "FcmovnbeToSt": { "opcodes": [ "DB", "2" ] },
1234        "FcmovneToSt": { "opcodes": [ "DB", "1" ] },
1235        "FcmovnuToSt": { "opcodes": [ "DB", "3" ] },
1236        "FcmovuToSt": { "opcodes": [ "DA", "3" ] }
1237      },
1238      "args": [
1239        { "class": "ST", "usage": "use_def" },
1240        { "class": "RegX87", "usage": "use" },
1241        { "class": "FLAGS", "usage": "use" }
1242      ]
1243    },
1244    {
1245      "encodings": {
1246        "Fcom": { "opcodes": [ "D8", "2" ] },
1247        "Fcomp": { "opcodes": [ "D8", "3" ] },
1248        "Fucom": { "opcodes": [ "DD", "4" ] },
1249        "Fucomp": { "opcodes": [ "DD", "5" ] }
1250      },
1251      "args": [
1252        { "class": "ST", "usage": "use" },
1253        { "class": "RegX87", "usage": "use" },
1254        { "class": "CC", "usage": "def" }
1255      ]
1256    },
1257    {
1258      "encodings": {
1259        "Fcomi": { "opcodes": [ "DB", "6" ] },
1260        "Fcomip": { "opcodes": [ "DF", "6" ] },
1261        "Fucomi": { "opcodes": [ "DB", "5" ] },
1262        "Fucomip": { "opcodes": [ "DF", "5" ] }
1263      },
1264      "args": [
1265        { "class": "ST", "usage": "use" },
1266        { "class": "RegX87", "usage": "use" },
1267        { "class": "FLAGS", "usage": "def" }
1268      ]
1269    },
1270    {
1271      "encodings": {
1272        "Fcoml": { "opcodes": [ "DC", "2" ] },
1273        "Fcompl": { "opcodes": [ "DC", "3" ] }
1274      },
1275      "args": [
1276        { "class": "ST", "usage": "use" },
1277        { "class": "MemX8764", "usage": "use" },
1278        { "class": "CC", "usage": "def" }
1279      ]
1280    },
1281    {
1282      "encodings": {
1283        "Fcompp": { "opcodes": [ "DE", "D9" ] },
1284        "Fucompp": { "opcodes": [ "DA", "E9" ] }
1285      },
1286      "args": [
1287        { "class": "ST", "usage": "use" },
1288        { "class": "ST1", "usage": "use" },
1289        { "class": "CC", "usage": "def" }
1290      ]
1291    },
1292    {
1293      "encodings": {
1294        "Fcomps": { "opcodes": [ "D8", "3" ] },
1295        "Fcoms": { "opcodes": [ "D8", "2" ] },
1296        "Ficoml": { "opcodes": [ "DA", "2" ] },
1297        "Ficompl": { "opcodes": [ "DA", "3" ] }
1298      },
1299      "args": [
1300        { "class": "ST", "usage": "use" },
1301        { "class": "MemX8732", "usage": "use" },
1302        { "class": "CC", "usage": "def" }
1303      ]
1304    },
1305    {
1306      "encodings": {
1307        "Fdecstp": { "opcodes": [ "D9", "F6" ] },
1308        "Fincstp": { "opcodes": [ "D9", "F7" ] },
1309        "Fnop": { "opcodes": [ "D9", "D0" ] },
1310        "Fwait": { "opcode": "9B" },
1311        "Int3": { "opcode": "CC" },
1312        "Lfence": { "opcodes": [ "0F", "AE", "E8" ] },
1313        "Mfence": { "opcodes": [ "0F", "AE", "F0" ] },
1314        "Nop": { "opcode": "90" },
1315        "Sfence": { "opcodes": [ "0F", "AE", "F8" ] },
1316        "UD2": { "opcodes": [ "0F", "0B" ] },
1317        "Wait": { "opcode": "9B" }
1318      },
1319      "args": []
1320    },
1321    {
1322      "encodings": {
1323        "Ffree": { "opcodes": [ "DD", "0" ] }
1324      },
1325      "args": [
1326        { "class": "RegX87", "usage": "use" }
1327      ]
1328    },
1329    {
1330      "encodings": {
1331        "Fiadds": { "opcodes": [ "DE", "0" ] },
1332        "Fidivrs": { "opcodes": [ "DE", "7" ] },
1333        "Fidivs": { "opcodes": [ "DE", "6" ] },
1334        "Fimuls": { "opcodes": [ "DE", "1" ] },
1335        "Fisubrs": { "opcodes": [ "DE", "5" ] },
1336        "Fisubs": { "opcodes": [ "DE", "4" ] }
1337      },
1338      "args": [
1339        { "class": "ST", "usage": "use_def" },
1340        { "class": "MemX8716", "usage": "use" }
1341      ]
1342    },
1343    {
1344      "encodings": {
1345        "Ficomps": { "opcodes": [ "DE", "3" ] },
1346        "Ficoms": { "opcodes": [ "DE", "2" ] }
1347      },
1348      "args": [
1349        { "class": "ST", "usage": "use" },
1350        { "class": "MemX8716", "usage": "use" },
1351        { "class": "CC", "usage": "def" }
1352      ]
1353    },
1354    {
1355      "encodings": {
1356        "Fildl": { "opcodes": [ "DB", "0" ] },
1357        "Flds": { "opcodes": [ "D9", "0" ] }
1358      },
1359      "args": [
1360        { "class": "ST", "usage": "def" },
1361        { "class": "MemX8732", "usage": "use" }
1362      ]
1363    },
1364    {
1365      "encodings": {
1366        "Fildll": { "opcodes": [ "DF", "5" ] },
1367        "Fldl": { "opcodes": [ "DD", "0" ] }
1368      },
1369      "args": [
1370        { "class": "ST", "usage": "def" },
1371        { "class": "MemX8764", "usage": "use" }
1372      ]
1373    },
1374    {
1375      "encodings": {
1376        "Filds": { "opcodes": [ "DF", "0" ] }
1377      },
1378      "args": [
1379        { "class": "ST", "usage": "def" },
1380        { "class": "MemX8716", "usage": "use" }
1381      ]
1382    },
1383    {
1384      "encodings": {
1385        "Fistl": { "opcodes": [ "DB", "2" ] },
1386        "Fistpl": { "opcodes": [ "DB", "3" ] },
1387        "Fisttpl": { "feature": "SSE3", "opcodes": [ "DB", "1" ] },
1388        "Fstps": { "opcodes": [ "D9", "3" ] },
1389        "Fsts": { "opcodes": [ "D9", "2" ] }
1390      },
1391      "args": [
1392        { "class": "MemX8732", "usage": "def" },
1393        { "class": "ST", "usage": "use" }
1394      ]
1395    },
1396    {
1397      "encodings": {
1398        "Fistpll": { "opcodes": [ "DF", "7" ] },
1399        "Fisttpll": { "feature": "SSE3", "opcodes": [ "DD", "1" ] },
1400        "Fstl": { "opcodes": [ "DD", "2" ] },
1401        "Fstpl": { "opcodes": [ "DD", "3" ] }
1402      },
1403      "args": [
1404        { "class": "MemX8764", "usage": "def" },
1405        { "class": "ST", "usage": "use" }
1406      ]
1407    },
1408    {
1409      "encodings": {
1410        "Fistps": { "opcodes": [ "DF", "3" ] },
1411        "Fists": { "opcodes": [ "DF", "2" ] },
1412        "Fisttps": { "feature": "SSE3", "opcodes": [ "DF", "1" ] }
1413      },
1414      "args": [
1415        { "class": "MemX8716", "usage": "def" },
1416        { "class": "ST", "usage": "use" }
1417      ]
1418    },
1419    {
1420      "encodings": {
1421        "Fld": { "opcodes": [ "D9", "0" ] }
1422      },
1423      "args": [
1424        { "class": "ST", "usage": "def" },
1425        { "class": "RegX87", "usage": "use" }
1426      ]
1427    },
1428    {
1429      "encodings": {
1430        "Fldcw": { "opcodes": [ "D9", "5" ] }
1431      },
1432      "args": [
1433        { "class": "CC", "usage": "def" },
1434        { "class": "MemX8732", "usage": "use" }
1435      ]
1436    },
1437    {
1438      "encodings": {
1439        "Fldenv": { "opcodes": [ "D9", "4" ] },
1440        "Frstor": { "opcodes": [ "DD", "4" ] },
1441        "Fxrstor": { "opcodes": [ "0F", "AE", "1" ] }
1442      },
1443      "args": [
1444        { "class": "MemX87", "usage": "use" },
1445        { "class": "CC", "usage": "def" }
1446      ]
1447    },
1448    {
1449      "encodings": {
1450        "Fnclex": { "opcodes": [ "DB", "E2" ] },
1451        "Fndisi": { "opcodes": [ "DB", "E1" ] },
1452        "Fneni": { "opcodes": [ "DB", "E0" ] },
1453        "Fninit": { "opcodes": [ "DB", "E3" ] },
1454        "Fnsetpm": { "opcodes": [ "DB", "E4" ] }
1455      },
1456      "args": [
1457        { "class": "CC", "usage": "def" }
1458      ]
1459    },
1460    {
1461      "encodings": {
1462        "Fnsave": { "opcodes": [ "DD", "6" ] },
1463        "Fnstenv": { "opcodes": [ "D9", "6" ] },
1464        "Fxsave": { "opcodes": [ "0F", "AE", "0" ] }
1465      },
1466      "args": [
1467        { "class": "CC", "usage": "def" },
1468        { "class": "MemX87", "usage": "use" }
1469      ]
1470    },
1471    {
1472      "encodings": {
1473        "Fnstcw": { "opcodes": [ "D9", "7" ] }
1474      },
1475      "args": [
1476        { "class": "MemX8732", "usage": "def" },
1477        { "class": "CC", "usage": "use" }
1478      ]
1479    },
1480    {
1481      "encodings": {
1482        "Fnstsw": { "opcodes": [ "DF", "E0" ] }
1483      },
1484      "args": [
1485        { "class": "AX", "usage": "def" },
1486        { "class": "SW", "usage": "use" }
1487      ]
1488    },
1489    {
1490      "encodings": {
1491        "Fnstsw": { "opcodes": [ "DD", "7" ] }
1492      },
1493      "args": [
1494        { "class": "MemX8732", "usage": "def" },
1495        { "class": "SW", "usage": "use" }
1496      ]
1497    },
1498    {
1499      "encodings": {
1500        "Fpatan": { "opcodes": [ "D9", "F3" ] },
1501        "Fprem": { "opcodes": [ "D9", "F8" ] },
1502        "Fprem1": { "opcodes": [ "D9", "F5" ] },
1503        "Fyl2x": { "opcodes": [ "D9", "F1" ] },
1504        "Fyl2xp1": { "opcodes": [ "D9", "F9" ] }
1505      },
1506      "args": [
1507        { "class": "ST", "usage": "use_def" },
1508        { "class": "ST1", "usage": "use" }
1509      ]
1510    },
1511    {
1512      "encodings": {
1513        "Fptan": { "opcodes": [ "D9", "F2" ] },
1514        "Fsincos": { "opcodes": [ "D9", "FB" ] },
1515        "Fxtract": { "opcodes": [ "D9", "F4" ] }
1516      },
1517      "args": [
1518        { "class": "ST", "usage": "use_def" },
1519        { "class": "ST1", "usage": "def" }
1520      ]
1521    },
1522    {
1523      "encodings": {
1524        "Fst": { "opcodes": [ "DD", "2" ] },
1525        "Fstp": { "opcodes": [ "DD", "3" ] }
1526      },
1527      "args": [
1528        { "class": "RegX87", "usage": "def" },
1529        { "class": "ST", "usage": "use" }
1530      ]
1531    },
1532    {
1533      "encodings": {
1534        "Fxam": { "opcodes": [ "D9", "E5" ] }
1535      },
1536      "args": [
1537        { "class": "ST", "usage": "use" },
1538        { "class": "CC", "usage": "def" }
1539      ]
1540    },
1541    {
1542      "encodings": {
1543        "Fxch": { "opcodes": [ "D9", "1" ] }
1544      },
1545      "args": [
1546        { "class": "RegX87", "usage": "use_def" },
1547        { "class": "ST", "usage": "use_def" }
1548      ]
1549    },
1550    {
1551      "encodings": {
1552        "Imulb": { "opcodes": [ "F6", "5" ] },
1553        "Mulb": { "opcodes": [ "F6", "4" ] }
1554      },
1555      "args": [
1556        { "class": "AL", "usage": "use" },
1557        { "class": "AX", "usage": "def" },
1558        { "class": "GeneralReg8/Mem8", "usage": "use" },
1559        { "class": "FLAGS", "usage": "def" }
1560      ]
1561    },
1562    {
1563      "encodings": {
1564        "Imull": { "opcodes": [ "F7", "5" ] },
1565        "Mull": { "opcodes": [ "F7", "4" ] }
1566      },
1567      "args": [
1568        { "class": "EAX", "usage": "use_def" },
1569        { "class": "EDX", "usage": "def" },
1570        { "class": "GeneralReg32/Mem32", "usage": "use" },
1571        { "class": "FLAGS", "usage": "def" }
1572      ]
1573    },
1574    {
1575      "encodings": {
1576        "Imull": { "opcode": "69" }
1577      },
1578      "args": [
1579        { "class": "GeneralReg32", "usage": "def" },
1580        { "class": "GeneralReg32/Mem32", "usage": "use" },
1581        { "class": "Imm32" },
1582        { "class": "FLAGS", "usage": "def" }
1583      ]
1584    },
1585    {
1586      "encodings": {
1587        "Imull": { "opcodes": [ "0F", "AF" ] }
1588      },
1589      "args": [
1590        { "class": "GeneralReg32", "usage": "use_def" },
1591        { "class": "GeneralReg32/Mem32", "usage": "use" },
1592        { "class": "FLAGS", "usage": "def" }
1593      ]
1594    },
1595    {
1596      "encodings": {
1597        "ImullImm8": { "opcode": "6B" }
1598      },
1599      "args": [
1600        { "class": "GeneralReg32", "usage": "def" },
1601        { "class": "GeneralReg32/Mem32", "usage": "use" },
1602        { "class": "Imm8" },
1603        { "class": "FLAGS", "usage": "def" }
1604      ]
1605    },
1606    {
1607      "encodings": {
1608        "Imulw": { "opcodes": [ "66", "F7", "5" ] },
1609        "Mulw": { "opcodes": [ "66", "F7", "4" ] }
1610      },
1611      "args": [
1612        { "class": "AX", "usage": "use_def" },
1613        { "class": "DX", "usage": "def" },
1614        { "class": "GeneralReg16/Mem16", "usage": "use" },
1615        { "class": "FLAGS", "usage": "def" }
1616      ]
1617    },
1618    {
1619      "encodings": {
1620        "Imulw": { "opcodes": [ "66", "69" ] }
1621      },
1622      "args": [
1623        { "class": "GeneralReg16", "usage": "def" },
1624        { "class": "GeneralReg16/Mem16", "usage": "use" },
1625        { "class": "Imm16" },
1626        { "class": "FLAGS", "usage": "def" }
1627      ]
1628    },
1629    {
1630      "encodings": {
1631        "Imulw": { "opcodes": [ "66", "0F", "AF" ] }
1632      },
1633      "args": [
1634        { "class": "GeneralReg16", "usage": "use_def" },
1635        { "class": "GeneralReg16/Mem16", "usage": "use" },
1636        { "class": "FLAGS", "usage": "def" }
1637      ]
1638    },
1639    {
1640      "encodings": {
1641        "ImulwImm8": { "opcodes": [ "66", "6B" ] }
1642      },
1643      "args": [
1644        { "class": "GeneralReg16", "usage": "def" },
1645        { "class": "GeneralReg16/Mem16", "usage": "use" },
1646        { "class": "Imm8" },
1647        { "class": "FLAGS", "usage": "def" }
1648      ]
1649    },
1650    {
1651      "stems": [ "Jcc" ],
1652      "args": [
1653        { "class": "Cond" },
1654        { "class": "Label" },
1655        { "class": "FLAGS", "usage": "use" }
1656      ]
1657    },
1658    {
1659      "encodings": {
1660        "Jmp": { "opcodes": [ "FF", "4" ] }
1661      },
1662      "args": [
1663        { "class": "GeneralReg", "usage": "use" }
1664      ]
1665    },
1666    {
1667      "stems": [ "Jmp" ],
1668      "args": [
1669        { "class": "Label" }
1670      ]
1671    },
1672    {
1673      "encodings": {
1674        "Lahf": { "opcode": "9F" }
1675      },
1676      "args": [
1677        { "class": "EAX", "usage": "use_def" },
1678        { "class": "FLAGS", "usage": "use" }
1679      ],
1680      "comment": "Use use_def below because LAHF writes to AH while preserving the rest of RAX"
1681    },
1682    {
1683      "encodings": {
1684        "Ldmxcsr": { "opcodes": [ "0F", "AE", "2" ] },
1685        "Vldmxcsr": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "AE", "2" ] }
1686      },
1687      "args": [
1688        { "class": "Mem32", "usage": "use" }
1689      ]
1690    },
1691    {
1692      "encodings": {
1693        "Leal": { "opcode": "8D" }
1694      },
1695      "args": [
1696        { "class": "GeneralReg32", "usage": "def" },
1697        { "class": "Mem", "usage": "use" }
1698      ]
1699    },
1700    {
1701      "encodings": {
1702        "Lock CmpXchgb": { "opcodes": [ "F0", "0F", "B0" ], "type": "reg_to_rm" }
1703      },
1704      "args": [
1705        { "class": "AL", "usage": "use_def" },
1706        { "class": "Mem8", "usage": "use_def" },
1707        { "class": "GeneralReg8", "usage": "use" },
1708        { "class": "FLAGS", "usage": "def" }
1709      ]
1710    },
1711    {
1712      "encodings": {
1713        "Lock CmpXchgl": { "opcodes": [ "F0", "0F", "B1" ], "type": "reg_to_rm" }
1714      },
1715      "args": [
1716        { "class": "EAX", "usage": "use_def" },
1717        { "class": "Mem32", "usage": "use_def" },
1718        { "class": "GeneralReg32", "usage": "use" },
1719        { "class": "FLAGS", "usage": "def" }
1720      ]
1721    },
1722    {
1723      "encodings": {
1724        "Lock CmpXchgw": { "opcodes": [ "F0", "66", "0F", "B1" ], "type": "reg_to_rm" }
1725      },
1726      "args": [
1727        { "class": "AX", "usage": "use_def" },
1728        { "class": "Mem16", "usage": "use_def" },
1729        { "class": "GeneralReg16", "usage": "use" },
1730        { "class": "FLAGS", "usage": "def" }
1731      ]
1732    },
1733    {
1734      "encodings": {
1735        "Lock Xaddb": { "opcodes": [ "F0", "0F", "C0" ], "type": "reg_to_rm" },
1736        "Xaddb": { "opcodes": [ "0F", "C0" ], "type": "reg_to_rm" }
1737      },
1738      "args": [
1739        { "class": "Mem8", "usage": "use_def" },
1740        { "class": "GeneralReg8", "usage": "use_def" },
1741        { "class": "FLAGS", "usage": "use_def" }
1742      ]
1743    },
1744    {
1745      "encodings": {
1746        "Lock Xaddl": { "opcodes": [ "F0", "0F", "C1" ], "type": "reg_to_rm" },
1747        "Xaddl": { "opcodes": [ "0F", "C1" ], "type": "reg_to_rm" }
1748      },
1749      "args": [
1750        { "class": "Mem32", "usage": "use_def" },
1751        { "class": "GeneralReg32", "usage": "use_def" },
1752        { "class": "FLAGS", "usage": "use_def" }
1753      ]
1754    },
1755    {
1756      "encodings": {
1757        "Lock Xaddw": { "opcodes": [ "F0", "66", "0F", "C1" ], "type": "reg_to_rm" },
1758        "Xaddw": { "opcodes": [ "66", "0F", "C1" ], "type": "reg_to_rm" }
1759      },
1760      "args": [
1761        { "class": "Mem16", "usage": "use_def" },
1762        { "class": "GeneralReg16", "usage": "use_def" },
1763        { "class": "FLAGS", "usage": "use_def" }
1764      ]
1765    },
1766    {
1767      "encodings": {
1768        "Movapd": { "opcodes": [ "66", "0F", "28" ] },
1769        "Movaps": { "opcodes": [ "0F", "28" ] },
1770        "Movdqa": { "opcodes": [ "66", "0F", "6F" ] },
1771        "Movdqu": { "opcodes": [ "F3", "0F", "6F" ] }
1772      },
1773      "args": [
1774        { "class": "XmmReg", "usage": "def" },
1775        { "class": "XmmReg/VecMem128", "usage": "use" }
1776      ]
1777    },
1778    {
1779      "encodings": {
1780        "Movapd": { "opcodes": [ "66", "0F", "29" ] },
1781        "Movaps": { "opcodes": [ "0F", "29" ] },
1782        "Vmovapd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "29" ] },
1783        "Vmovaps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "29" ] }
1784      },
1785      "args": [
1786        { "class": "VecMem128", "usage": "def" },
1787        { "class": "XmmReg", "usage": "use" }
1788      ]
1789    },
1790    {
1791      "encodings": {
1792        "Movb": { "opcode": "B0" }
1793      },
1794      "args": [
1795        { "class": "GeneralReg8", "usage": "def" },
1796        { "class": "Imm8" }
1797      ]
1798    },
1799    {
1800      "encodings": {
1801        "Movb": { "opcode": "8A" }
1802      },
1803      "args": [
1804        { "class": "GeneralReg8", "usage": "def" },
1805        { "class": "Mem8", "usage": "use" }
1806      ]
1807    },
1808    {
1809      "encodings": {
1810        "Movb": { "opcode": "88", "type": "reg_to_rm" }
1811      },
1812      "args": [
1813        { "class": "GeneralReg8/Mem8", "usage": "def" },
1814        { "class": "GeneralReg8", "usage": "use" }
1815      ]
1816    },
1817    {
1818      "encodings": {
1819        "Movb": { "opcodes": [ "C6", "0" ] }
1820      },
1821      "args": [
1822        { "class": "Mem8", "usage": "def" },
1823        { "class": "Imm8" }
1824      ]
1825    },
1826    {
1827      "encodings": {
1828        "Movd": { "opcodes": [ "66", "0F", "7E" ], "type": "reg_to_rm" },
1829        "Vmovd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "7E" ], "type": "reg_to_rm" }
1830      },
1831      "args": [
1832        { "class": "GeneralReg32/Mem32", "usage": "def" },
1833        { "class": "XmmReg", "usage": "use" }
1834      ]
1835    },
1836    {
1837      "encodings": {
1838        "Movd": { "opcodes": [ "66", "0F", "6E" ] },
1839        "Vmovd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6E" ] }
1840      },
1841      "args": [
1842        { "class": "XmmReg", "usage": "def" },
1843        { "class": "GeneralReg32/Mem32", "usage": "use" }
1844      ]
1845    },
1846    {
1847      "name": "MovdqRegReg",
1848      "args": [
1849        { "class": "XmmReg", "usage": "def" },
1850        { "class": "XmmReg", "usage": "use" }
1851      ],
1852      "asm": "Pmov",
1853      "mnemo": "MOVDQ"
1854    },
1855    {
1856      "encodings": {
1857        "Movdqa": { "opcodes": [ "66", "0F", "7F" ] },
1858        "Movdqu": { "opcodes": [ "F3", "0F", "7F" ] },
1859        "Vmovdqa": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "7F" ] },
1860        "Vmovdqu": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "7F" ] }
1861      },
1862      "args": [
1863        { "class": "VecMem128", "usage": "def" },
1864        { "class": "XmmReg", "usage": "use" }
1865      ]
1866    },
1867    {
1868      "encodings": {
1869        "Movhlps": { "opcodes": [ "0F", "12" ] },
1870        "Movlhps": { "opcodes": [ "0F", "16" ] },
1871        "Movsd": { "opcodes": [ "F2", "0F", "10" ] },
1872        "Movss": { "opcodes": [ "F3", "0F", "10" ] }
1873      },
1874      "args": [
1875        { "class": "XmmReg", "usage": "use_def" },
1876        { "class": "XmmReg", "usage": "use" }
1877      ],
1878      "comment": "Upper bits (lower bits for Movlhps) are unchanged"
1879    },
1880    {
1881      "encodings": {
1882        "Movhpd": { "opcodes": [ "66", "0F", "17" ] },
1883        "Movhps": { "opcodes": [ "0F", "17" ] },
1884        "Movlpd": { "opcodes": [ "66", "0F", "13" ] },
1885        "Movlps": { "opcodes": [ "0F", "13" ] },
1886        "Vmovhpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "17" ] },
1887        "Vmovhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "17" ] },
1888        "Vmovlpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "13" ] },
1889        "Vmovlps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "13" ] }
1890      },
1891      "args": [
1892        { "class": "VecMem64", "usage": "use_def" },
1893        { "class": "XmmReg", "usage": "use" }
1894      ]
1895    },
1896    {
1897      "encodings": {
1898        "Movhpd": { "opcodes": [ "66", "0F", "16" ] },
1899        "Movhps": { "opcodes": [ "0F", "16" ] },
1900        "Movlpd": { "opcodes": [ "66", "0F", "12" ] },
1901        "Movlps": { "opcodes": [ "0F", "12" ] }
1902      },
1903      "args": [
1904        { "class": "XmmReg", "usage": "use_def" },
1905        { "class": "VecMem64", "usage": "use" }
1906      ]
1907    },
1908    {
1909      "encodings": {
1910        "Movl": { "opcode": "B8" }
1911      },
1912      "args": [
1913        { "class": "GeneralReg32", "usage": "def" },
1914        { "class": "Imm32" }
1915      ]
1916    },
1917    {
1918      "encodings": {
1919        "Movl": { "opcode": "8B" }
1920      },
1921      "args": [
1922        { "class": "GeneralReg32", "usage": "def" },
1923        { "class": "Mem32", "usage": "use" }
1924      ]
1925    },
1926    {
1927      "encodings": {
1928        "Movl": { "opcode": "89", "type": "reg_to_rm" }
1929      },
1930      "args": [
1931        { "class": "GeneralReg32/Mem32", "usage": "def" },
1932        { "class": "GeneralReg32", "usage": "use" }
1933      ]
1934    },
1935    {
1936      "encodings": {
1937        "Movl": { "opcodes": [ "C7", "0" ] }
1938      },
1939      "args": [
1940        { "class": "Mem32", "usage": "def" },
1941        { "class": "Imm32" }
1942      ]
1943    },
1944    {
1945      "encodings": {
1946        "Movmskpd": { "opcodes": [ "66", "0F", "50" ] },
1947        "Movmskps": { "opcodes": [ "0F", "50" ] },
1948        "Vmovmskpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "50" ] },
1949        "Vmovmskps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "50" ] }
1950      },
1951      "args": [
1952        { "class": "GeneralReg32", "usage": "def" },
1953        { "class": "XmmReg", "usage": "use" }
1954      ]
1955    },
1956    {
1957      "encodings": {
1958        "Movq": { "opcodes": [ "66", "0F", "D6" ] },
1959        "Movsd": { "opcodes": [ "F2", "0F", "11" ] },
1960        "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D6" ] },
1961        "Vmovsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "11" ] }
1962      },
1963      "args": [
1964        { "class": "VecMem64", "usage": "def" },
1965        { "class": "XmmReg", "usage": "use" }
1966      ]
1967    },
1968    {
1969      "encodings": {
1970        "Movsd": { "opcodes": [ "F2", "0F", "10" ] },
1971        "Vmovsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "10" ] }
1972      },
1973      "args": [
1974        { "class": "XmmReg", "usage": "def" },
1975        { "class": "VecMem64", "usage": "use" }
1976      ],
1977      "comment": "Upper bits are zero-filled"
1978    },
1979    {
1980      "encodings": {
1981        "Movss": { "opcodes": [ "F3", "0F", "11" ] },
1982        "Vmovss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "11" ] }
1983      },
1984      "args": [
1985        { "class": "Mem32", "usage": "def" },
1986        { "class": "XmmReg", "usage": "use" }
1987      ]
1988    },
1989    {
1990      "encodings": {
1991        "Movss": { "opcodes": [ "F3", "0F", "10" ] },
1992        "Vmovss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "10" ] }
1993      },
1994      "args": [
1995        { "class": "XmmReg", "usage": "def" },
1996        { "class": "VecMem32", "usage": "use" }
1997      ],
1998      "comment": "Upper bits are zero-filled"
1999    },
2000    {
2001      "encodings": {
2002        "Movsxbl": { "opcodes": [ "0F", "BE" ] },
2003        "Movzxbl": { "opcodes": [ "0F", "B6" ] }
2004      },
2005      "args": [
2006        { "class": "GeneralReg32", "usage": "def" },
2007        { "class": "GeneralReg8/Mem8", "usage": "use" }
2008      ]
2009    },
2010    {
2011      "encodings": {
2012        "Movsxwl": { "opcodes": [ "0F", "BF" ] },
2013        "Movzxwl": { "opcodes": [ "0F", "B7" ] }
2014      },
2015      "args": [
2016        { "class": "GeneralReg32", "usage": "def" },
2017        { "class": "GeneralReg16/Mem16", "usage": "use" }
2018      ]
2019    },
2020    {
2021      "encodings": {
2022        "Movw": { "opcodes": [ "66", "B8" ] }
2023      },
2024      "args": [
2025        { "class": "GeneralReg16", "usage": "def" },
2026        { "class": "Imm16" }
2027      ]
2028    },
2029    {
2030      "encodings": {
2031        "Movw": { "opcodes": [ "66", "8B" ] }
2032      },
2033      "args": [
2034        { "class": "GeneralReg16", "usage": "def" },
2035        { "class": "Mem16", "usage": "use" }
2036      ]
2037    },
2038    {
2039      "encodings": {
2040        "Movw": { "opcodes": [ "66", "89" ], "type": "reg_to_rm" }
2041      },
2042      "args": [
2043        { "class": "GeneralReg16/Mem16", "usage": "def" },
2044        { "class": "GeneralReg16", "usage": "use" }
2045      ]
2046    },
2047    {
2048      "encodings": {
2049        "Movw": { "opcodes": [ "66", "C7", "0" ] }
2050      },
2051      "args": [
2052        { "class": "Mem16", "usage": "def" },
2053        { "class": "Imm16" }
2054      ]
2055    },
2056    {
2057      "encodings": {
2058        "Mulxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "03", "F6" ], "type": "vex_rm_to_reg" },
2059        "Pdepl": { "feature": "BMI2", "opcodes": [ "C4", "02", "03", "F5" ], "type": "vex_rm_to_reg" },
2060        "Pextl": { "feature": "BMI2", "opcodes": [ "C4", "02", "02", "F5" ], "type": "vex_rm_to_reg" }
2061      },
2062      "args": [
2063        { "class": "GeneralReg32", "usage": "use_def" },
2064        { "class": "GeneralReg32", "usage": "use" },
2065        { "class": "GeneralReg32/Mem32", "usage": "use" }
2066      ]
2067    },
2068    {
2069      "encodings": {
2070        "Negl": { "opcodes": [ "F7", "3" ] },
2071        "RollByOne": { "opcodes": [ "D1", "0" ] },
2072        "RorlByOne": { "opcodes": [ "D1", "1" ] },
2073        "SarlByOne": { "opcodes": [ "D1", "7" ] },
2074        "ShllByOne": { "opcodes": [ "D1", "4" ] },
2075        "ShrlByOne": { "opcodes": [ "D1", "5" ] }
2076      },
2077      "args": [
2078        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2079        { "class": "FLAGS", "usage": "def" }
2080      ]
2081    },
2082    {
2083      "encodings": {
2084        "Negw": { "opcodes": [ "66", "F7", "3" ] },
2085        "RolwByOne": { "opcodes": [ "66", "D1", "0" ] },
2086        "RorwByOne": { "opcodes": [ "66", "D1", "1" ] },
2087        "SarwByOne": { "opcodes": [ "66", "D1", "7" ] },
2088        "ShlwByOne": { "opcodes": [ "66", "D1", "4" ] },
2089        "ShrwByOne": { "opcodes": [ "66", "D1", "5" ] }
2090      },
2091      "args": [
2092        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2093        { "class": "FLAGS", "usage": "def" }
2094      ]
2095    },
2096    {
2097      "encodings": {
2098        "Notb": { "opcodes": [ "F6", "2" ] }
2099      },
2100      "args": [
2101        { "class": "GeneralReg8/Mem8", "usage": "use_def" }
2102      ]
2103    },
2104    {
2105      "encodings": {
2106        "Notl": { "opcodes": [ "F7", "2" ] }
2107      },
2108      "args": [
2109        { "class": "GeneralReg32/Mem32", "usage": "use_def" }
2110      ]
2111    },
2112    {
2113      "encodings": {
2114        "Notw": { "opcodes": [ "66", "F7", "2" ] }
2115      },
2116      "args": [
2117        { "class": "GeneralReg16/Mem16", "usage": "use_def" }
2118      ]
2119    },
2120    {
2121      "encodings": {
2122        "Pclmulqdq": { "feature": "CLMUL", "opcodes": [ "66", "0F", "3A", "44" ] },
2123        "Shufpd": { "opcodes": [ "66", "0F", "C6" ] },
2124        "Shufps": { "opcodes": [ "0F", "C6" ] }
2125      },
2126      "args": [
2127        { "class": "VecReg128", "usage": "use_def" },
2128        { "class": "VecReg128/VecMem128", "usage": "use" },
2129        { "class": "Imm8" }
2130      ]
2131    },
2132    {
2133      "encodings": {
2134        "Pextrb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "14" ], "type": "reg_to_rm" },
2135        "Pextrd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "16" ], "type": "reg_to_rm" },
2136        "Pextrw": { "opcodes": [ "66", "0F", "C5" ] },
2137        "Vpextrb": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "14" ], "type": "reg_to_rm" },
2138        "Vpextrd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "16" ], "type": "reg_to_rm" },
2139        "Vpextrw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C5" ] }
2140      },
2141      "args": [
2142        { "class": "GeneralReg32", "usage": "def" },
2143        { "class": "VecReg128", "usage": "use" },
2144        { "class": "Imm8" }
2145      ]
2146    },
2147    {
2148      "encodings": {
2149        "Pextrb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "14" ], "type": "reg_to_rm" },
2150        "Vpextrb": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "14" ], "type": "reg_to_rm" }
2151      },
2152      "args": [
2153        { "class": "Mem8", "usage": "def" },
2154        { "class": "VecReg128", "usage": "use" },
2155        { "class": "Imm8" }
2156      ]
2157    },
2158    {
2159      "encodings": {
2160        "Pextrd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "16" ], "type": "reg_to_rm" },
2161        "Vpextrd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "16" ], "type": "reg_to_rm" }
2162      },
2163      "args": [
2164        { "class": "Mem32", "usage": "def" },
2165        { "class": "VecReg128", "usage": "use" },
2166        { "class": "Imm8" }
2167      ]
2168    },
2169    {
2170      "encodings": {
2171        "Pextrw": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "15" ] },
2172        "Vpextrw": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "15" ] }
2173      },
2174      "args": [
2175        { "class": "Mem16", "usage": "def" },
2176        { "class": "VecReg128", "usage": "use" },
2177        { "class": "Imm8" }
2178      ]
2179    },
2180    {
2181      "encodings": {
2182        "Pinsrb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "20" ] },
2183        "Pinsrd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "22" ] },
2184        "Pinsrw": { "opcodes": [ "66", "0F", "C4" ] }
2185      },
2186      "args": [
2187        { "class": "VecReg128", "usage": "use_def" },
2188        { "class": "GeneralReg32", "usage": "use" },
2189        { "class": "Imm8" }
2190      ]
2191    },
2192    {
2193      "encodings": {
2194        "Pinsrb": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "20" ] }
2195      },
2196      "args": [
2197        { "class": "VecReg128", "usage": "use_def" },
2198        { "class": "Mem8", "usage": "use" },
2199        { "class": "Imm8" }
2200      ]
2201    },
2202    {
2203      "encodings": {
2204        "Pinsrd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "22" ] }
2205      },
2206      "args": [
2207        { "class": "VecReg128", "usage": "use_def" },
2208        { "class": "Mem32", "usage": "use" },
2209        { "class": "Imm8" }
2210      ]
2211    },
2212    {
2213      "encodings": {
2214        "Pinsrw": { "opcodes": [ "66", "0F", "C4" ] }
2215      },
2216      "args": [
2217        { "class": "VecReg128", "usage": "use_def" },
2218        { "class": "Mem16", "usage": "use" },
2219        { "class": "Imm8" }
2220      ]
2221    },
2222    {
2223      "encodings": {
2224        "Pmovmskb": { "opcodes": [ "66", "0F", "D7" ] },
2225        "Vpmovmskb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D7" ] }
2226      },
2227      "args": [
2228        { "class": "GeneralReg32", "usage": "def" },
2229        { "class": "VecReg128", "usage": "use" }
2230      ]
2231    },
2232    {
2233      "encodings": {
2234        "Pmovsxbd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "21" ] },
2235        "Pmovsxwq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "24" ] },
2236        "Pmovzxbd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "31" ] },
2237        "Pmovzxwq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "38", "34" ] }
2238      },
2239      "args": [
2240        { "class": "XmmReg", "usage": "def" },
2241        { "class": "XmmReg/VecMem32", "usage": "use" }
2242      ]
2243    },
2244    {
2245      "encodings": {
2246        "Pop": { "opcode": "58" }
2247      },
2248      "args": [
2249        { "class": "RSP", "usage": "use_def" },
2250        { "class": "GeneralReg", "usage": "def" }
2251      ]
2252    },
2253    {
2254      "encodings": {
2255        "Pslld": { "opcodes": [ "66", "0F", "72", "6" ] },
2256        "Pslldq": { "opcodes": [ "66", "0F", "73", "7" ] },
2257        "Psllq": { "opcodes": [ "66", "0F", "73", "6" ] },
2258        "Psllw": { "opcodes": [ "66", "0F", "71", "6" ] },
2259        "Psrad": { "opcodes": [ "66", "0F", "72", "4" ] },
2260        "Psraw": { "opcodes": [ "66", "0F", "71", "4" ] },
2261        "Psrld": { "opcodes": [ "66", "0F", "72", "2" ] },
2262        "Psrldq": { "opcodes": [ "66", "0F", "73", "3" ] },
2263        "Psrlq": { "opcodes": [ "66", "0F", "73", "2" ] },
2264        "Psrlw": { "opcodes": [ "66", "0F", "71", "2" ] }
2265      },
2266      "args": [
2267        { "class": "VecReg128", "usage": "use_def" },
2268        { "class": "Imm8" }
2269      ]
2270    },
2271    {
2272      "encodings": {
2273        "Push": { "opcode": "68" }
2274      },
2275      "args": [
2276        { "class": "RSP", "usage": "use_def" },
2277        { "class": "Imm32" }
2278      ]
2279    },
2280    {
2281      "encodings": {
2282        "PushImm8": { "opcode": "6A" }
2283      },
2284      "args": [
2285        { "class": "RSP", "usage": "use_def" },
2286        { "class": "Imm8" }
2287      ]
2288    },
2289    {
2290      "encodings": {
2291        "RclbByCl": { "opcodes": [ "D2", "2" ] },
2292        "RcrbByCl": { "opcodes": [ "D2", "3" ] }
2293      },
2294      "args": [
2295        { "class": "GeneralReg8/Mem8", "usage": "use_def" },
2296        { "class": "CL", "usage": "use" },
2297        { "class": "FLAGS", "usage": "use_def" }
2298      ]
2299    },
2300    {
2301      "encodings": {
2302        "RclbByOne": { "opcodes": [ "D0", "2" ] },
2303        "RcrbByOne": { "opcodes": [ "D0", "3" ] }
2304      },
2305      "args": [
2306        { "class": "GeneralReg8/Mem8", "usage": "use_def" },
2307        { "class": "FLAGS", "usage": "use_def" }
2308      ]
2309    },
2310    {
2311      "encodings": {
2312        "RcllByCl": { "opcodes": [ "D3", "2" ] },
2313        "RcrlByCl": { "opcodes": [ "D3", "3" ] }
2314      },
2315      "args": [
2316        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2317        { "class": "CL", "usage": "use" },
2318        { "class": "FLAGS", "usage": "use_def" }
2319      ]
2320    },
2321    {
2322      "encodings": {
2323        "RcllByOne": { "opcodes": [ "D1", "2" ] },
2324        "RcrlByOne": { "opcodes": [ "D1", "3" ] }
2325      },
2326      "args": [
2327        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2328        { "class": "FLAGS", "usage": "use_def" }
2329      ]
2330    },
2331    {
2332      "encodings": {
2333        "RclwByCl": { "opcodes": [ "66", "D3", "2" ] },
2334        "RcrwByCl": { "opcodes": [ "66", "D3", "3" ] }
2335      },
2336      "args": [
2337        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2338        { "class": "CL", "usage": "use" },
2339        { "class": "FLAGS", "usage": "use_def" }
2340      ]
2341    },
2342    {
2343      "encodings": {
2344        "RclwByOne": { "opcodes": [ "66", "D1", "2" ] },
2345        "RcrwByOne": { "opcodes": [ "66", "D1", "3" ] }
2346      },
2347      "args": [
2348        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2349        { "class": "FLAGS", "usage": "use_def" }
2350      ]
2351    },
2352    {
2353      "encodings": {
2354        "Ret": { "opcode": "C3" }
2355      },
2356      "args": [
2357        { "class": "RSP", "usage": "use_def" }
2358      ]
2359    },
2360    {
2361      "encodings": {
2362        "RolbByCl": { "opcodes": [ "D2", "0" ] },
2363        "RorbByCl": { "opcodes": [ "D2", "1" ] },
2364        "SarbByCl": { "opcodes": [ "D2", "7" ] },
2365        "ShlbByCl": { "opcodes": [ "D2", "4" ] },
2366        "ShrbByCl": { "opcodes": [ "D2", "5" ] }
2367      },
2368      "args": [
2369        { "class": "GeneralReg8/Mem8", "usage": "use_def" },
2370        { "class": "CL", "usage": "use" },
2371        { "class": "FLAGS", "usage": "def" }
2372      ]
2373    },
2374    {
2375      "encodings": {
2376        "RollByCl": { "opcodes": [ "D3", "0" ] },
2377        "RorlByCl": { "opcodes": [ "D3", "1" ] },
2378        "SarlByCl": { "opcodes": [ "D3", "7" ] },
2379        "ShllByCl": { "opcodes": [ "D3", "4" ] },
2380        "ShrlByCl": { "opcodes": [ "D3", "5" ] }
2381      },
2382      "args": [
2383        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2384        { "class": "CL", "usage": "use" },
2385        { "class": "FLAGS", "usage": "def" }
2386      ]
2387    },
2388    {
2389      "encodings": {
2390        "RolwByCl": { "opcodes": [ "66", "D3", "0" ] },
2391        "RorwByCl": { "opcodes": [ "66", "D3", "1" ] },
2392        "SarwByCl": { "opcodes": [ "66", "D3", "7" ] },
2393        "ShlwByCl": { "opcodes": [ "66", "D3", "4" ] },
2394        "ShrwByCl": { "opcodes": [ "66", "D3", "5" ] }
2395      },
2396      "args": [
2397        { "class": "GeneralReg16/Mem16", "usage": "use_def" },
2398        { "class": "CL", "usage": "use" },
2399        { "class": "FLAGS", "usage": "def" }
2400      ]
2401    },
2402    {
2403      "encodings": {
2404        "Rorxl": { "feature": "BMI2", "opcodes": [ "C4", "03", "03", "F0" ] }
2405      },
2406      "args": [
2407        { "class": "GeneralReg32", "usage": "def" },
2408        { "class": "GeneralReg32/Mem32", "usage": "use" },
2409        { "class": "Imm8" }
2410      ]
2411    },
2412    {
2413      "encodings": {
2414        "Roundsd": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "0B" ] }
2415      },
2416      "args": [
2417        { "class": "FpReg64", "usage": "def" },
2418        { "class": "FpReg64/VecMem64", "usage": "use" },
2419        { "class": "Imm8" }
2420      ]
2421    },
2422    {
2423      "encodings": {
2424        "Roundss": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "0A" ] }
2425      },
2426      "args": [
2427        { "class": "FpReg32", "usage": "def" },
2428        { "class": "FpReg32/VecMem32", "usage": "use" },
2429        { "class": "Imm8" }
2430      ]
2431    },
2432    {
2433      "encodings": {
2434        "Sahf": { "opcode": "9E" }
2435      },
2436      "args": [
2437        { "class": "EAX", "usage": "use" },
2438        { "class": "FLAGS", "usage": "def" }
2439      ]
2440    },
2441    {
2442      "encodings": {
2443        "Sarxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "02", "F7" ] },
2444        "Shlxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "01", "F7" ] },
2445        "Shrxl": { "feature": "BMI2", "opcodes": [ "C4", "02", "03", "F7" ] }
2446      },
2447      "args": [
2448        { "class": "GeneralReg32", "usage": "use_def" },
2449        { "class": "GeneralReg32/Mem32", "usage": "use" },
2450        { "class": "GeneralReg32", "usage": "use" }
2451      ]
2452    },
2453    {
2454      "encodings": {
2455        "Setcc": { "opcodes": [ "0F", "90", "0" ] }
2456      },
2457      "args": [
2458        { "class": "Cond" },
2459        { "class": "GeneralReg8/Mem8", "usage": "def" },
2460        { "class": "FLAGS", "usage": "use" }
2461      ]
2462    },
2463    {
2464      "encodings": {
2465        "Shldl": { "opcodes": [ "0F", "A4" ], "type": "reg_to_rm" },
2466        "Shrdl": { "opcodes": [ "0F", "AC" ], "type": "reg_to_rm" }
2467      },
2468      "args": [
2469        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2470        { "class": "GeneralReg32", "usage": "use" },
2471        { "class": "Imm8" },
2472        { "class": "FLAGS", "usage": "def" }
2473      ]
2474    },
2475    {
2476      "encodings": {
2477        "ShldlByCl": { "opcodes": [ "0F", "A5" ], "type": "reg_to_rm" },
2478        "ShrdlByCl": { "opcodes": [ "0F", "AD" ], "type": "reg_to_rm" }
2479      },
2480      "args": [
2481        { "class": "GeneralReg32/Mem32", "usage": "use_def" },
2482        { "class": "GeneralReg32", "usage": "use" },
2483        { "class": "CL", "usage": "use" },
2484        { "class": "FLAGS", "usage": "def" }
2485      ]
2486    },
2487    {
2488      "encodings": {
2489        "Sqrtsd": { "opcodes": [ "F2", "0F", "51" ] }
2490      },
2491      "args": [
2492        { "class": "FpReg64", "usage": "def" },
2493        { "class": "FpReg64/VecMem64", "usage": "use" }
2494      ]
2495    },
2496    {
2497      "encodings": {
2498        "Sqrtss": { "opcodes": [ "F3", "0F", "51" ] }
2499      },
2500      "args": [
2501        { "class": "FpReg32", "usage": "def" },
2502        { "class": "FpReg32/VecMem32", "usage": "use" }
2503      ]
2504    },
2505    {
2506      "encodings": {
2507        "Stmxcsr": { "opcodes": [ "0F", "AE", "3" ] },
2508        "Vstmxcsr": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "AE", "3" ] }
2509      },
2510      "args": [
2511        { "class": "Mem32", "usage": "def" }
2512      ]
2513    },
2514    {
2515      "encodings": {
2516        "Ucomisd": { "opcodes": [ "66", "0F", "2E" ] }
2517      },
2518      "args": [
2519        { "class": "FpReg64", "usage": "use" },
2520        { "class": "FpReg64/VecMem64", "usage": "use" },
2521        { "class": "FLAGS", "usage": "def" }
2522      ]
2523    },
2524    {
2525      "encodings": {
2526        "Ucomiss": { "opcodes": [ "0F", "2E" ] }
2527      },
2528      "args": [
2529        { "class": "FpReg32", "usage": "use" },
2530        { "class": "FpReg32/VecMem32", "usage": "use" },
2531        { "class": "FLAGS", "usage": "def" }
2532      ]
2533    },
2534    {
2535      "encodings": {
2536        "Vaddpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "58" ], "type": "optimizable_using_commutation" },
2537        "Vaddps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "58" ], "type": "optimizable_using_commutation" },
2538        "Vaesdec": { "feature": "AESAVX", "opcodes": [ "C4", "02", "01", "DE" ], "type": "vex_rm_to_reg" },
2539        "Vaesdeclast": { "feature": "AESAVX", "opcodes": [ "C4", "02", "01", "DF" ], "type": "vex_rm_to_reg" },
2540        "Vaesenc": { "feature": "AESAVX", "opcodes": [ "C4", "02", "01", "DC" ], "type": "vex_rm_to_reg" },
2541        "Vaesenclast": { "feature": "AESAVX", "opcodes": [ "C4", "02", "01", "DD" ], "type": "vex_rm_to_reg" },
2542        "Vandpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "54" ], "type": "optimizable_using_commutation" },
2543        "Vandps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "54" ], "type": "optimizable_using_commutation" },
2544        "Vcmpeqpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "00" ], "type": "optimizable_using_commutation" },
2545        "Vcmpeqps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "00" ], "type": "optimizable_using_commutation" },
2546        "Vcmplepd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "02" ], "type": "vex_rm_to_reg" },
2547        "Vcmpleps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "02" ], "type": "vex_rm_to_reg" },
2548        "Vcmpltpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "01" ], "type": "vex_rm_to_reg" },
2549        "Vcmpltps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "01" ], "type": "vex_rm_to_reg" },
2550        "Vcmpneqpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "04" ], "type": "optimizable_using_commutation" },
2551        "Vcmpneqps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "04" ], "type": "optimizable_using_commutation" },
2552        "Vcmpnlepd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "06" ], "type": "vex_rm_to_reg" },
2553        "Vcmpnleps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "06" ], "type": "vex_rm_to_reg" },
2554        "Vcmpnltpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "05" ], "type": "vex_rm_to_reg" },
2555        "Vcmpnltps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "05" ], "type": "vex_rm_to_reg" },
2556        "Vcmpordpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "07" ], "type": "optimizable_using_commutation" },
2557        "Vcmpordps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "07" ], "type": "optimizable_using_commutation" },
2558        "Vcmpunordpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C2", "03" ], "type": "optimizable_using_commutation" },
2559        "Vcmpunordps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C2", "03" ], "type": "optimizable_using_commutation" },
2560        "Vdivpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5E" ], "type": "vex_rm_to_reg" },
2561        "Vdivps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5E" ], "type": "vex_rm_to_reg" },
2562        "Vhaddpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "7C" ], "type": "vex_rm_to_reg" },
2563        "Vhaddps": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "7C" ], "type": "vex_rm_to_reg" },
2564        "Vmaxpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5F" ], "type": "vex_rm_to_reg" },
2565        "Vmaxps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5F" ], "type": "vex_rm_to_reg" },
2566        "Vminpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5D" ], "type": "vex_rm_to_reg" },
2567        "Vminps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5D" ], "type": "vex_rm_to_reg" },
2568        "Vmulpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "59" ], "type": "optimizable_using_commutation" },
2569        "Vmulps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "59" ], "type": "optimizable_using_commutation" },
2570        "Vorpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "56" ], "type": "optimizable_using_commutation" },
2571        "Vorps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "56" ], "type": "optimizable_using_commutation" },
2572        "Vpackssdw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6B" ], "type": "vex_rm_to_reg" },
2573        "Vpacksswb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "63" ], "type": "vex_rm_to_reg" },
2574        "Vpackusdw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "2B" ], "type": "vex_rm_to_reg" },
2575        "Vpackuswb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "67" ], "type": "vex_rm_to_reg" },
2576        "Vpaddb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FC" ], "type": "optimizable_using_commutation" },
2577        "Vpaddd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FE" ], "type": "optimizable_using_commutation" },
2578        "Vpaddq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D4" ], "type": "optimizable_using_commutation" },
2579        "Vpaddsb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EC" ], "type": "optimizable_using_commutation" },
2580        "Vpaddsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "ED" ], "type": "optimizable_using_commutation" },
2581        "Vpaddusb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DC" ], "type": "optimizable_using_commutation" },
2582        "Vpaddusw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DD" ], "type": "optimizable_using_commutation" },
2583        "Vpaddw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FD" ], "type": "optimizable_using_commutation" },
2584        "Vpand": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DB" ], "type": "optimizable_using_commutation" },
2585        "Vpandn": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DF" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2586        "Vpavgb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E0" ], "type": "optimizable_using_commutation" },
2587        "Vpavgw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E3" ], "type": "optimizable_using_commutation" },
2588        "Vpclmulhqhqdq": { "feature": "CLMULAVX", "opcodes": [ "C4", "03", "01", "44", "11" ], "type": "vex_rm_to_reg" },
2589        "Vpclmulhqlqdq": { "feature": "CLMULAVX", "opcodes": [ "C4", "03", "01", "44", "01" ], "type": "vex_rm_to_reg" },
2590        "Vpclmullqhqdq": { "feature": "CLMULAVX", "opcodes": [ "C4", "03", "01", "44", "10" ], "type": "vex_rm_to_reg" },
2591        "Vpclmullqlqdq": { "feature": "CLMULAVX", "opcodes": [ "C4", "03", "01", "44", "00" ], "type": "vex_rm_to_reg" },
2592        "Vpcmpeqb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "74" ], "type": "optimizable_using_commutation", "dependency_breaking": "true" },
2593        "Vpcmpeqd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "76" ], "type": "optimizable_using_commutation", "dependency_breaking": "true" },
2594        "Vpcmpeqq": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "29" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2595        "Vpcmpeqw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "75" ], "type": "optimizable_using_commutation", "dependency_breaking": "true" },
2596        "Vpcmpgtb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "64" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2597        "Vpcmpgtd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "66" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2598        "Vpcmpgtq": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "37" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2599        "Vpcmpgtw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "65" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2600        "Vpmaxsb": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3C" ], "type": "vex_rm_to_reg" },
2601        "Vpmaxsd": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3D" ], "type": "vex_rm_to_reg" },
2602        "Vpmaxsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EE" ], "type": "optimizable_using_commutation" },
2603        "Vpmaxub": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DE" ], "type": "optimizable_using_commutation" },
2604        "Vpmaxud": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3F" ], "type": "vex_rm_to_reg" },
2605        "Vpmaxuw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3E" ], "type": "vex_rm_to_reg" },
2606        "Vpminsb": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "38" ], "type": "vex_rm_to_reg" },
2607        "Vpminsd": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "39" ], "type": "vex_rm_to_reg" },
2608        "Vpminsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EA" ], "type": "optimizable_using_commutation" },
2609        "Vpminub": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "DA" ], "type": "optimizable_using_commutation" },
2610        "Vpminud": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3B" ], "type": "vex_rm_to_reg" },
2611        "Vpminuw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "3A" ], "type": "vex_rm_to_reg" },
2612        "Vpmulhrsw": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "0B" ], "type": "vex_rm_to_reg" },
2613        "Vpmulhw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E5" ], "type": "optimizable_using_commutation" },
2614        "Vpmulld": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "40" ], "type": "vex_rm_to_reg" },
2615        "Vpmullw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D5" ], "type": "optimizable_using_commutation" },
2616        "Vpmuludq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F4" ], "type": "optimizable_using_commutation" },
2617        "Vpor": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EB" ], "type": "optimizable_using_commutation" },
2618        "Vpsadbw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F6" ], "type": "optimizable_using_commutation" },
2619        "Vpshufb": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "00" ], "type": "vex_rm_to_reg" },
2620        "Vpslld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F2" ], "type": "vex_rm_to_reg" },
2621        "Vpsllq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F3" ], "type": "vex_rm_to_reg" },
2622        "Vpsllw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F1" ], "type": "vex_rm_to_reg" },
2623        "Vpsrad": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E2" ], "type": "vex_rm_to_reg" },
2624        "Vpsraw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E1" ], "type": "vex_rm_to_reg" },
2625        "Vpsrld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D2" ], "type": "vex_rm_to_reg" },
2626        "Vpsrlq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D3" ], "type": "vex_rm_to_reg" },
2627        "Vpsrlw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D1" ], "type": "vex_rm_to_reg" },
2628        "Vpsubb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F8" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2629        "Vpsubd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FA" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2630        "Vpsubq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "FB" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2631        "Vpsubsb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E8" ], "type": "vex_rm_to_reg" },
2632        "Vpsubsw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "E9" ], "type": "vex_rm_to_reg" },
2633        "Vpsubusb": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D8" ], "type": "vex_rm_to_reg" },
2634        "Vpsubusw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "D9" ], "type": "vex_rm_to_reg" },
2635        "Vpsubw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "F9" ], "type": "vex_rm_to_reg", "dependency_breaking": "true" },
2636        "Vpunpckhbw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "68" ], "type": "vex_rm_to_reg" },
2637        "Vpunpckhdq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6A" ], "type": "vex_rm_to_reg" },
2638        "Vpunpckhqdq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6D" ], "type": "vex_rm_to_reg" },
2639        "Vpunpckhwd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "69" ], "type": "vex_rm_to_reg" },
2640        "Vpunpcklbw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "60" ], "type": "vex_rm_to_reg" },
2641        "Vpunpckldq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "62" ], "type": "vex_rm_to_reg" },
2642        "Vpunpcklqdq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6C" ], "type": "vex_rm_to_reg" },
2643        "Vpunpcklwd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "61" ], "type": "vex_rm_to_reg" },
2644        "Vpxor": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "EF" ], "type": "optimizable_using_commutation", "dependency_breaking": "true" },
2645        "Vsubpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "5C" ], "type": "vex_rm_to_reg" },
2646        "Vsubps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "5C" ], "type": "vex_rm_to_reg" },
2647        "Vunpckhpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "15" ], "type": "vex_rm_to_reg" },
2648        "Vunpckhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "15" ], "type": "vex_rm_to_reg" },
2649        "Vunpcklpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "14" ], "type": "vex_rm_to_reg" },
2650        "Vunpcklps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "14" ], "type": "vex_rm_to_reg" },
2651        "Vxorpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "57" ], "type": "optimizable_using_commutation", "dependency_breaking": "true" },
2652        "Vxorps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "57" ], "type": "optimizable_using_commutation", "dependency_breaking": "true" }
2653      },
2654      "args": [
2655        { "class": "VecReg128", "usage": "def" },
2656        { "class": "VecReg128", "usage": "use" },
2657        { "class": "VecReg128/VecMem128", "usage": "use" }
2658      ]
2659    },
2660    {
2661      "encodings": {
2662        "Vaddpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "58" ], "type": "optimizable_using_commutation" },
2663        "Vaddps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "58" ], "type": "optimizable_using_commutation" },
2664        "Vaesdec": { "feature": "VAES", "opcodes": [ "C4", "02", "05", "DE" ], "type": "vex_rm_to_reg" },
2665        "Vaesdeclast": { "feature": "VAES", "opcodes": [ "C4", "02", "05", "DF" ], "type": "vex_rm_to_reg" },
2666        "Vaesenc": { "feature": "VAES", "opcodes": [ "C4", "02", "05", "DC" ], "type": "vex_rm_to_reg" },
2667        "Vaesenclast": { "feature": "VAES", "opcodes": [ "C4", "02", "05", "DD" ], "type": "vex_rm_to_reg" },
2668        "Vandpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "54" ], "type": "optimizable_using_commutation" },
2669        "Vandps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "54" ], "type": "optimizable_using_commutation" },
2670        "Vcmpeqpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "00" ], "type": "optimizable_using_commutation" },
2671        "Vcmpeqps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "00" ], "type": "optimizable_using_commutation" },
2672        "Vcmplepd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "02" ], "type": "vex_rm_to_reg" },
2673        "Vcmpleps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "02" ], "type": "vex_rm_to_reg" },
2674        "Vcmpltpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "01" ], "type": "vex_rm_to_reg" },
2675        "Vcmpltps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "01" ], "type": "vex_rm_to_reg" },
2676        "Vcmpneqpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "04" ], "type": "optimizable_using_commutation" },
2677        "Vcmpneqps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "04" ], "type": "optimizable_using_commutation" },
2678        "Vcmpnlepd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "06" ], "type": "vex_rm_to_reg" },
2679        "Vcmpnleps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "06" ], "type": "vex_rm_to_reg" },
2680        "Vcmpnltpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "05" ], "type": "vex_rm_to_reg" },
2681        "Vcmpnltps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "05" ], "type": "vex_rm_to_reg" },
2682        "Vcmpordpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "07" ], "type": "optimizable_using_commutation" },
2683        "Vcmpordps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "07" ], "type": "optimizable_using_commutation" },
2684        "Vcmpunordpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C2", "03" ], "type": "optimizable_using_commutation" },
2685        "Vcmpunordps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C2", "03" ], "type": "optimizable_using_commutation" },
2686        "Vdivpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "5E" ], "type": "vex_rm_to_reg" },
2687        "Vdivps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "5E" ], "type": "vex_rm_to_reg" },
2688        "Vhaddpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "7C" ], "type": "vex_rm_to_reg" },
2689        "Vhaddps": { "feature": "AVX", "opcodes": [ "C4", "01", "07", "7C" ], "type": "vex_rm_to_reg" },
2690        "Vmaxpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "5F" ], "type": "vex_rm_to_reg" },
2691        "Vmaxps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "5F" ], "type": "vex_rm_to_reg" },
2692        "Vminpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "5D" ], "type": "vex_rm_to_reg" },
2693        "Vminps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "5D" ], "type": "vex_rm_to_reg" },
2694        "Vmulpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "59" ], "type": "optimizable_using_commutation" },
2695        "Vmulps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "59" ], "type": "optimizable_using_commutation" },
2696        "Vorpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "56" ], "type": "optimizable_using_commutation" },
2697        "Vorps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "56" ], "type": "optimizable_using_commutation" },
2698        "Vpackssdw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "6B" ], "type": "vex_rm_to_reg" },
2699        "Vpacksswb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "63" ], "type": "vex_rm_to_reg" },
2700        "Vpackusdw": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "2B" ], "type": "vex_rm_to_reg" },
2701        "Vpackuswb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "67" ], "type": "vex_rm_to_reg" },
2702        "Vpaddb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "FC" ], "type": "optimizable_using_commutation" },
2703        "Vpaddd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "FE" ], "type": "optimizable_using_commutation" },
2704        "Vpaddq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D4" ], "type": "optimizable_using_commutation" },
2705        "Vpaddsb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "EC" ], "type": "optimizable_using_commutation" },
2706        "Vpaddsw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "ED" ], "type": "optimizable_using_commutation" },
2707        "Vpaddusb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "DC" ], "type": "optimizable_using_commutation" },
2708        "Vpaddusw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "DD" ], "type": "optimizable_using_commutation" },
2709        "Vpaddw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "FD" ], "type": "optimizable_using_commutation" },
2710        "Vpand": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "DB" ], "type": "optimizable_using_commutation" },
2711        "Vpandn": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "DF" ], "type": "vex_rm_to_reg" },
2712        "Vpavgb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E0" ], "type": "optimizable_using_commutation" },
2713        "Vpavgw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E3" ], "type": "optimizable_using_commutation" },
2714        "Vpclmulhqhqdq": { "feature": "VPCLMULQD", "opcodes": [ "C4", "03", "05", "44", "11" ], "type": "vex_rm_to_reg" },
2715        "Vpclmulhqlqdq": { "feature": "VPCLMULQD", "opcodes": [ "C4", "03", "05", "44", "01" ], "type": "vex_rm_to_reg" },
2716        "Vpclmullqhqdq": { "feature": "VPCLMULQD", "opcodes": [ "C4", "03", "05", "44", "10" ], "type": "vex_rm_to_reg" },
2717        "Vpclmullqlqdq": { "feature": "VPCLMULQD", "opcodes": [ "C4", "03", "05", "44", "00" ], "type": "vex_rm_to_reg" },
2718        "Vpcmpeqb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "74" ], "type": "optimizable_using_commutation" },
2719        "Vpcmpeqd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "76" ], "type": "optimizable_using_commutation" },
2720        "Vpcmpeqq": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "29" ], "type": "vex_rm_to_reg" },
2721        "Vpcmpeqw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "75" ], "type": "optimizable_using_commutation" },
2722        "Vpcmpgtb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "64" ], "type": "vex_rm_to_reg" },
2723        "Vpcmpgtd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "66" ], "type": "vex_rm_to_reg" },
2724        "Vpcmpgtq": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "37" ], "type": "vex_rm_to_reg" },
2725        "Vpcmpgtw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "65" ], "type": "vex_rm_to_reg" },
2726        "Vpmaxsb": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "3C" ], "type": "vex_rm_to_reg" },
2727        "Vpmaxsd": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "3D" ], "type": "vex_rm_to_reg" },
2728        "Vpmaxsw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "EE" ], "type": "optimizable_using_commutation" },
2729        "Vpmaxub": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "DE" ], "type": "optimizable_using_commutation" },
2730        "Vpmaxud": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "3F" ], "type": "vex_rm_to_reg" },
2731        "Vpmaxuw": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "3E" ], "type": "vex_rm_to_reg" },
2732        "Vpminsb": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "38" ], "type": "vex_rm_to_reg" },
2733        "Vpminsd": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "39" ], "type": "vex_rm_to_reg" },
2734        "Vpminsw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "EA" ], "type": "optimizable_using_commutation" },
2735        "Vpminub": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "DA" ], "type": "optimizable_using_commutation" },
2736        "Vpminud": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "3B" ], "type": "vex_rm_to_reg" },
2737        "Vpminuw": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "3A" ], "type": "vex_rm_to_reg" },
2738        "Vpmulhrsw": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "0B" ], "type": "vex_rm_to_reg" },
2739        "Vpmulhw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E5" ], "type": "optimizable_using_commutation" },
2740        "Vpmulld": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "40" ], "type": "vex_rm_to_reg" },
2741        "Vpmullw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D5" ], "type": "optimizable_using_commutation" },
2742        "Vpmuludq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F4" ], "type": "optimizable_using_commutation" },
2743        "Vpor": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "EB" ], "type": "optimizable_using_commutation" },
2744        "Vpsadbw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F6" ], "type": "optimizable_using_commutation" },
2745        "Vpshufb": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "00" ], "type": "vex_rm_to_reg" },
2746        "Vpsubb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F8" ], "type": "vex_rm_to_reg" },
2747        "Vpsubd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "FA" ], "type": "vex_rm_to_reg" },
2748        "Vpsubq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "FB" ], "type": "vex_rm_to_reg" },
2749        "Vpsubsb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E8" ], "type": "vex_rm_to_reg" },
2750        "Vpsubsw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E9" ], "type": "vex_rm_to_reg" },
2751        "Vpsubusb": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D8" ], "type": "vex_rm_to_reg" },
2752        "Vpsubusw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D9" ], "type": "vex_rm_to_reg" },
2753        "Vpsubw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F9" ], "type": "vex_rm_to_reg" },
2754        "Vpunpckhbw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "68" ], "type": "vex_rm_to_reg" },
2755        "Vpunpckhdq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "6A" ], "type": "vex_rm_to_reg" },
2756        "Vpunpckhqdq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "6D" ], "type": "vex_rm_to_reg" },
2757        "Vpunpckhwd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "69" ], "type": "vex_rm_to_reg" },
2758        "Vpunpcklbw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "60" ], "type": "vex_rm_to_reg" },
2759        "Vpunpckldq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "62" ], "type": "vex_rm_to_reg" },
2760        "Vpunpcklqdq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "6C" ], "type": "vex_rm_to_reg" },
2761        "Vpunpcklwd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "61" ], "type": "vex_rm_to_reg" },
2762        "Vpxor": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "EF" ], "type": "optimizable_using_commutation" },
2763        "Vsubpd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "5C" ], "type": "vex_rm_to_reg" },
2764        "Vsubps": { "feature": "AVX2", "opcodes": [ "C4", "01", "04", "5C" ], "type": "vex_rm_to_reg" },
2765        "Vunpckhpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "15" ], "type": "vex_rm_to_reg" },
2766        "Vunpckhps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "15" ], "type": "vex_rm_to_reg" },
2767        "Vunpcklpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "14" ], "type": "vex_rm_to_reg" },
2768        "Vunpcklps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "14" ], "type": "vex_rm_to_reg" },
2769        "Vxorpd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "57" ], "type": "optimizable_using_commutation" },
2770        "Vxorps": { "feature": "AVX2", "opcodes": [ "C4", "01", "04", "57" ], "type": "optimizable_using_commutation" }
2771      },
2772      "args": [
2773        { "class": "VecReg256", "usage": "def" },
2774        { "class": "VecReg256", "usage": "use" },
2775        { "class": "VecReg256/VecMem256", "usage": "use" }
2776      ]
2777    },
2778    {
2779      "encodings": {
2780        "Vaddsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "58" ], "type": "optimizable_using_commutation" },
2781        "Vcmpeqsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "00" ], "type": "optimizable_using_commutation" },
2782        "Vcmplesd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "02" ], "type": "vex_rm_to_reg" },
2783        "Vcmpltsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "01" ], "type": "vex_rm_to_reg" },
2784        "Vcmpneqsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "04" ], "type": "optimizable_using_commutation" },
2785        "Vcmpnlesd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "06" ], "type": "vex_rm_to_reg" },
2786        "Vcmpnltsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "05" ], "type": "vex_rm_to_reg" },
2787        "Vcmpordsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "07" ], "type": "optimizable_using_commutation" },
2788        "Vcmpunordsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "C2", "03" ], "type": "optimizable_using_commutation" },
2789        "Vdivsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "5E" ], "type": "vex_rm_to_reg" },
2790        "Vmulsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "59" ], "type": "optimizable_using_commutation" },
2791        "Vsubsd": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "5C" ], "type": "vex_rm_to_reg" }
2792      },
2793      "args": [
2794        { "class": "FpReg64", "usage": "def" },
2795        { "class": "FpReg64", "usage": "use" },
2796        { "class": "FpReg64/VecMem64", "usage": "use" }
2797      ]
2798    },
2799    {
2800      "encodings": {
2801        "Vaddss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "58" ], "type": "optimizable_using_commutation" },
2802        "Vcmpeqss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "00" ], "type": "optimizable_using_commutation" },
2803        "Vcmpless": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "02" ], "type": "vex_rm_to_reg" },
2804        "Vcmpltss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "01" ], "type": "vex_rm_to_reg" },
2805        "Vcmpneqss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "04" ], "type": "optimizable_using_commutation" },
2806        "Vcmpnless": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "06" ], "type": "vex_rm_to_reg" },
2807        "Vcmpnltss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "05" ], "type": "vex_rm_to_reg" },
2808        "Vcmpordss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "07" ], "type": "optimizable_using_commutation" },
2809        "Vcmpunordss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "C2", "03" ], "type": "optimizable_using_commutation" },
2810        "Vdivss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5E" ], "type": "vex_rm_to_reg" },
2811        "Vmulss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "59" ], "type": "optimizable_using_commutation" },
2812        "Vsubss": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5C" ], "type": "vex_rm_to_reg" }
2813      },
2814      "args": [
2815        { "class": "FpReg32", "usage": "def" },
2816        { "class": "FpReg32", "usage": "use" },
2817        { "class": "FpReg32/VecMem32", "usage": "use" }
2818      ]
2819    },
2820    {
2821      "encodings": {
2822        "Vblendvps": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "4A" ], "type": "vex_rm_imm_to_reg" },
2823        "Vblendvpd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "4B" ], "type": "vex_rm_imm_to_reg" }
2824      },
2825      "args": [
2826        { "class": "XmmReg", "usage": "use_def" },
2827        { "class": "XmmReg", "usage": "use" },
2828        { "class": "XmmReg/VecMem128", "usage": "use" },
2829        { "class": "XmmReg", "usage": "use" }
2830      ]
2831    },
2832    {
2833      "encodings": {
2834        "Vblendvps": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "4A" ], "type": "vex_rm_imm_to_reg" },
2835        "Vblendvpd": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "4B" ], "type": "vex_rm_imm_to_reg" }
2836      },
2837      "args": [
2838        { "class": "YmmReg", "usage": "use_def" },
2839        { "class": "YmmReg", "usage": "use" },
2840        { "class": "YmmReg/VecMem128", "usage": "use" },
2841        { "class": "YmmReg", "usage": "use" }
2842      ]
2843    },
2844    {
2845      "encodings": {
2846        "Vbroadcastf128": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "1a" ] },
2847        "Vbroadcasti128": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "5a" ] }
2848      },
2849      "args": [
2850        { "class": "VecReg256", "usage": "def" },
2851        { "class": "VecMem128", "usage": "use" }
2852      ]
2853    },
2854    {
2855      "encodings": {
2856        "Vbroadcastsd": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "19" ] },
2857        "Vbroadcastss": { "feature": "AVX2", "opcodes": [ "C4", "02", "05", "18" ] }
2858      },
2859      "args": [
2860        { "class": "VecReg256", "usage": "def" },
2861        { "class": "XmmReg", "usage": "use" }
2862      ]
2863    },
2864    {
2865      "encodings": {
2866        "Vbroadcastsd": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "19" ] }
2867      },
2868      "args": [
2869        { "class": "VecReg256", "usage": "def" },
2870        { "class": "VecMem64", "usage": "use" }
2871      ]
2872    },
2873    {
2874      "encodings": {
2875        "Vbroadcastss": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "18" ] }
2876      },
2877      "args": [
2878        { "class": "VecReg128", "usage": "def" },
2879        { "class": "VecMem32", "usage": "use" }
2880      ]
2881    },
2882    {
2883      "encodings": {
2884        "Vbroadcastss": { "feature": "AVX2", "opcodes": [ "C4", "02", "01", "18" ] }
2885      },
2886      "args": [
2887        { "class": "VecReg128", "usage": "def" },
2888        { "class": "XmmReg", "usage": "use" }
2889      ]
2890    },
2891    {
2892      "encodings": {
2893        "Vbroadcastss": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "18" ] }
2894      },
2895      "args": [
2896        { "class": "VecReg256", "usage": "def" },
2897        { "class": "VecMem32", "usage": "use" }
2898      ]
2899    },
2900    {
2901      "encodings": {
2902        "Vcvtdq2pd": { "feature": "AVX", "opcodes": [ "C4", "01", "06", "E6" ] },
2903        "Vcvtph2ps": { "feature": "F16C", "opcodes": [ "C4", "02", "05", "13" ] },
2904        "Vcvtps2pd": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "5A" ] }
2905      },
2906      "args": [
2907        { "class": "VecReg256", "usage": "def" },
2908        { "class": "VecReg128/VecMem128", "usage": "use" }
2909      ]
2910    },
2911    {
2912      "encodings": {
2913        "Vcvtdq2ps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "5B" ] },
2914        "Vcvtps2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "5B" ] },
2915        "Vcvttps2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "06", "5B" ] }
2916      },
2917      "args": [
2918        { "class": "VecReg256", "usage": "def" },
2919        { "class": "VecReg256/VecMem256", "usage": "use" }
2920      ]
2921    },
2922    {
2923      "encodings": {
2924        "Vcvtpd2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "07", "E6" ] },
2925        "Vcvtpd2ps": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "5A" ] },
2926        "Vcvttpd2dq": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "E6" ] }
2927      },
2928      "args": [
2929        { "class": "VecReg128", "usage": "def" },
2930        { "class": "VecReg256", "usage": "use" }
2931      ]
2932    },
2933    {
2934      "encodings": {
2935        "Vcvtpd2dqy": {
2936          "comment": [
2937            "Suffix “y” used to distingush 128bit memory operand from 256bit memory operand",
2938            "This is common convention for assemblers that use AT&T syntax"
2939          ],
2940          "feature": "AVX",
2941          "opcodes": [ "C4", "01", "07", "E6" ]
2942        },
2943        "Vcvtpd2psy": {
2944          "comment": [
2945            "Suffix “y” used to distingush 128bit memory operand from 256bit memory operand",
2946            "This is common convention for assemblers that use AT&T syntax"
2947          ],
2948          "feature": "AVX",
2949          "opcodes": [ "C4", "01", "05", "5A" ]
2950        },
2951        "Vcvttpd2dqy": {
2952          "comment": [
2953            "Suffix “y” used to distingush 128bit memory operand from 256bit memory operand",
2954            "This is common convention for assemblers that use AT&T syntax"
2955          ],
2956          "feature": "AVX",
2957          "opcodes": [ "C4", "01", "05", "E6" ]
2958        }
2959      },
2960      "args": [
2961        { "class": "VecReg128", "usage": "def" },
2962        { "class": "VecReg256/VecMem256", "usage": "use" }
2963      ]
2964    },
2965    {
2966      "encodings": {
2967        "Vcvtps2ph": { "feature": "F16C", "opcodes": [ "C4", "03", "05", "1D" ], "type": "reg_to_rm" }
2968      },
2969      "args": [
2970        { "class": "VecReg128/VecMem128", "usage": "def" },
2971        { "class": "VecReg256", "usage": "use" },
2972        { "class": "Imm8" }
2973      ]
2974    },
2975    {
2976      "encodings": {
2977        "Vcvtps2ph": { "feature": "F16C", "opcodes": [ "C4", "03", "01", "1D" ], "type": "reg_to_rm" }
2978      },
2979      "args": [
2980        { "class": "XmmReg/VecMem64", "usage": "def" },
2981        { "class": "VecReg128", "usage": "use" },
2982        { "class": "Imm8" }
2983      ]
2984    },
2985    {
2986      "encodings": {
2987        "Vcvtsd2ss": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "5A" ], "type": "vex_rm_to_reg" }
2988      },
2989      "args": [
2990        { "class": "FpReg32", "usage": "def" },
2991        { "class": "XmmReg", "usage": "use" },
2992        { "class": "FpReg64/VecMem64", "usage": "use" }
2993      ]
2994    },
2995    {
2996      "encodings": {
2997        "Vcvtsi2sdl": { "feature": "AVX", "opcodes": [ "C4", "01", "03", "2A" ], "type": "vex_rm_to_reg" }
2998      },
2999      "args": [
3000        { "class": "FpReg64", "usage": "def" },
3001        { "class": "XmmReg", "usage": "use" },
3002        { "class": "GeneralReg32/Mem32", "usage": "use" }
3003      ]
3004    },
3005    {
3006      "encodings": {
3007        "Vcvtsi2ssl": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "2A" ], "type": "vex_rm_to_reg" }
3008      },
3009      "args": [
3010        { "class": "FpReg32", "usage": "def" },
3011        { "class": "XmmReg", "usage": "use" },
3012        { "class": "GeneralReg32/Mem32", "usage": "use" }
3013      ]
3014    },
3015    {
3016      "encodings": {
3017        "Vcvtss2sd": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "5A" ], "type": "vex_rm_to_reg" }
3018      },
3019      "args": [
3020        { "class": "FpReg64", "usage": "def" },
3021        { "class": "XmmReg", "usage": "use" },
3022        { "class": "FpReg32/VecMem32", "usage": "use" }
3023      ]
3024    },
3025    {
3026      "encodings": {
3027        "Vextractf128": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "19" ], "type": "reg_to_rm" },
3028        "Vextracti128": { "feature": "AVX2", "opcodes": [ "C4", "03", "05", "39" ], "type": "reg_to_rm" }
3029      },
3030      "args": [
3031        { "class": "VecReg128/VecMem128", "usage": "def" },
3032        { "class": "VecReg256", "usage": "use" },
3033        { "class": "Imm8" }
3034      ]
3035    },
3036    {
3037      "encodings": {
3038        "Vfmadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "98" ], "type": "vex_rm_to_reg" },
3039        "Vfmadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "98" ], "type": "vex_rm_to_reg" },
3040        "Vfmadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A8" ], "type": "vex_rm_to_reg" },
3041        "Vfmadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A8" ], "type": "vex_rm_to_reg" },
3042        "Vfmadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B8" ], "type": "vex_rm_to_reg" },
3043        "Vfmadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B8" ], "type": "vex_rm_to_reg" },
3044        "Vfmaddsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "96" ], "type": "vex_rm_to_reg" },
3045        "Vfmaddsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "96" ], "type": "vex_rm_to_reg" },
3046        "Vfmaddsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A6" ], "type": "vex_rm_to_reg" },
3047        "Vfmaddsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A6" ], "type": "vex_rm_to_reg" },
3048        "Vfmaddsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B6" ], "type": "vex_rm_to_reg" },
3049        "Vfmaddsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B6" ], "type": "vex_rm_to_reg" },
3050        "Vfmsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9A" ], "type": "vex_rm_to_reg" },
3051        "Vfmsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9A" ], "type": "vex_rm_to_reg" },
3052        "Vfmsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AA" ], "type": "vex_rm_to_reg" },
3053        "Vfmsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AA" ], "type": "vex_rm_to_reg" },
3054        "Vfmsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BA" ], "type": "vex_rm_to_reg" },
3055        "Vfmsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BA" ], "type": "vex_rm_to_reg" },
3056        "Vfmsubadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "97" ], "type": "vex_rm_to_reg" },
3057        "Vfmsubadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "97" ], "type": "vex_rm_to_reg" },
3058        "Vfmsubadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A7" ], "type": "vex_rm_to_reg" },
3059        "Vfmsubadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A7" ], "type": "vex_rm_to_reg" },
3060        "Vfmsubadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B7" ], "type": "vex_rm_to_reg" },
3061        "Vfmsubadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B7" ], "type": "vex_rm_to_reg" },
3062        "Vfnmadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9C" ], "type": "vex_rm_to_reg" },
3063        "Vfnmadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9C" ], "type": "vex_rm_to_reg" },
3064        "Vfnmadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AC" ], "type": "vex_rm_to_reg" },
3065        "Vfnmadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AC" ], "type": "vex_rm_to_reg" },
3066        "Vfnmadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BC" ], "type": "vex_rm_to_reg" },
3067        "Vfnmadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BC" ], "type": "vex_rm_to_reg" },
3068        "Vfnmsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9E" ], "type": "vex_rm_to_reg" },
3069        "Vfnmsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9E" ], "type": "vex_rm_to_reg" },
3070        "Vfnmsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AE" ], "type": "vex_rm_to_reg" },
3071        "Vfnmsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AE" ], "type": "vex_rm_to_reg" },
3072        "Vfnmsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BE" ], "type": "vex_rm_to_reg" },
3073        "Vfnmsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BE" ], "type": "vex_rm_to_reg" }
3074      },
3075      "args": [
3076        { "class": "VecReg128", "usage": "use_def" },
3077        { "class": "VecReg128", "usage": "use" },
3078        { "class": "VecReg128/VecMem128", "usage": "use" }
3079      ]
3080    },
3081    {
3082      "encodings": {
3083        "Vfmadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "98" ], "type": "vex_rm_to_reg" },
3084        "Vfmadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "98" ], "type": "vex_rm_to_reg" },
3085        "Vfmadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "A8" ], "type": "vex_rm_to_reg" },
3086        "Vfmadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "A8" ], "type": "vex_rm_to_reg" },
3087        "Vfmadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "B8" ], "type": "vex_rm_to_reg" },
3088        "Vfmadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "B8" ], "type": "vex_rm_to_reg" },
3089        "Vfmaddsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "96" ], "type": "vex_rm_to_reg" },
3090        "Vfmaddsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "96" ], "type": "vex_rm_to_reg" },
3091        "Vfmaddsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "A6" ], "type": "vex_rm_to_reg" },
3092        "Vfmaddsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "A6" ], "type": "vex_rm_to_reg" },
3093        "Vfmaddsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "B6" ], "type": "vex_rm_to_reg" },
3094        "Vfmaddsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "B6" ], "type": "vex_rm_to_reg" },
3095        "Vfmsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "9A" ], "type": "vex_rm_to_reg" },
3096        "Vfmsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "9A" ], "type": "vex_rm_to_reg" },
3097        "Vfmsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "AA" ], "type": "vex_rm_to_reg" },
3098        "Vfmsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "AA" ], "type": "vex_rm_to_reg" },
3099        "Vfmsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "BA" ], "type": "vex_rm_to_reg" },
3100        "Vfmsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "BA" ], "type": "vex_rm_to_reg" },
3101        "Vfmsubadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "97" ], "type": "vex_rm_to_reg" },
3102        "Vfmsubadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "97" ], "type": "vex_rm_to_reg" },
3103        "Vfmsubadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "A7" ], "type": "vex_rm_to_reg" },
3104        "Vfmsubadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "A7" ], "type": "vex_rm_to_reg" },
3105        "Vfmsubadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "B7" ], "type": "vex_rm_to_reg" },
3106        "Vfmsubadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "B7" ], "type": "vex_rm_to_reg" },
3107        "Vfnmadd132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "9C" ], "type": "vex_rm_to_reg" },
3108        "Vfnmadd132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "9C" ], "type": "vex_rm_to_reg" },
3109        "Vfnmadd213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "AC" ], "type": "vex_rm_to_reg" },
3110        "Vfnmadd213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "AC" ], "type": "vex_rm_to_reg" },
3111        "Vfnmadd231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "BC" ], "type": "vex_rm_to_reg" },
3112        "Vfnmadd231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "BC" ], "type": "vex_rm_to_reg" },
3113        "Vfnmsub132pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "9E" ], "type": "vex_rm_to_reg" },
3114        "Vfnmsub132ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "9E" ], "type": "vex_rm_to_reg" },
3115        "Vfnmsub213pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "AE" ], "type": "vex_rm_to_reg" },
3116        "Vfnmsub213ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "AE" ], "type": "vex_rm_to_reg" },
3117        "Vfnmsub231pd": { "feature": "FMA", "opcodes": [ "C4", "02", "85", "BE" ], "type": "vex_rm_to_reg" },
3118        "Vfnmsub231ps": { "feature": "FMA", "opcodes": [ "C4", "02", "05", "BE" ], "type": "vex_rm_to_reg" }
3119      },
3120      "args": [
3121        { "class": "VecReg256", "usage": "use_def" },
3122        { "class": "VecReg256", "usage": "use" },
3123        { "class": "VecReg256/VecMem256", "usage": "use" }
3124      ]
3125    },
3126    {
3127      "encodings": {
3128        "Vfmadd132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "99" ], "type": "vex_rm_to_reg" },
3129        "Vfmadd213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "A9" ], "type": "vex_rm_to_reg" },
3130        "Vfmadd231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "B9" ], "type": "vex_rm_to_reg" },
3131        "Vfmsub132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9B" ], "type": "vex_rm_to_reg" },
3132        "Vfmsub213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AB" ], "type": "vex_rm_to_reg" },
3133        "Vfmsub231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BB" ], "type": "vex_rm_to_reg" },
3134        "Vfnmadd132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9D" ], "type": "vex_rm_to_reg" },
3135        "Vfnmadd213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AD" ], "type": "vex_rm_to_reg" },
3136        "Vfnmadd231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BD" ], "type": "vex_rm_to_reg" },
3137        "Vfnmsub132sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "9F" ], "type": "vex_rm_to_reg" },
3138        "Vfnmsub213sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "AF" ], "type": "vex_rm_to_reg" },
3139        "Vfnmsub231sd": { "feature": "FMA", "opcodes": [ "C4", "02", "81", "BF" ], "type": "vex_rm_to_reg" }
3140      },
3141      "args": [
3142        { "class": "XmmReg", "usage": "use_def" },
3143        { "class": "XmmReg", "usage": "use" },
3144        { "class": "XmmReg/VecMem64", "usage": "use" }
3145      ]
3146    },
3147    {
3148      "encodings": {
3149        "Vfmadd132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "99" ], "type": "vex_rm_to_reg" },
3150        "Vfmadd213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "A9" ], "type": "vex_rm_to_reg" },
3151        "Vfmadd231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "B9" ], "type": "vex_rm_to_reg" },
3152        "Vfmsub132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9B" ], "type": "vex_rm_to_reg" },
3153        "Vfmsub213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AB" ], "type": "vex_rm_to_reg" },
3154        "Vfmsub231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BB" ], "type": "vex_rm_to_reg" },
3155        "Vfnmadd132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9D" ], "type": "vex_rm_to_reg" },
3156        "Vfnmadd213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AD" ], "type": "vex_rm_to_reg" },
3157        "Vfnmadd231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BD" ], "type": "vex_rm_to_reg" },
3158        "Vfnmsub132ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "9F" ], "type": "vex_rm_to_reg" },
3159        "Vfnmsub213ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "AF" ], "type": "vex_rm_to_reg" },
3160        "Vfnmsub231ss": { "feature": "FMA", "opcodes": [ "C4", "02", "01", "BF" ], "type": "vex_rm_to_reg" }
3161      },
3162      "args": [
3163        { "class": "XmmReg", "usage": "use_def" },
3164        { "class": "XmmReg", "usage": "use" },
3165        { "class": "XmmReg/VecMem32", "usage": "use" }
3166      ]
3167    },
3168    {
3169      "encodings": {
3170        "Vfmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "69" ], "type": "vex_rm_imm_to_reg" },
3171        "Vfmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "68" ], "type": "vex_rm_imm_to_reg" },
3172        "Vfmaddsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5D" ], "type": "vex_rm_imm_to_reg" },
3173        "Vfmaddsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5C" ], "type": "vex_rm_imm_to_reg" },
3174        "Vfmsubaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5F" ], "type": "vex_rm_imm_to_reg" },
3175        "Vfmsubaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "5E" ], "type": "vex_rm_imm_to_reg" },
3176        "Vfmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6D" ], "type": "vex_rm_imm_to_reg" },
3177        "Vfmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6C" ], "type": "vex_rm_imm_to_reg" },
3178        "Vfnmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "79" ], "type": "vex_rm_imm_to_reg" },
3179        "Vfnmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "78" ], "type": "vex_rm_imm_to_reg" },
3180        "Vfnmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7D" ], "type": "vex_rm_imm_to_reg" },
3181        "Vfnmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7C" ], "type": "vex_rm_imm_to_reg" }
3182      },
3183      "args": [
3184        { "class": "VecReg128", "usage": "def" },
3185        { "class": "VecReg128", "usage": "use" },
3186        { "class": "VecMem128", "usage": "use" },
3187        { "class": "VecReg128", "usage": "use" }
3188      ]
3189    },
3190    {
3191      "encodings": {
3192        "Vfmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "69" ], "type": "vex_imm_rm_to_reg" },
3193        "Vfmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "68" ], "type": "vex_imm_rm_to_reg" },
3194        "Vfmaddsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5D" ], "type": "vex_imm_rm_to_reg" },
3195        "Vfmaddsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5C" ], "type": "vex_imm_rm_to_reg" },
3196        "Vfmsubaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5F" ], "type": "vex_imm_rm_to_reg" },
3197        "Vfmsubaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "5E" ], "type": "vex_imm_rm_to_reg" },
3198        "Vfmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6D" ], "type": "vex_imm_rm_to_reg" },
3199        "Vfmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6C" ], "type": "vex_imm_rm_to_reg" },
3200        "Vfnmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "79" ], "type": "vex_imm_rm_to_reg" },
3201        "Vfnmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "78" ], "type": "vex_imm_rm_to_reg" },
3202        "Vfnmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7D" ], "type": "vex_imm_rm_to_reg" },
3203        "Vfnmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7C" ], "type": "vex_imm_rm_to_reg" }
3204      },
3205      "args": [
3206        { "class": "VecReg128", "usage": "def" },
3207        { "class": "VecReg128", "usage": "use" },
3208        { "class": "VecReg128", "usage": "use" },
3209        { "class": "VecReg128/VecMem128", "usage": "use" }
3210      ]
3211    },
3212    {
3213      "encodings": {
3214        "Vfmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "69" ], "type": "vex_rm_imm_to_reg" },
3215        "Vfmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "68" ], "type": "vex_rm_imm_to_reg" },
3216        "Vfmaddsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "5D" ], "type": "vex_rm_imm_to_reg" },
3217        "Vfmaddsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "5C" ], "type": "vex_rm_imm_to_reg" },
3218        "Vfmsubaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "5F" ], "type": "vex_rm_imm_to_reg" },
3219        "Vfmsubaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "5E" ], "type": "vex_rm_imm_to_reg" },
3220        "Vfmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "6D" ], "type": "vex_rm_imm_to_reg" },
3221        "Vfmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "6C" ], "type": "vex_rm_imm_to_reg" },
3222        "Vfnmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "79" ], "type": "vex_rm_imm_to_reg" },
3223        "Vfnmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "78" ], "type": "vex_rm_imm_to_reg" },
3224        "Vfnmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "7D" ], "type": "vex_rm_imm_to_reg" },
3225        "Vfnmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "05", "7C" ], "type": "vex_rm_imm_to_reg" }
3226      },
3227      "args": [
3228        { "class": "VecReg256", "usage": "def" },
3229        { "class": "VecReg256", "usage": "use" },
3230        { "class": "VecMem256", "usage": "use" },
3231        { "class": "VecReg256", "usage": "use" }
3232      ]
3233    },
3234    {
3235      "encodings": {
3236        "Vfmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "69" ], "type": "vex_imm_rm_to_reg" },
3237        "Vfmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "68" ], "type": "vex_imm_rm_to_reg" },
3238        "Vfmaddsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "5D" ], "type": "vex_imm_rm_to_reg" },
3239        "Vfmaddsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "5C" ], "type": "vex_imm_rm_to_reg" },
3240        "Vfmsubaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "5F" ], "type": "vex_imm_rm_to_reg" },
3241        "Vfmsubaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "5E" ], "type": "vex_imm_rm_to_reg" },
3242        "Vfmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "6D" ], "type": "vex_imm_rm_to_reg" },
3243        "Vfmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "6C" ], "type": "vex_imm_rm_to_reg" },
3244        "Vfnmaddpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "79" ], "type": "vex_imm_rm_to_reg" },
3245        "Vfnmaddps": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "78" ], "type": "vex_imm_rm_to_reg" },
3246        "Vfnmsubpd": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "7D" ], "type": "vex_imm_rm_to_reg" },
3247        "Vfnmsubps": { "feature": "FMA4", "opcodes": [ "C4", "03", "85", "7C" ], "type": "vex_imm_rm_to_reg" }
3248      },
3249      "args": [
3250        { "class": "VecReg256", "usage": "def" },
3251        { "class": "VecReg256", "usage": "use" },
3252        { "class": "VecReg256", "usage": "use" },
3253        { "class": "VecReg256/VecMem256", "usage": "use" }
3254      ]
3255    },
3256    {
3257      "encodings": {
3258        "Vfmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6B" ], "type": "vex_rm_imm_to_reg" },
3259        "Vfmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6F" ], "type": "vex_rm_imm_to_reg" },
3260        "Vfnmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7B" ], "type": "vex_rm_imm_to_reg" },
3261        "Vfnmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7F" ], "type": "vex_rm_imm_to_reg" }
3262      },
3263      "args": [
3264        { "class": "XmmReg", "usage": "def" },
3265        { "class": "XmmReg", "usage": "use" },
3266        { "class": "VecMem64", "usage": "use" },
3267        { "class": "XmmReg", "usage": "use" }
3268      ]
3269    },
3270    {
3271      "encodings": {
3272        "Vfmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6B" ], "type": "vex_imm_rm_to_reg" },
3273        "Vfmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6F" ], "type": "vex_imm_rm_to_reg" },
3274        "Vfnmaddsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7B" ], "type": "vex_imm_rm_to_reg" },
3275        "Vfnmsubsd": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7F" ], "type": "vex_imm_rm_to_reg" }
3276      },
3277      "args": [
3278        { "class": "XmmReg", "usage": "def" },
3279        { "class": "XmmReg", "usage": "use" },
3280        { "class": "XmmReg", "usage": "use" },
3281        { "class": "XmmReg/VecMem64", "usage": "use" }
3282      ]
3283    },
3284    {
3285      "encodings": {
3286        "Vfmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6A" ], "type": "vex_rm_imm_to_reg" },
3287        "Vfmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "6E" ], "type": "vex_rm_imm_to_reg" },
3288        "Vfnmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7A" ], "type": "vex_rm_imm_to_reg" },
3289        "Vfnmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "01", "7E" ], "type": "vex_rm_imm_to_reg" }
3290      },
3291      "args": [
3292        { "class": "XmmReg", "usage": "def" },
3293        { "class": "XmmReg", "usage": "use" },
3294        { "class": "VecMem32", "usage": "use" },
3295        { "class": "XmmReg", "usage": "use" }
3296      ]
3297    },
3298    {
3299      "encodings": {
3300        "Vfmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6A" ], "type": "vex_imm_rm_to_reg" },
3301        "Vfmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "6E" ], "type": "vex_imm_rm_to_reg" },
3302        "Vfnmaddss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7A" ], "type": "vex_imm_rm_to_reg" },
3303        "Vfnmsubss": { "feature": "FMA4", "opcodes": [ "C4", "03", "81", "7E" ], "type": "vex_imm_rm_to_reg" }
3304      },
3305      "args": [
3306        { "class": "XmmReg", "usage": "def" },
3307        { "class": "XmmReg", "usage": "use" },
3308        { "class": "XmmReg", "usage": "use" },
3309        { "class": "XmmReg/VecMem32", "usage": "use" }
3310      ]
3311    },
3312    {
3313      "encodings": {
3314        "Vinsertf128": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "18" ], "type": "vex_rm_to_reg" },
3315        "Vinserti128": { "feature": "AVX2", "opcodes": [ "C4", "03", "05", "38" ], "type": "vex_rm_to_reg" }
3316      },
3317      "args": [
3318        { "class": "VecReg256", "usage": "def" },
3319        { "class": "VecReg256", "usage": "use" },
3320        { "class": "VecReg128/VecMem128", "usage": "use" },
3321        { "class": "Imm8" }
3322      ]
3323    },
3324    {
3325      "encodings": {
3326        "Vmaskmovpd": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "2F" ], "type": "vex_reg_to_rm" },
3327        "Vmaskmovps": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "2E" ], "type": "vex_reg_to_rm" }
3328      },
3329      "args": [
3330        { "class": "VecMem128", "usage": "def" },
3331        { "class": "VecReg128", "usage": "use" },
3332        { "class": "VecReg128", "usage": "use" }
3333      ]
3334    },
3335    {
3336      "encodings": {
3337        "Vmaskmovpd": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "2F" ], "type": "vex_reg_to_rm" },
3338        "Vmaskmovps": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "2E" ], "type": "vex_reg_to_rm" }
3339      },
3340      "args": [
3341        { "class": "VecMem256", "usage": "def" },
3342        { "class": "VecReg256", "usage": "use" },
3343        { "class": "VecReg256", "usage": "use" }
3344      ]
3345    },
3346    {
3347      "encodings": {
3348        "Vmaskmovpd": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "2D" ] },
3349        "Vmaskmovps": { "feature": "AVX", "opcodes": [ "C4", "02", "01", "2C" ] }
3350      },
3351      "args": [
3352        { "class": "VecReg128", "usage": "def" },
3353        { "class": "VecReg128", "usage": "use" },
3354        { "class": "VecMem128", "usage": "use" }
3355      ]
3356    },
3357    {
3358      "encodings": {
3359        "Vmaskmovpd": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "2D" ] },
3360        "Vmaskmovps": { "feature": "AVX", "opcodes": [ "C4", "02", "05", "2C" ] }
3361      },
3362      "args": [
3363        { "class": "VecReg256", "usage": "def" },
3364        { "class": "VecReg256", "usage": "use" },
3365        { "class": "VecMem256", "usage": "use" }
3366      ]
3367    },
3368    {
3369      "encodings": {
3370        "Vmovapd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "29" ] },
3371        "Vmovaps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "29" ] },
3372        "Vmovdqa": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "7F" ] },
3373        "Vmovdqu": { "feature": "AVX", "opcodes": [ "C4", "01", "06", "7F" ] }
3374      },
3375      "args": [
3376        { "class": "VecMem256", "usage": "def" },
3377        { "class": "YmmReg", "usage": "use" }
3378      ]
3379    },
3380    {
3381      "encodings": {
3382        "Vmovapd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "28" ] },
3383        "Vmovaps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "28" ] },
3384        "Vmovdqa": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "6F" ] },
3385        "Vmovdqu": { "feature": "AVX", "opcodes": [ "C4", "01", "02", "6F" ] }
3386      },
3387      "args": [
3388        { "class": "XmmReg", "usage": "def" },
3389        { "class": "VecMem128", "usage": "use" }
3390      ]
3391    },
3392    {
3393      "encodings": {
3394        "Vmovapd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "28" ] },
3395        "Vmovaps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "28" ] },
3396        "Vmovdqa": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "6F" ] },
3397        "Vmovdqu": { "feature": "AVX", "opcodes": [ "C4", "01", "06", "6F" ] }
3398      },
3399      "args": [
3400        { "class": "YmmReg", "usage": "def" },
3401        { "class": "VecMem256", "usage": "use" }
3402      ]
3403    },
3404    {
3405      "encodings": {
3406        "Vmovhlps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "12" ], "type": "vex_rm_to_reg" },
3407        "Vmovlhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "16" ], "type": "vex_rm_to_reg" }
3408      },
3409      "args": [
3410        { "class": "XmmReg", "usage": "def" },
3411        { "class": "XmmReg", "usage": "use" },
3412        { "class": "XmmReg", "usage": "use" }
3413      ]
3414    },
3415    {
3416      "encodings": {
3417        "Vmovhpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "16" ] },
3418        "Vmovhps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "16" ] },
3419        "Vmovlpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "12" ] },
3420        "Vmovlps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "12" ] }
3421      },
3422      "args": [
3423        { "class": "XmmReg", "usage": "def" },
3424        { "class": "XmmReg", "usage": "use" },
3425        { "class": "VecMem64", "usage": "use" }
3426      ]
3427    },
3428    {
3429      "encodings": {
3430        "Vmovmskpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "50" ] },
3431        "Vmovmskps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "50" ] }
3432      },
3433      "args": [
3434        { "class": "GeneralReg32", "usage": "def" },
3435        { "class": "YmmReg", "usage": "use" }
3436      ]
3437    },
3438    {
3439      "encodings": {
3440        "Vpclmulqdq": { "feature": "CLMULAVX", "opcodes": [ "C4", "03", "01", "44" ], "type": "vex_rm_to_reg" },
3441        "Vshufpd": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C6" ], "type": "vex_rm_to_reg" },
3442        "Vshufps": { "feature": "AVX", "opcodes": [ "C4", "01", "00", "C6" ], "type": "vex_rm_to_reg" }
3443      },
3444      "args": [
3445        { "class": "VecReg128", "usage": "def" },
3446        { "class": "VecReg128", "usage": "use" },
3447        { "class": "VecReg128/VecMem128", "usage": "use" },
3448        { "class": "Imm8" }
3449      ]
3450    },
3451    {
3452      "encodings": {
3453        "Vpclmulqdq": { "feature": "VPCLMULQD", "opcodes": [ "C4", "03", "05", "44" ], "type": "vex_rm_to_reg" },
3454        "Vshufpd": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "C6" ], "type": "vex_rm_to_reg" },
3455        "Vshufps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "C6" ], "type": "vex_rm_to_reg" }
3456      },
3457      "args": [
3458        { "class": "VecReg256", "usage": "def" },
3459        { "class": "VecReg256", "usage": "use" },
3460        { "class": "VecReg256/VecMem256", "usage": "use" },
3461        { "class": "Imm8" }
3462      ]
3463    },
3464    {
3465      "encodings": {
3466        "Vpermil2pd": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "49" ], "type": "vex_imm_rm_to_reg" },
3467        "Vpermil2ps": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "48" ], "type": "vex_imm_rm_to_reg" }
3468      },
3469      "args": [
3470        { "class": "VecReg128", "usage": "def" },
3471        { "class": "VecReg128", "usage": "use" },
3472        { "class": "VecReg128", "usage": "use" },
3473        { "class": "VecMem128", "usage": "use" },
3474        { "class": "Imm2" }
3475      ]
3476    },
3477    {
3478      "encodings": {
3479        "Vpermil2pd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "49" ], "type": "vex_rm_imm_to_reg" },
3480        "Vpermil2ps": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "48" ], "type": "vex_rm_imm_to_reg" }
3481      },
3482      "args": [
3483        { "class": "VecReg128", "usage": "def" },
3484        { "class": "VecReg128", "usage": "use" },
3485        { "class": "VecReg128/VecMem128", "usage": "use" },
3486        { "class": "VecReg128", "usage": "use" },
3487        { "class": "Imm2" }
3488      ]
3489    },
3490    {
3491      "encodings": {
3492        "Vpermil2pd": { "feature": "AVX", "opcodes": [ "C4", "03", "85", "49" ], "type": "vex_imm_rm_to_reg" },
3493        "Vpermil2ps": { "feature": "AVX", "opcodes": [ "C4", "03", "85", "48" ], "type": "vex_imm_rm_to_reg" }
3494      },
3495      "args": [
3496        { "class": "VecReg256", "usage": "def" },
3497        { "class": "VecReg256", "usage": "use" },
3498        { "class": "VecReg256", "usage": "use" },
3499        { "class": "VecMem256", "usage": "use" },
3500        { "class": "Imm2" }
3501      ]
3502    },
3503    {
3504      "encodings": {
3505        "Vpermil2pd": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "49" ], "type": "vex_rm_imm_to_reg" },
3506        "Vpermil2ps": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "48" ], "type": "vex_rm_imm_to_reg" }
3507      },
3508      "args": [
3509        { "class": "VecReg256", "usage": "def" },
3510        { "class": "VecReg256", "usage": "use" },
3511        { "class": "VecReg256/VecMem256", "usage": "use" },
3512        { "class": "VecReg256", "usage": "use" },
3513        { "class": "Imm2" }
3514      ]
3515    },
3516    {
3517      "encodings": {
3518        "Vpinsrb": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "20" ], "type": "vex_rm_to_reg" },
3519        "Vpinsrd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "22" ], "type": "vex_rm_to_reg" },
3520        "Vpinsrw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C4" ], "type": "vex_rm_to_reg" }
3521      },
3522      "args": [
3523        { "class": "VecReg128", "usage": "use_def" },
3524        { "class": "VecReg128", "usage": "use" },
3525        { "class": "GeneralReg32", "usage": "use" },
3526        { "class": "Imm8" }
3527      ]
3528    },
3529    {
3530      "encodings": {
3531        "Vpinsrb": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "20" ], "type": "vex_rm_to_reg" }
3532      },
3533      "args": [
3534        { "class": "VecReg128", "usage": "use_def" },
3535        { "class": "VecReg128", "usage": "use" },
3536        { "class": "Mem8", "usage": "use" },
3537        { "class": "Imm8" }
3538      ]
3539    },
3540    {
3541      "encodings": {
3542        "Vpinsrd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "22" ], "type": "vex_rm_to_reg" }
3543      },
3544      "args": [
3545        { "class": "VecReg128", "usage": "use_def" },
3546        { "class": "VecReg128", "usage": "use" },
3547        { "class": "Mem32", "usage": "use" },
3548        { "class": "Imm8" }
3549      ]
3550    },
3551    {
3552      "encodings": {
3553        "Vpinsrw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "C4" ], "type": "vex_rm_to_reg" }
3554      },
3555      "args": [
3556        { "class": "VecReg128", "usage": "use_def" },
3557        { "class": "VecReg128", "usage": "use" },
3558        { "class": "Mem16", "usage": "use" },
3559        { "class": "Imm8" }
3560      ]
3561    },
3562    {
3563      "encodings": {
3564        "Vpmovmskb": { "feature": "AVX", "opcodes": [ "C4", "01", "05", "D7" ] }
3565      },
3566      "args": [
3567        { "class": "GeneralReg32", "usage": "def" },
3568        { "class": "VecReg256", "usage": "use" }
3569      ]
3570    },
3571    {
3572      "encodings": {
3573        "Vpshufd": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "70" ] },
3574        "Vpshufhw": { "feature": "AVX2", "opcodes": [ "C4", "01", "06", "70" ] },
3575        "Vpshuflw": { "feature": "AVX2", "opcodes": [ "C4", "01", "07", "70" ] },
3576        "Vroundpd": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "09" ] },
3577        "Vroundps": { "feature": "AVX", "opcodes": [ "C4", "03", "05", "08" ] }
3578      },
3579      "args": [
3580        { "class": "VecReg256", "usage": "def" },
3581        { "class": "VecReg256/VecMem256", "usage": "use" },
3582        { "class": "Imm8" }
3583      ]
3584    },
3585    {
3586      "encodings": {
3587        "Vpslld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "72", "6" ], "type": "rm_to_vex" },
3588        "Vpslldq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "7" ], "type": "rm_to_vex" },
3589        "Vpsllq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "6" ], "type": "rm_to_vex" },
3590        "Vpsllw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "71", "6" ], "type": "rm_to_vex" },
3591        "Vpsrad": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "72", "4" ], "type": "rm_to_vex" },
3592        "Vpsraw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "71", "4" ], "type": "rm_to_vex" },
3593        "Vpsrld": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "72", "2" ], "type": "rm_to_vex" },
3594        "Vpsrldq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "3" ], "type": "rm_to_vex" },
3595        "Vpsrlq": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "73", "2" ], "type": "rm_to_vex" },
3596        "Vpsrlw": { "feature": "AVX", "opcodes": [ "C4", "01", "01", "71", "2" ], "type": "rm_to_vex" }
3597      },
3598      "args": [
3599        { "class": "VecReg128", "usage": "def" },
3600        { "class": "VecReg128", "usage": "use" },
3601        { "class": "Imm8" }
3602      ]
3603    },
3604    {
3605      "encodings": {
3606        "Vpslld": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "72", "6" ], "type": "rm_to_vex" },
3607        "Vpslldq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "73", "7" ], "type": "rm_to_vex" },
3608        "Vpsllq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "73", "6" ], "type": "rm_to_vex" },
3609        "Vpsllw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "71", "6" ], "type": "rm_to_vex" },
3610        "Vpsrad": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "72", "4" ], "type": "rm_to_vex" },
3611        "Vpsraw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "71", "4" ], "type": "rm_to_vex" },
3612        "Vpsrld": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "72", "2" ], "type": "rm_to_vex" },
3613        "Vpsrldq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "73", "3" ], "type": "rm_to_vex" },
3614        "Vpsrlq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "73", "2" ], "type": "rm_to_vex" },
3615        "Vpsrlw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "71", "2" ], "type": "rm_to_vex" }
3616      },
3617      "args": [
3618        { "class": "VecReg256", "usage": "def" },
3619        { "class": "VecReg256", "usage": "use" },
3620        { "class": "Imm8" }
3621      ]
3622    },
3623    {
3624      "encodings": {
3625        "Vpslld": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F2" ], "type": "vex_rm_to_reg" },
3626        "Vpsllq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F3" ], "type": "vex_rm_to_reg" },
3627        "Vpsllw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "F1" ], "type": "vex_rm_to_reg" },
3628        "Vpsrad": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E2" ], "type": "vex_rm_to_reg" },
3629        "Vpsraw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "E1" ], "type": "vex_rm_to_reg" },
3630        "Vpsrld": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D2" ], "type": "vex_rm_to_reg" },
3631        "Vpsrlq": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D3" ], "type": "vex_rm_to_reg" },
3632        "Vpsrlw": { "feature": "AVX2", "opcodes": [ "C4", "01", "05", "D1" ], "type": "vex_rm_to_reg" }
3633      },
3634      "args": [
3635        { "class": "VecReg256", "usage": "def" },
3636        { "class": "VecReg256", "usage": "use" },
3637        { "class": "VecReg128/VecMem128", "usage": "use" }
3638      ]
3639    },
3640    {
3641      "encodings": {
3642        "Vroundsd": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "0B" ], "type": "vex_rm_to_reg" }
3643      },
3644      "args": [
3645        { "class": "FpReg64", "usage": "def" },
3646        { "class": "XmmReg", "usage": "use" },
3647        { "class": "FpReg64/VecMem64", "usage": "use" },
3648        { "class": "Imm8" }
3649      ]
3650    },
3651    {
3652      "encodings": {
3653        "Vroundss": { "feature": "AVX", "opcodes": [ "C4", "03", "01", "0A" ], "type": "vex_rm_to_reg" }
3654      },
3655      "args": [
3656        { "class": "FpReg32", "usage": "def" },
3657        { "class": "XmmReg", "usage": "use" },
3658        { "class": "FpReg32/VecMem32", "usage": "use" },
3659        { "class": "Imm8" }
3660      ]
3661    },
3662    {
3663      "encodings": {
3664        "Vrsqrtps": { "feature": "AVX", "opcodes": [ "C4", "01", "04", "52" ] }
3665      },
3666      "args": [
3667        { "class": "VecReg256", "usage": "use_def" },
3668        { "class": "VecReg256/VecMem256", "usage": "use" }
3669      ]
3670    },
3671    {
3672      "encodings": {
3673        "Xchgb": { "opcode": "86" }
3674      },
3675      "args": [
3676        { "class": "GeneralReg8", "usage": "use_def" },
3677        { "class": "Mem8", "usage": "use_def" }
3678      ]
3679    },
3680    {
3681      "stems": [ "Xchgl" ],
3682      "args": [
3683        { "class": "GeneralReg32", "usage": "use_def" },
3684        { "class": "GeneralReg32", "usage": "use_def" }
3685      ]
3686    },
3687    {
3688      "encodings": {
3689        "Xchgl": { "opcode": "87" }
3690      },
3691      "args": [
3692        { "class": "GeneralReg32", "usage": "use_def" },
3693        { "class": "Mem32", "usage": "use_def" }
3694      ]
3695    },
3696    {
3697      "encodings": {
3698        "Xchgw": { "opcodes": [ "66", "87" ] }
3699      },
3700      "args": [
3701        { "class": "GeneralReg16", "usage": "use_def" },
3702        { "class": "Mem16", "usage": "use_def" }
3703      ]
3704    }
3705  ]
3706}
3707