-
Notifications
You must be signed in to change notification settings - Fork 3
/
insns-x86.go
934 lines (928 loc) · 55.3 KB
/
insns-x86.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
package main
var (
Insn_x86_64 map[string]string
Cond_x86_64 map[string]string
CondInsn_x86_64 []string
Size_x86_64 map[string]string
SizeInsn_x86_64 map[string]string
)
func init() {
Insn_x86_64 = map[string]string{
"aaa": "ASCII Adjust After Addition",
"aad": "ASCII Adjust AX Before Division",
"aam": "ASCII Adjust AX After Multiply",
"aas": "ASCII Adjust AL After Subtraction",
"adc": "Add with Carry",
"adcx": "Unsigned Integer Addition of Two Operands with Carry Flag",
"add": "Add",
"addpd": "Add Packed Double-FP Values [SSE2]",
"addps": "Add Packed Single-FP Values [SSE]",
"addsd": "Add Scalar Double-FP Values [SSE2]",
"addss": "Add Scalar Single-FP Values [SSE]",
"addsubpd": "Packed Double-FP Add/Subtract [SSE3]",
"addsubps": "Packed Single-FP Add/Subtract [SSE3]",
"adox": "Unsigned Integer Addition of Two Operands with Overflow Flag",
"aesdec": "Perform One Round of an AES Decryption Flow [AES]",
"aesdeclast": "Perform Last Round of an AES Decryption Flow [AES]",
"aesenc": "Perform One Round of an AES Encryption Flow [AES]",
"aesenclast": "Perform Last Round of an AES Encryption Flow [AES]",
"aesimc": "Perform the AES InvMixColumn Transformation [AES]",
"aeskeygenassist": "AES Round Key Generation Assist [AES]",
"and": "Logical AND",
"andn": "Logical AND NOT",
"andnpd": "Bitwise Logical AND NOT of Packed Double-FP Values [SSE2]",
"andnps": "Bitwise Logical AND NOT of Packed Single-FP Values [SSE]",
"andpd": "Bitwise Logical AND of Packed Double-FP Values [SSE2]",
"andps": "Bitwise Logical AND of Packed Single-FP Values [SSE]",
"arpl": "Adjust RPL Field of Segment Selector",
"bextr": "Bit Field Extract",
"blendpd": "Blend Packed Double-FP Values [SSE4]",
"blendps": "Blend Packed Single-FP Values [SSE4]",
"blendvpd": "Variable Blend Packed Double-FP Values [SSE4]",
"blendvps": "Variable Blend Packed Single-FP Values [SSE4]",
"blsi": "Extract Lowest Set Isolated Bit",
"blsmsk": "Get Mask Up to Lowest Set Bit",
"blsr": "Reset Lowest Set Bit",
"bndcl": "Check Lower Bound [MPX]",
"bndcu": "Check Upper Bound [MPX]",
"bndcn": "Check Upper Bound [MPX]",
"bndldx": "Load Extended Bounds using Address Translation [MPX]",
"bndmk": "Make Bounds [MPX]",
"bndmov": "Move Bounds [MPX]",
"bndstx": "Store Extended Bounds using Address Translation [MPX]",
"bound": "Check Array Index Against Bounds",
"bsf": "Bit Scan Forward",
"bsr": "Bit Scan Reverse",
"bswap": "Byte Swap",
"bt": "Bit Test",
"btc": "Bit Test and Complement",
"btr": "Bit Test and Reset",
"bts": "Bit Test and Set",
"bzhi": "Zero High Bits Starting with Specified Bit Position",
"call": "Call Procedure",
"cbw": "Convert Byte to Word",
"cdq": "Convert Dword to Qword",
"cdqe": "Convert Dword to Qword",
"clac": "Clear AC Flag in EFLAGS Register",
"clc": "Clear Carry Flag",
"cld": "Clear Direction Flag",
"cldemote": "Cache Line Demote",
"clflush": "Flush Cache Line",
"clflushopt": "Flush Cache Line Optimized",
"cli": "Clear Interrupt Flag",
"clrssbsy": "Clear Shadow Stack Busy [CET]",
"cltq": "Convert Dword to Qword (= CDQE)",
"clts": "Clear Task-Switched Flag in CR0",
"clwb": "Cache Linux Write Back",
"cmc": "Complement Carry Flag",
"cmov": "Conditional Move",
"cmp": "Compare Two Operands",
"cmppd": "Compare Packed Double-FP Values [SSE2]",
"cmpps": "Compare Packed Single-FP Values [SSE]",
"cmps": "Compare String Operands",
"cmpsd": "Compare Scalar Double-FP Values [SSE2]",
"cmpss": "Compare Scalar Single-FP Values [SSE]",
"cmpxchg": "Compare and Exchange",
"cmpxchg16b": "Compare and Exchange Bytes",
"cmpxchg8b": "Compare and Exchange Bytes",
"comisd": "Compare Scalar Ordered Double-FP Values and Set EFLAGS [SSE2]",
"comiss": "Compare Scalar Ordered Single-FP Values and Set EFLAGS [SSE]",
"cpuid": "CPU Identification",
"cqo": "Convert Qword to Oword",
"cqto": "Convert Qword to Oword (= CQO)",
"crc32": "Accumulate CRC32 Value",
"cvtdq2pd": "Convert Packed Dword Integers to Packed Double-FP Values [SSE2]",
"cvtdq2ps": "Convert Packed Dword Integers to Packed Single-FP Values [SSE2]",
"cvtpd2dq": "Convert Packed Double-FP Values to Packed Dword Integers [SSE2]",
"cvtpd2pi": "Convert Packed Double-FP Values to Packed Dword Integers",
"cvtpd2ps": "Convert Packed Double-FP Values to Packed Single-FP Values [SSE2]",
"cvtpi2pd": "Convert Packed Dword Integers to Packed Double-FP Values",
"cvtpi2ps": "Convert Packed Dword Integers to Packed Single-FP Values",
"cvtps2dq": "Convert Packed Single-FP Values to Packed Dword Integers [SSE2]",
"cvtps2pd": "Convert Packed Single-FP Values to Packed Double-FP Values [SSE2]",
"cvtps2pi": "Convert Packed Single-FP Values to Packed Dword Integers",
"cvtsd2si": "Convert Scalar Double-FP Value to Integer [SSE2]",
"cvtsd2ss": "Convert Scalar Double-FP Value to Scalar Single-FP Value [SSE2]",
"cvtsi2sd": "Convert Dword Integer to Scalar Double-FP Value [SSE2]",
"cvtsi2ss": "Convert Dword Integer to Scalar Single-FP Value [SSE]",
"cvtss2sd": "Convert Scalar Single-FP Value to Scalar Double-FP Value [SSE2]",
"cvtss2si": "Convert Scalar Single-FP Value to Dword Integer [SSE]",
"cvttpd2dq": "Convert with Truncation Packed Double-FP Values to Packed Dword Integers",
"cvttpd2pi": "Convert with Truncation Packed Double-FP Values to Packed Dword Integers",
"cvttps2dq": "Convert with Truncation Packed Single-FP Values to Packed Dword Integers",
"cvttps2pi": "Convert with Truncation Packed Single-FP Values to Packed Dword Integers",
"cvttsd2si": "Convert with Truncation Scalar Double-FP Value to Signed Integer [SSE2]",
"cvttss2si": "Convert with Truncation Scalar Single-FP Value to Dword Integer [SSE]",
"cwd": "Convert Word to Dword",
"cwde": "Convert Word to Dword",
"cwtl": "Convert Word to Dword (= CWDE)",
"daa": "Decimal Adjust AL after Addition",
"das": "Decimal Adjust AL after Subtraction",
"dec": "Decrement by 1",
"div": "Unsigned Divide",
"divpd": "Divide Packed Double-FP Values [SSE2]",
"divps": "Divide Packed Single-FP Values [SSE]",
"divsd": "Divide Scalar Double-FP Values [SSE2]",
"divss": "Divide Scalar Single-FP Values [SSE]",
"dppd": "Dot Product of Packed Double-FP Values [SSE4]",
"dpps": "Dot Product of Packed Single-FP Values [SSE4]",
"emms": "Empty MMX Technology State",
"encls": "Perform an SGX Supervisor function [SGX]",
"enclu": "Perform an SGX User function [SGX]",
"enclv": "Perform an SGX Virtualization function [SGX]",
"endbr32": "End of Branch (indirect branch target) [CET]",
"endbr64": "End of Branch (indirect branch target) [CET]",
"enter": "Make Stack Frame for Procedure Parameters",
"extractps": "Extract Packed Single-FP Value [SSE4]",
"f2xm1": "Compute 2x–1",
"fabs": "Absolute Value",
"fadd": "Add",
"faddp": "Add and Pop",
"fbld": "Load Binary Coded Decimal",
"fbstp": "Store BCD Integer and Pop",
"fchs": "Change Sign",
"fclex": "Clear Exceptions",
"fcmov": "Floating-Point Conditional Move",
"fcom": "Compare Floating Point Values",
"fcomi": "Compare Floating Point Values and Set EFLAGS",
"fcomip": "Compare Floating Point Values and Set EFLAGS and Pop",
"fcomp": "Compare Floating Point Values and Pop",
"fcompp": "Compare Floating Point Values and Pop twice",
"fcos": "Cosine",
"fdecstp": "Decrement Stack-Top Pointer",
"fdiv": "Divide",
"fdivp": "Divide and Pop",
"fdivr": "Reverse Divide",
"fdivrp": "Reverse Divide and Pop",
"ffree": "Free Floating-Point Register",
"fiadd": "Add",
"ficom": "Compare Integer",
"ficomp": "Compare Integer and Pop",
"fidiv": "Divide",
"fidivr": "Reverse Divide",
"fild": "Load Integer",
"fimul": "Multiply",
"fincstp": "Increment Stack-Top Pointer",
"finit": "Initialize Floating-Point Unit",
"fist": "Store Integer",
"fistp": "Store Integer and Pop",
"fisttp": "Store Integer with Truncation",
"fisub": "Subtract",
"fisubr": "Reverse Subtract",
"fld": "Load Floating Point Value",
"fld1": "Load Constant (+1.0)",
"fldcw": "Load x87 FPU Control Word",
"fldenv": "Load x87 FPU Environment",
"fldl2e": "Load Constant (log_2(e))",
"fldl2t": "Load Constant (log_2(10))",
"fldlg2": "Load Constant (log_10(2))",
"fldln2": "Load Constant (log_e(2))",
"fldpi": "Load Constant (PI)",
"fldz": "Load Constant (+0.0)",
"fmul": "Multiply",
"fmulp": "Multiply and Pop",
"fnclex": "Clear Exceptions",
"fninit": "Initialize Floating-Point Unit",
"fnop": "No Operation",
"fnsave": "Store x87 FPU State",
"fnstcw": "Store x87 FPU Control Word",
"fnstenv": "Store x87 FPU Environment",
"fnstsw": "Store x87 FPU Status Word",
"fpatan": "Partial Arctangent",
"fprem": "Partial Remainder",
"fprem1": "Partial Remainder (IEEE)",
"fptan": "Partial Tangent",
"frndint": "Round to Integer",
"frstor": "Restore x87 FPU State",
"fsave": "Store x87 FPU State",
"fscale": "Scale",
"fsin": "Sine",
"fsincos": "Sine and Cosine",
"fsqrt": "Square Root",
"fst": "Store Floating Point Value",
"fstcw": "Store x87 FPU Control Word",
"fstenv": "Store x87 FPU Environment",
"fstp": "Store Floating Point Value",
"fstsw": "Store x87 FPU Status Word",
"fsub": "Subtract",
"fsubp": "Subtract and Pop",
"fsubr": "Reverse Subtract",
"fsubrp": "Reverse Subtract and Pop",
"ftst": "Test",
"fucom": "Unordered Compare Floating Point Values",
"fucomi": "Unordered Compare Floating Point Values and Set EFLAGS",
"fucomip": "Unordered Compare Floating Point Values and Set EFLAGS and Pop",
"fucomp": "Unordered Compare Floating Point Values and Pop",
"fucompp": "Unordered Compare Floating Point Values and Pop twice",
"fwait": "Wait for FP exceptions",
"fxam": "Examine ModR/M",
"fxch": "Exchange Register Contents",
"fxrstor": "Restore x87 FPU, MMX, XMM, and MXCSR State",
"fxsave": "Save x87 FPU, MMX Technology, and SSE State",
"fxtract": "Extract Exponent and Significand",
"fyl2x": "Compute y ∗ log2x",
"fyl2xp1": "Compute y ∗ log2(x + 1)",
"getsec": "Perform an Safer Mode Extention function [SMX]",
"gf2p8affineinvqb": "Galois Field Affine Transformation Inverse [GFNI]",
"gf2p8affineqb": "Galois Field Affine Transformation [GFNI]",
"gf2p8mulb": "Galois Field Multiply Bytes [GFNI]",
"haddpd": "Packed Double-FP Horizontal Add [SSE3]",
"haddps": "Packed Single-FP Horizontal Add [SSE3]",
"hlt": "Halt",
"hsubpd": "Packed Double-FP Horizontal Subtract [SSE3]",
"hsubps": "Packed Single-FP Horizontal Subtract [SSE3]",
"idiv": "Signed Divide",
"imul": "Signed Multiply",
"in": "Input from Port",
"inc": "Increment by 1",
"incssp": "Increment Shadow Stack Pointer [CET]",
"ins": "Input from Port to String",
"insb": "Input Byte from Port to String",
"insd": "Input Dword from Port to String",
"insertps": "Insert Packed Single-FP Value",
"insw": "Input Word from Port to String",
"int": "Call to Interrupt Procedure",
"into": "Overflow Exception (INT 4)",
"int1": "Debug Exception (INT 1)",
"int3": "Breakpoint Exception (INT 3)",
"invd": "Invalidate Internal Caches",
"invlpg": "Invalidate TLB Entries",
"invpcid": "Invalidate Process-Context Identifier",
"iret": "Interrupt Return",
"iretd": "Interrupt Return",
"j": "Conditional Jump",
"jmp": "Jump",
"lahf": "Load Status Flags into AH Register",
"lar": "Load Access Rights Byte",
"lddqu": "Load Unaligned Integer 128 Bits",
"ldmxcsr": "Load MXCSR Register",
"lds": "Load Far Pointer (with DS)",
"lea": "Load Effective Address",
"leave": "High Level Procedure Exit",
"les": "Load Far Pointer (with ES)",
"lfence": "Load Fence",
"lfs": "Load Far Pointer (with FS)",
"lgdt": "Load Global Descriptor Table Register",
"lgs": "Load Far Pointer (with GS)",
"lidt": "Load Interrupt Descriptor Table Register",
"lldt": "Load Local Descriptor Table Register",
"lmsw": "Load Machine Status Word",
"lock": "Assert LOCK# Signal Prefix",
"lods": "Load String",
"loop": "Loop According to ECX Counter",
"lsl": "Load Segment Limit",
"lss": "Load Far Pointer (with SS)",
"ltr": "Load Task Register",
"lzcnt": "Count the Number of Leading Zero Bits",
"maskmovdqu": "Store Selected Bytes of Double Quadword [SSE2]",
"maskmovq": "Store Selected Bytes of Quadword",
"maxpd": "Return Maximum Packed Double-FP Values [SSE2]",
"maxps": "Return Maximum Packed Single-FP Values [SSE]",
"maxsd": "Return Maximum Scalar Double-FP Value [SSE2]",
"maxss": "Return Maximum Scalar Single-FP Value [SSE]",
"mfence": "Memory Fence",
"minpd": "Return Minimum Packed Double-FP Values [SSE2]",
"minps": "Return Minimum Packed Single-FP Values [SSE]",
"minsd": "Return Minimum Scalar Double-FP Value [SSE2]",
"minss": "Return Minimum Scalar Single-FP Value [SSE]",
"monitor": "Set Up Monitor Address",
"mov": "Move",
"movabs": "Move 64-bit Absolute Value",
"movapd": "Move Aligned Packed Double-FP Values [SSE2]",
"movaps": "Move Aligned Packed Single-FP Values [SSE]",
"movbe": "Move Data After Swapping Bytes",
"movddup": "Move One Double-FP and Duplicate",
"movdiri": "Move Dword as Direct Store",
"movdir64b": "Move 64 Bytes as Direct Store",
"movdq2q": "Move Qword from XMM to MMX Technology Register",
"movdqa": "Move Aligned Double Qword [SSE2]",
"movdqu": "Move Unaligned Double Qword [SSE2]",
"movhlps": "Move Packed Single-FP Values High to Low",
"movhpd": "Move High Packed Double-FP Value",
"movhps": "Move High Packed Single-FP Values",
"movlhps": "Move Packed Single-FP Values Low to High",
"movlpd": "Move Low Packed Double-FP Value",
"movlps": "Move Low Packed Single-FP Values",
"movmskpd": "Extract Packed Double-FP Sign Mask",
"movmskps": "Extract Packed Single-FP Sign Mask",
"movntdq": "Store Double Qword Using Non-Temporal Hint",
"movntdqa": "Load Double Qword Non-Temporal Aligned Hint",
"movnti": "Store Dword Using Non-Temporal Hint",
"movntpd": "Store Packed Double-FP Values Using Non-Temporal Hint",
"movntps": "Store Packed Single-FP Values Using Non-Temporal Hint",
"movntq": "Store of Qword Using Non-Temporal Hint",
"movq2dq": "Move Qword from MMX Technology to XMM Register",
"movs": "Move Data from String to String",
"movshdup": "Move Packed Single-FP High and Duplicate [SSE3]",
"movsldup": "Move Packed Single-FP Low and Duplicate [SSE3]",
"movss": "Move Scalar Single-FP Values [SSE]",
"movsx": "Move with Sign-Extension",
"movsxd": "Move with Sign-Extension",
"movsbw": "Move with Sign-Extension: Byte to Word",
"movsbl": "Move with Sign-Extension: Byte to Dword",
"movsbq": "Move with Sign-Extension: Byte to Qword",
"movswl": "Move with Sign-Extension: Word to Dword",
"movswq": "Move with Sign-Extension: Word to Qword",
"movslq": "Move with Sign-Extension: Dword to Qword",
"movupd": "Move Unaligned Packed Double-FP Values [SSE2]",
"movups": "Move Unaligned Packed Single-FP Values [SSE]",
"movzx": "Move with Zero-Extension",
"movzbw": "Move with Zero-Extension: Byte to Word",
"movzbl": "Move with Zero-Extension: Byte to Dword",
"movzbq": "Move with Zero-Extension: Byte to Qword",
"movzwl": "Move with Zero-Extension: Word to Dword",
"movzwq": "Move with Zero-Extension: Word to Qword",
"movzlq": "Move with Zero-Extension: Dword to Qword",
"mpsadbw": "Compute Multiple Packed Sums of Absolute Difference [SSE4]",
"mul": "Unsigned Multiply",
"mulpd": "Multiply Packed Double-FP Values [SSE2]",
"mulps": "Multiply Packed Single-FP Values [SSE]",
"mulsd": "Multiply Scalar Double-FP Values [SSE2]",
"mulss": "Multiply Scalar Single-FP Values [SSE]",
"mwait": "Monitor Wait",
"mulx": "Unsigned Multiply Without Affecting Flags",
"neg": "Two's Complement Negation",
"nop": "No Operation",
"not": "One's Complement Negation",
"or": "Logical Inclusive OR",
"orpd": "Bitwise Logical OR of Packed Double-FP Values",
"orps": "Bitwise Logical OR of Packed Single-FP Values",
"out": "Output to Port",
"outs": "Output String to Port",
"packssdw": "Pack with Signed Saturation [MMX]",
"packsswb": "Pack with Signed Saturation [MMX]",
"packusdw": "Pack with Unsigned Saturation [SSE4]",
"packuswb": "Pack with Unsigned Saturation [MMX]",
"palignr": "Packed Align Right [SSE3]",
"pand": "Logical AND [MMX]",
"pandn": "Logical AND NOT [MMX]",
"pause": "Spin Loop Hint",
"pblendvb": "Variable Blend Packed Bytes [SSE4]",
"pblendw": "Blend Packed Words [SSE4]",
"pclmulqdq": "Carry-Less Multiplication Qword [CLMUL]",
"pcmpestri": "Packed Compare Explicit Length Strings, Return Index [SSE4]",
"pcmpestrm": "Packed Compare Explicit Length Strings, Return Mask [SSE4]",
"pcmpistri": "Packed Compare Implicit Length Strings, Return Index",
"pcmpistrm": "Packed Compare Implicit Length Strings, Return Mask",
"pdep": "Parallel Bits Deposit [BMI2]",
"pext": "Parallel Bits Extract [BMI2]",
"phaddsw": "Packed Horizontal Add and Saturate [SSE3]",
"phminposuw": "Packed Horizontal Word Minimum [SSE4]",
"phsubsw": "Packed Horizontal Subtract and Saturate [SSE3]",
"pmaddubsw": "Multiply and Add Packed Signed and Unsigned Bytes [SSE3]",
"pmaddwd": "Multiply and Add Packed Integers [MMX]",
"pmovmskb": "Move Byte Mask [SSE]",
"pmovsx": "Packed Move with Sign Extend [SSE4]",
"pmovsxbw": "Packed Move with Sign Extend: Byte to Word [SSE4]",
"pmovsxbd": "Packed Move with Sign Extend: Byte to Dword [SSE4]",
"pmovsxbq": "Packed Move with Sign Extend: Byte to Qword [SSE4]",
"pmovsxwd": "Packed Move with Sign Extend: Word to Dword [SSE4]",
"pmovsxwq": "Packed Move with Sign Extend: Word to Qword [SSE4]",
"pmovsxdq": "Packed Move with Sign Extend: Dword to Qword [SSE4]",
"pmovzx": "Packed Move with Zero Extend [SSE4]",
"pmovzxbw": "Packed Move with Zero Extend: Byte to Word [SSE4]",
"pmovzxbd": "Packed Move with Zero Extend: Byte to Dword [SSE4]",
"pmovzxbq": "Packed Move with Zero Extend: Byte to Qword [SSE4]",
"pmovzxwd": "Packed Move with Zero Extend: Word to Dword [SSE4]",
"pmovzxwq": "Packed Move with Zero Extend: Word to Qword [SSE4]",
"pmovzxdq": "Packed Move with Zero Extend: Dword to Qword [SSE4]",
"pmuldq": "Multiply Packed Signed Dword Integers [SSE4]",
"pmulhrsw": "Packed Multiply High with Round and Scale [SSE3]",
"pmulhuw": "Multiply Packed Unsigned Integers and Store High Result [SSE]",
"pmulhw": "Multiply Packed Signed Integers and Store High Result [MMX]",
"pmulld": "Multiply Packed Signed Dword Integers and Store Low Result [SSE4]",
"pmullw": "Multiply Packed Signed Integers and Store Low Result [MMX]",
"pmuludq": "Multiply Packed Unsigned Dword Integers [SSE2]",
"pop": "Pop a Value from the Stack",
"popa": "Pop All General-Purpose Registers",
"popad": "Pop All General-Purpose Registers",
"popcnt": "Return the Count of Number of Bits Set to 1",
"popf": "Pop Stack into lower 16-bits of EFLAGS Register",
"popfd": "Pop Stack into EFLAGS Register",
"popfq": "Pop Stack and zero-extend into RFLAGS Register",
"por": "Bitwise Logical OR",
"prefetchw": "Prefetch Data into Caches in Anticipation of a Write",
"prefetchwt0": "Prefetch Vector Data Into Caches with Intent to Write and T0 Hint",
"prefetchwt1": "Prefetch Vector Data Into Caches with Intent to Write and T1 Hint",
"prefetchwt2": "Prefetch Vector Data Into Caches with Intent to Write and T2 Hint",
"prefetchwnta": "Prefetch Vector Data Into Caches with Intent to Write and NTA Hint",
"prefetch": "Prefetch Data Into Caches",
"psadbw": "Compute Sum of Absolute Differences",
"pshufhw": "Shuffle Packed High Words [SSE2]",
"pshuflw": "Shuffle Packed Low Words [SSE2]",
"pslldq": "Shift Double Qword Left Logical [SSE2]",
"psrldq": "Shift Double Qword Right Logical [SSE2]",
"ptest": "Logical Compare [SSE4]",
"ptwrite": "Write Data to a Processor Trace Packet",
"punpckhbw": "Unpack High Data [MMX]",
"punpckhdq": "Unpack High Data [MMX]",
"punpckhqdq": "Unpack High Data [SSE2]",
"punpckhwd": "Unpack High Data [MMX]",
"punpcklbw": "Unpack Low Data [MMX]",
"punpckldq": "Unpack Low Data [MMX]",
"punpcklqdq": "Unpack Low Data [SSE2]",
"punpcklwd": "Unpack Low Data [MMX]",
"push": "Push Data Onto the Stack",
"pusha": "Push All General-Purpose Registers",
"pushad": "Push All General-Purpose Registers",
"pushf": "Push lower 16-bits of EFLAGS Register onto the Stack",
"pushfd": "Push EFLAGS Register onto the Stack",
"pushfq": "Push RFLAGS Register onto the Stack",
"pxor": "Logical Exclusive OR [MMX]",
"rcl": "Rotate through Carry Left",
"rcpps": "Compute Reciprocals of Packed Single-FP Values [SSE]",
"rcpss": "Compute Reciprocal of Scalar Single-FP Value [SSE]",
"rcr": "Rotate through Carry Right",
"rdfsbase": "Read FS Segment Base [FSGSBASE]",
"rdgsbase": "Read GS Segment Base [FSGSBASE]",
"rdmsr": "Read from Model Specific Register",
"rdpid": "Read Process Core ID",
"rdpmc": "Read Performance-Monitoring Counters",
"rdpkru": "Read Protection Key Register for Userspace [PKU]",
"rdrand": "Read Random Number [RDRAND]",
"rdseed": "Read Random SEED",
"rdssp": "Read Shadow Stack Pointer [CET]",
"rdtsc": "Read Time-Stamp Counter",
"rdtscp": "Read Time-Stamp Counter and Processor ID",
"rep": "Repeat String Operation",
"repe": "Repeat String Operation while Equal",
"repne": "Repeat String Operation while Not Equal",
"repnz": "Repeat String Operation while Not Zero",
"repz": "Repeat String Operation while Zero",
"ret": "Return from Procedure",
"rol": "Rotate Left",
"ror": "Rotate Right",
"rorx": "Rotate Right Logical Without Affecting Flags",
"roundpd": "Round Packed Double-FP Values [SSE4]",
"roundps": "Round Packed Single-FP Values [SSE4]",
"roundsd": "Round Scalar Double-FP Values [SSE4]",
"roundss": "Round Scalar Single-FP Values [SSE4]",
"rsm": "Resume from System Management Mode",
"rsqrtps": "Compute Reciprocals of Square Roots of Packed Single-FP Values [SSE]",
"rsqrtss": "Compute Reciprocal of Square Root of Scalar Single-FP Value [SSE]",
"rstorssp": "Restore Shadow Stack Pointer [CET]",
"sahf": "Store AH into Flags",
"sal": "Shift Arithmetic Left",
"sar": "Shift Arithmetic Right",
"sarx": "Shift Without Affecting Flags",
"savessp": "Save Shadow Stack Pointer [CET]",
"saveprevssp": "Save Previous Shadow Stack Pointer [CET]",
"sbb": "Integer Subtraction with Borrow",
"scas": "Scan String",
"set": "Set Byte on Condition",
"setssbsy": "Set Shadow Stack Busy [CET]",
"sfence": "Store Fence",
"sgdt": "Store Global Descriptor Table Register",
"shl": "Shift Logical Left",
"shld": "Double Precision Shift Left",
"shlx": "Shift Without Affecting Flags",
"shr": "Shift Logical Right",
"shrd": "Double Precision Shift Right",
"shrx": "Shift Without Affecting Flags",
"shufpd": "Shuffle Packed Double-FP Values [SSE2]",
"shufps": "Shuffle Packed Single-FP Values [SSE]",
"sidt": "Store Interrupt Descriptor Table Register",
"sldt": "Store Local Descriptor Table Register",
"smsw": "Store Machine Status Word",
"sqrtpd": "Compute Square Roots of Packed Double-FP Values [SSE2]",
"sqrtps": "Compute Square Roots of Packed Single-FP Values [SSE]",
"sqrtsd": "Compute Square Root of Scalar Double-FP Value [SSE2]",
"sqrtss": "Compute Square Root of Scalar Single-FP Value [SSE]",
"stac": "Set AC Flag in EFLAGS Register",
"stc": "Set Carry Flag",
"std": "Set Direction Flag",
"sti": "Set Interrupt Flag",
"stmxcsr": "Store MXCSR Register State [SSE]",
"stos": "Store String",
"str": "Store Task Register",
"sub": "Subtract",
"subpd": "Subtract Packed Double-FP Values [SSE2]",
"subps": "Subtract Packed Single-FP Values [SSE]",
"subsd": "Subtract Scalar Double-FP Values [SSE2]",
"subss": "Subtract Scalar Single-FP Values [SSE]",
"swapgs": "Swap GS Base Register",
"syscall": "Fast System Call",
"sysenter": "Fast Enter to System Call",
"sysexit": "Fast Return from System Call",
"sysret": "Return From Fast System Call",
"test": "Logical Compare",
"tzcnt": "Count the Number of Trailing Zero Bits",
"ucomisd": "Unordered Compare Scalar Double-FP Values and Set EFLAGS [SSE2]",
"ucomiss": "Unordered Compare Scalar Single-FP Values and Set EFLAGS [SSE]",
"ud2": "Undefined Instruction",
"unpckhpd": "Unpack and Interleave High Packed Double-FP Values [SSE2]",
"unpckhps": "Unpack and Interleave High Packed Single-FP Values [SSE]",
"unpcklpd": "Unpack and Interleave Low Packed Double-FP Values [SSE2]",
"unpcklps": "Unpack and Interleave Low Packed Single-FP Values [SSE]",
"vaddpd": "Add Packed Double-FP Values [AVX]",
"vaddps": "Add Packed Single-FP Values [AVX]",
"vaddsd": "Add Scalar Double-FP Values [AVX]",
"vaddss": "Add Scalar Single-FP Values [AVX]",
"vaddsubpd": "Packed Double-FP Add/Subtract [AVX]",
"vaddsubps": "Packed Single-FP Add/Subtract [AVX]",
"vaesdec": "Perform One Round of an AES Decryption Flow [AVX]",
"vaesdeclast": "Perform Last Round of an AES Decryption Flow [AVX]",
"vaesenc": "Perform One Round of an AES Encryption Flow [AVX]",
"vaesenclast": "Perform Last Round of an AES Encryption Flow [AVX]",
"vaesimc": "Perform the AES InvMixColumn Transformation [AVX]",
"vaeskeygenassist": "AES Round Key Generation Assist [AVX]",
"vandnpd": "Bitwise Logical AND NOT of Packed Double-FP Values [AVX]",
"vandnps": "Bitwise Logical AND NOT of Packed Single-FP Values [AVX]",
"vandpd": "Bitwise Logical AND of Packed Double-FP Values [AVX]",
"vandps": "Bitwise Logical AND of Packed Single-FP Values [AVX]",
"vblendpd": "Blend Packed Double-FP Values [AVX]",
"vblendps": "Blend Packed Single-FP Values [AVX]",
"vblendvpd": "Variable Blend Packed Double-FP Values [AVX]",
"vblendvps": "Variable Blend Packed Single-FP Values [AVX]",
"vbroadcast": "Broadcast Floating-Point Data [AVX]",
"vcmppd": "Compare Packed Double-FP Values [AVX]",
"vcmpps": "Compare Packed Single-FP Values [AVX]",
"vcmpsd": "Compare Scalar Double-FP Values [AVX]",
"vcmpss": "Compare Scalar Single-FP Values [AVX]",
"vcomisd": "Compare Scalar Ordered Double-FP Values and Set EFLAGS [AVX]",
"vcomiss": "Compare Scalar Ordered Single-FP Values and Set EFLAGS [AVX]",
"vcvtdq2pd": "Convert Packed Dword Integers to Packed Double-FP Values [AVX]",
"vcvtdq2ps": "Convert Packed Dword Integers to Packed Single-FP Values [AVX]",
"vcvtpd2dq": "Convert Packed Double-FP Values to Packed Dword Integers [AVX]",
"vcvtpd2ps": "Convert Packed Double-FP Values to Packed Single-FP Values [AVX]",
"vcvtps2dq": "Convert Packed Single-FP Values to Packed Dword Integers [AVX]",
"vcvtps2pd": "Convert Packed Single-FP Values to Packed Double-FP Values [AVX]",
"vcvtsd2si": "Convert Scalar Double-FP Value to Integer [AVX]",
"vcvtsd2ss": "Convert Scalar Double-FP Value to Scalar Single-FP Value [AVX]",
"vcvtsi2sd": "Convert Dword Integer to Scalar Double-FP Value [AVX]",
"vcvtsi2ss": "Convert Dword Integer to Scalar Single-FP Value [AVX]",
"vcvtss2sd": "Convert Scalar Single-FP Value to Scalar Double-FP Value [AVX]",
"vcvtss2si": "Convert Scalar Single-FP Value to Dword Integer [AVX]",
"vcvttpd2dq": "Convert with Truncation Packed Double-FP Value to Packed Dword Integers [AVX]",
"vcvttpd2pi": "Convert with Truncation Packed Double-FP Value to Packed Dword Integers [AVX]",
"vcvttps2dq": "Convert with Truncation Packed Single-FP Value to Packed Dword Integers [AVX]",
"vcvttsd2si": "Convert with Truncation Scalar Double-FP Value to Signed Integer [AVX]",
"vcvttss2si": "Convert with Truncation Scalar Single-FP Value to Signed Integer [AVX]",
"vdivpd": "Divide Packed Double-FP Values [AVX]",
"vdivps": "Divide Packed Single-FP Values [AVX]",
"vdivsd": "Divide Scalar Double-FP Values [AVX]",
"vdivss": "Divide Scalar Single-FP Values [AVX]",
"vdppd": "Dot Product of Packed Double-FP Values [AVX]",
"vdpps": "Dot Product of Packed Single-FP Values [AVX]",
"verr": "Verify a Segment for Reading",
"verw": "Verify a Segment for Writing",
"vextractf128": "Extract Packed Floating-Point Values",
"vextracti128": "Extract packed Integer Values",
"vextractps": "Extract Packed Single-FP Value [AVX]",
"vfmadd132pd": "Fused Multiply-Add of Packed Double-FP Values",
"vfmadd132ps": "Fused Multiply-Add of Packed Single-FP Values",
"vfmadd132sd": "Fused Multiply-Add of Scalar Double-FP Values",
"vfmadd132ss": "Fused Multiply-Add of Scalar Single-FP Values",
"vfmadd213pd": "Fused Multiply-Add of Packed Double-FP Values",
"vfmadd213ps": "Fused Multiply-Add of Packed Single-FP Values",
"vfmadd213sd": "Fused Multiply-Add of Scalar Double-FP Values",
"vfmadd213ss": "Fused Multiply-Add of Scalar Single-FP Values",
"vfmadd231pd": "Fused Multiply-Add of Packed Double-FP Values",
"vfmadd231ps": "Fused Multiply-Add of Packed Single-FP Values",
"vfmadd231sd": "Fused Multiply-Add of Scalar Double-FP Values",
"vfmadd231ss": "Fused Multiply-Add of Scalar Single-FP Values",
"vfmaddsub132pd": "Fused Multiply-Alternating Add/Subtract of Packed Double-FP Values",
"vfmaddsub132ps": "Fused Multiply-Alternating Add/Subtract of Packed Single-FP Values",
"vfmaddsub213pd": "Fused Multiply-Alternating Add/Subtract of Packed Double-FP Values",
"vfmaddsub213ps": "Fused Multiply-Alternating Add/Subtract of Packed Single-FP Values",
"vfmaddsub231pd": "Fused Multiply-Alternating Add/Subtract of Packed Double-FP Values",
"vfmaddsub231ps": "Fused Multiply-Alternating Add/Subtract of Packed Single-FP Values",
"vfmsub132pd": "Fused Multiply-Subtract of Packed Double-FP Values",
"vfmsub132ps": "Fused Multiply-Subtract of Packed Single-FP Values",
"vfmsub132sd": "Fused Multiply-Subtract of Scalar Double-FP Values",
"vfmsub132ss": "Fused Multiply-Subtract of Scalar Single-FP Values",
"vfmsub213pd": "Fused Multiply-Subtract of Packed Double-FP Values",
"vfmsub213ps": "Fused Multiply-Subtract of Packed Single-FP Values",
"vfmsub213sd": "Fused Multiply-Subtract of Scalar Double-FP Values",
"vfmsub213ss": "Fused Multiply-Subtract of Scalar Single-FP Values",
"vfmsub231pd": "Fused Multiply-Subtract of Packed Double-FP Values",
"vfmsub231ps": "Fused Multiply-Subtract of Packed Single-FP Values",
"vfmsub231sd": "Fused Multiply-Subtract of Scalar Double-FP Values",
"vfmsub231ss": "Fused Multiply-Subtract of Scalar Single-FP Values",
"vfmsubadd132pd": "Fused Multiply-Alternating Subtract/Add of Packed Double-FP Values",
"vfmsubadd132ps": "Fused Multiply-Alternating Subtract/Add of Packed Single-FP Values",
"vfmsubadd213pd": "Fused Multiply-Alternating Subtract/Add of Packed Double-FP Values",
"vfmsubadd213ps": "Fused Multiply-Alternating Subtract/Add of Packed Single-FP Values",
"vfmsubadd231pd": "Fused Multiply-Alternating Subtract/Add of Packed Double-FP Values",
"vfmsubadd231ps": "Fused Multiply-Alternating Subtract/Add of Packed Single-FP Values",
"vfnmadd132pd": "Fused Negative Multiply-Add of Packed Double-FP Values",
"vfnmadd132ps": "Fused Negative Multiply-Add of Packed Single-FP Values",
"vfnmadd132sd": "Fused Negative Multiply-Add of Scalar Double-FP Values",
"vfnmadd132ss": "Fused Negative Multiply-Add of Scalar Single-FP Values",
"vfnmadd213pd": "Fused Negative Multiply-Add of Packed Double-FP Values",
"vfnmadd213ps": "Fused Negative Multiply-Add of Packed Single-FP Values",
"vfnmadd213sd": "Fused Negative Multiply-Add of Scalar Double-FP Values",
"vfnmadd213ss": "Fused Negative Multiply-Add of Scalar Single-FP Values",
"vfnmadd231pd": "Fused Negative Multiply-Add of Packed Double-FP Values",
"vfnmadd231ps": "Fused Negative Multiply-Add of Packed Single-FP Values",
"vfnmadd231sd": "Fused Negative Multiply-Add of Scalar Double-FP Values",
"vfnmadd231ss": "Fused Negative Multiply-Add of Scalar Single-FP Values",
"vfnmsub132pd": "Fused Negative Multiply-Subtract of Packed Double-FP Values",
"vfnmsub132ps": "Fused Negative Multiply-Subtract of Packed Single-FP Values",
"vfnmsub132sd": "Fused Negative Multiply-Subtract of Scalar Double-FP Values",
"vfnmsub132ss": "Fused Negative Multiply-Subtract of Scalar Single-FP Values",
"vfnmsub213pd": "Fused Negative Multiply-Subtract of Packed Double-FP Values",
"vfnmsub213ps": "Fused Negative Multiply-Subtract of Packed Single-FP Values",
"vfnmsub213sd": "Fused Negative Multiply-Subtract of Scalar Double-FP Values",
"vfnmsub213ss": "Fused Negative Multiply-Subtract of Scalar Single-FP Values",
"vfnmsub231pd": "Fused Negative Multiply-Subtract of Packed Double-FP Values",
"vfnmsub231ps": "Fused Negative Multiply-Subtract of Packed Single-FP Values",
"vfnmsub231sd": "Fused Negative Multiply-Subtract of Scalar Double-FP Values",
"vfnmsub231ss": "Fused Negative Multiply-Subtract of Scalar Single-FP Values",
"vgatherdpd": "Gather Packed DP FP Values Using Signed Dword Indices [AVX2]",
"vgatherdps": "Gather Packed SP FP values Using Signed Dword Indices [AVX2]",
"vgatherqpd": "Gather Packed DP FP Values Using Signed Qword Indices [AVX2]",
"vgatherqps": "Gather Packed SP FP values Using Signed Qword Indices [AVX2]",
"vhaddpd": "Packed Double-FP Horizontal Add [AVX]",
"vhaddps": "Packed Single-FP Horizontal Add [AVX]",
"vhsubpd": "Packed Double-FP Horizontal Subtract [AVX]",
"vhsubps": "Packed Single-FP Horizontal Subtract [AVX]",
"vinsertf128": "Insert Packed Floating-Point Values",
"vinserti128": "Insert Packed Integer Values",
"vinsertps": "Insert Packed Single-FP Value [AVX]",
"vmaskmovdqu": "Store Selected Bytes of Double Quadword [AVX]",
"vmaskmov": "Conditional SIMD Packed Loads and Stores",
"vmaxpd": "Return Maximum Packed Double-FP Values [AVX]",
"vmaxps": "Return Maximum Packed Single-FP Values [AVX]",
"vmaxsd": "Return Maximum Scalar Double-FP Value [AVX]",
"vmaxss": "Return Maximum Scalar Single-FP Value [AVX]",
"vminpd": "Return Minimum Packed Double-FP Values [AVX]",
"vminps": "Return Minimum Packed Single-FP Values [AVX]",
"vminsd": "Return Minimum Scalar Double-FP Value [AVX]",
"vminss": "Return Minimum Scalar Single-FP Value [AVX]",
"vmovapd": "Move Aligned Packed Double-FP Values",
"vmovaps": "Move Aligned Packed Single-FP Values",
"vmovddup": "Move One Double-FP and Duplicate [AVX]",
"vmovdqa": "Move Aligned Packed Integer Values [AVX]",
"vmovdqa32": "Move Aligned Packed Dword Values [AVX512]",
"vmovdqa64": "Move Aligned Packed Qword Values [AVX512]",
"vmovdqu": "Move Aligned Packed Integer Values [AVX]",
"vmovdqu8": "Move Aligned Packed Byte Values [AVX512]",
"vmovdqu16": "Move Aligned Packed Word Values [AVX512]",
"vmovdqu32": "Move Aligned Packed Dword Values [AVX512]",
"vmovdqu64": "Move Aligned Packed Qword Values [AVX512]",
"vmovhlps": "Move Packed Single-FP Value High to Low [AVX]",
"vmovhpd": "Move High Packed Double-FP Value [AVX]",
"vmovhps": "Move High Packed Single-FP Values [AVX]",
"vmovlhps": "Move Packed Single-FP Values Low to High [AVX]",
"vmovlpd": "Move Low Packed Double-FP Value [AVX]",
"vmovlps": "Move Low Packed Single-FP Values [AVX]",
"vmovmskpd": "Extract Packed Double-FP Sign Mask [AVX]",
"vmovmskps": "Extract Packed Single-FP Sign Mask [AVX]",
"vmovntdq": "Store Packed Integer Using Non-Temporal Hint [AVX]",
"vmovntdqa": "Store Packed Integer Using Non-Temporal Aligned Hint [AVX]",
"vmovntpd": "Store Packed Double-FP Values Using Non-Temporal Hint [AVX]",
"vmovntps": "Store Packed Single-FP Values Using Non-Temporal Hint [AVX]",
"vmovshdup": "Move Single-FP High Values and Duplicate [AVX]",
"vmovsldup": "Move Single-FP Low Values and Duplicate [AVX]",
"vmovsd": "Move Scalar Double-FP Values [AVX]",
"vmovss": "Move Scalar Single-FP Values [AVX]",
"vmovupd": "Move Unaligned Packed Double-FP Values [AVX]",
"vmovups": "Move Unaligned Packed Single-FP Values [AVX]",
"vmpsadbw": "Compute Multiple Packed Sums of Absolute Difference [AVX]",
"vmulpd": "Multiply Packed Double-FP Values [AVX]",
"vmulps": "Multiply Packed Singl-FP Values [AVX]",
"vmulsd": "Multiply Scalar Double-FP Values [AVX]",
"vmulss": "Multiply Scalar Singl-FP Values [AVX]",
"vorpd": "Bitwise Logical OR of Packed Double-FP Values [AVX]",
"vorps": "Bitwise Logical OR of Packed Single-FP Values [AVX]",
"vpackssdw": "Pack with Signed Saturation [AVX]",
"vpacksswb": "Pack with Signed Saturation [AVX]",
"vpackusdw": "Pack with Unsigned Saturation [AVX]",
"vpackuswb": "Pack with Unsigned Saturation [AVX]",
"vpalignr": "Packed Align Right [AVX]",
"vpand": "Bitwise Logical AND [AVX]",
"vpandn": "Bitwise Logical AND NOT [AVX]",
"vpblendvb": "Variable Blend Packed Bytes [AVX]",
"vpbroadcast": "Broadcast Integer Data",
"vpclmulqdq": "Carry-Less Multiplication Qword [AVX]",
"vpcmpestri": "Packed Compare Explicit Length Strings, Return Index [AVX]",
"vpcmpestrm": "Packed Compare Explicit Length Strings, Return Mask [AVX]",
"vpcmpistri": "Packed Compare Implicit Length Strings, Return Index [AVX]",
"vpcmpistrm": "Packed Compare Implicit Length Strings, Return Mask [AVX]",
"vperm2f128": "Permute Floating-Point Values [AVX]",
"vperm2i128": "Permute Integer Values",
"vpermd": "Full Doublewords Element Permutation",
"vpermilpd": "Permute Double-FP Values [AVX]",
"vpermilps": "Permute Single-FP Values [AVX]",
"vpermpd": "Permute Double-FP Elements",
"vpermps": "Permute Single-FP Elements",
"vpermq": "Qwords Element Permutation",
"vpgatherdd": "Gather Packed Dword Values Using Signed Dword/Qword Indices [AVX2]",
"vpgatherdq": "Gather Packed Qword Values Using Signed Dword/Qword Indices [AVX2]",
"vpgatherqd": "Gather Packed Dword Values Using Signed Dword/Qword Indices [AVX2]",
"vpgatherqq": "Gather Packed Qword Values Using Signed Dword/Qword Indices [AVX2]",
"vphaddsw": "Packed Horizontal Add and Saturate [AVX]",
"vphminposuw": "Packed Horizontal Word Minimum [AVX]",
"vphsubsw": "Packed Horizontal Subtract and Saturate [AVX]",
"vpmaddubsw": "Multiply and Add Packed Signed and Unsigned Bytes [AVX]",
"vpmaddwd": "Multiply and Add Packed Integers [AVX]",
"vpmaskmov": "Conditional SIMD Integer Packed Loads and Stores [AVX2]",
"vpmovmskb": "Move Mask Byte [AVX]",
"vpmovsx": "Packed Move with Sign Extend [AVX]",
"vpmovsxbw": "Packed Move with Sign Extend: Byte to Word [AVX]",
"vpmovsxbd": "Packed Move with Sign Extend: Byte to Dword [AVX]",
"vpmovsxbq": "Packed Move with Sign Extend: Byte to Qword [AVX]",
"vpmovsxwd": "Packed Move with Sign Extend: Word to Dword [AVX]",
"vpmovsxwq": "Packed Move with Sign Extend: Word to Qword [AVX]",
"vpmovsxdq": "Packed Move with Sign Extend: Dword to Qword [AVX]",
"vpmovzx": "Packed Move with Zero Extend [AVX]",
"vpmovzxbw": "Packed Move with Zero Extend: Byte to Word [AVX]",
"vpmovzxbd": "Packed Move with Zero Extend: Byte to Dword [AVX]",
"vpmovzxbq": "Packed Move with Zero Extend: Byte to Qword [AVX]",
"vpmovzxwd": "Packed Move with Zero Extend: Word to Dword [AVX]",
"vpmovzxwq": "Packed Move with Zero Extend: Word to Qword [AVX]",
"vpmovzxdq": "Packed Move with Zero Extend: Dword to Qword [AVX]",
"vpmuldq": "Multiply Packed Signed Dword Integers [AVX]",
"vpmulhrsw": "Packed Multiply High with Round and Scale [AVX]",
"vpmulhuw": "Multiply Packed Unsigned Integers and Store High Result [AVX]",
"vpmulhw": "Multiply Packed Signed Integers and Store High Result [AVX]",
"vpmulld": "Multiply Packed Signed Dword Integers and Store Low Result [AVX]",
"vpmullw": "Multiply Packed Signed Integers and Store Low Result [AVX]",
"vpmuludq": "Multiply Packed Unsigned Dword Integers [SSE2]",
"vpor": "Bitwise Logical OR [AVX]",
"vpsadbw": "Compute Sum of Absolute Differences [AVX]",
"vpslldq": "Shift Double Qword Left Logical [AVX]",
"vpsrldq": "Shift Double Qword Right Logical [AVX]",
"vptest": "Logical Compare [AVX]",
"vpunpckhbw": "Unpack High Data [AVX]",
"vpunpckhdq": "Unpack High Data [AVX]",
"vpunpckhqdq": "Unpack High Data [AVX]",
"vpunpckhwd": "Unpack High Data [AVX]",
"vpunpcklbw": "Unpack Low Data [AVX]",
"vpunpckldq": "Unpack Low Data [AVX]",
"vpunpcklqdq": "Unpack Low Data [AVX]",
"vpunpcklwd": "Unpack Low Data [AVX]",
"vpxor": "Logical Exclusive OR [AVX]",
"vrcpps": "Compute Reciprocal of Packed Single-FP Values [AVX]",
"vrcpss": "Compute Reciprocal of Scalar Single-FP Value [AVX]",
"vroundpd": "Round Packed Double-FP Values [AVX]",
"vroundps": "Round Packed Single-FP Values [AVX]",
"vroundsd": "Round Scalar Double-FP Values [AVX]",
"vroundss": "Round Scalar Single-FP Values [AVX]",
"vrsqrtps": "Compute Reciprocal of Square Root of Packed Single-FP Values [AVX]",
"vrsqrtss": "Compute Reciprocal of Square Root of Scalar Single-FP Value [AVX]",
"vshufpd": "Shuffle Packed Double-FP Values [AVX]",
"vshufps": "Shuffle Packed Single-FP Values [AVX]",
"vsqrtpd": "Compute Square Root of Packed Double-FP Value [AVX]",
"vsqrtps": "Compute Square Root of Packed Single-FP Value [AVX]",
"vsqrtsd": "Compute Square Root of Scalar Double-FP Value [AVX]",
"vsqrtss": "Compute Square Root of Scalar Single-FP Value [AVX]",
"vstmxcsr": "Store MXCSR Register State [AVX]",
"vsubpd": "Subtract Packed Double-FP Values [AVX]",
"vsubps": "Subtract Packed Single-FP Values [AVX]",
"vsubsd": "Subtract Scalar Double-FP Values [AVX]",
"vsubss": "Subtract Scalar Single-FP Values [AVX]",
"vtestpd": "Packed Bit Test Packed Double-FP Values [AVX]",
"vtestps": "Packed Bit Test Packed Single-FP Values [AVX]",
"vucomisd": "Unordered Compare Scalar Double-FP Values and Set EFLAGS [AVX]",
"vucomiss": "Unordered Compare Scalar Single-FP Values and Set EFLAGS [AVX]",
"vunpckhpd": "Unpack and Interleave High Packed Double FP-Values [AVX]",
"vunpckhps": "Unpack and Interleave High Packed Single FP-Values [AVX]",
"vunpcklpd": "Unpack and Interleave Low Packed Double FP-Values [AVX]",
"vunpcklps": "Unpack and Interleave Low Packed Single FP-Values [AVX]",
"vzeroall": "Zero All YMM Registers [AVX]",
"vzeroupper": "Zero Upper Bits of YMM Registers [AVX]",
"wait": "Wait for FP exceptions",
"wbinvd": "Write Back and Invalidate Cache",
"wbnoinvd": "Write Back without Cache Invalidation",
"wrfsbase": "Write FS Segment Base [FSGSBASE]",
"wrgsbase": "Write GS Segment Base [FSGSBASE]",
"wrmsr": "Write to Model Specific Register",
"wrpkru": "Write Protection Key Register for Userspace [PKU]",
"wrss": "Write to Shadow Stack [CET]",
"wruss": "Write to User Shadow Stack [CET]",
"xabort": "Transactional Abort [RTM]",
"xacquire": "Hardware Lock Elision Prefix Hints [HLE]",
"xadd": "Exchange and Add",
"xbegin": "Transactional Begin [RTM]",
"xchg": "Exchange Register/Memory with Register",
"xend": "Transactional End [RTM]",
"xgetbv": "Get Value of Extended Control Register",
"xlat": "Table Look-up Translation",
"xlatb": "Table Look-up Translation",
"xor": "Logical Exclusive OR",
"xorpd": "Bitwise Logical XOR for Double-FP Values [SSE2]",
"xorps": "Bitwise Logical XOR for Single-FP Values [SSE]",
"xrelease": "Hardware Lock Elision Prefix Hints [HLE]",
"xrstor": "Restore Processor Extended States",
"xrstors": "Restore Processor Extended States Supervisor",
"xsave": "Save Processor Extended States",
"xsavec": "Save Processor Extended States with Compaction",
"xsaveopt": "Save Processor Extended States Optimized [XSAVEOPT]",
"xsaves": "Save Processor Extended States Supervisor",
"xsetbv": "Set Extended Control Register",
"xresldtrk": "Resume Load Tracking [TSXLDTRK]",
"xsusldtrk": "Suspend Load Tracking [TSXLDTRK]",
"xtest": "Test If In Transactional Execution [RTM]",
}
Cond_x86_64 = map[string]string{
"g": "Greater",
"ng": "Not Greater",
"ge": "Greater or Equal",
"nge": "Not Greater or Equal",
"l": "Less",
"nl": "Not Less",
"le": "Less or Equal",
"nle": "Not Less or Equal",
"a": "Above",
"na": "Not Above",
"ae": "Above or Equal",
"nae": "Not Above or Equal",
"b": "Below",
"nb": "Not Below",
"be": "Below or Equal",
"nbe": "Not Below or Equal",
"o": "Overflow",
"no": "Not Overflow",
"p": "Parity",
"np": "Not Parity",
"pe": "Parity Even",
"po": "Parity Odd",
"e": "Equal",
"ne": "Not Equal",
"s": "Sign",
"ns": "Not Sign",
"z": "Zero",
"nz": "Not Zero",
"cxz": "CX register is Zero",
"excz": "ECX register is Zero",
}
CondInsn_x86_64 = []string{"cmov", "fcmov", "j", "loop", "set"}
Size_x86_64 = map[string]string{
"b": "Byte",
"w": "Word",
"d": "Dword",
"l": "Dword", // = long
"q": "Qword",
}
SizeInsn_x86_64 = map[string]string{
"cmp": "Compare ${SIZE} Data Operands",
"cmps": "Compare ${SIZE} String Operands",
"kadd": "Add Two Masks in ${SIZE} [AVX512]",
"kand": "Bitwise Logical AND Masks in ${SIZE} [AVX512]",
"kandn": "Bitwise Logical AND NOT Masks in ${SIZE} [AVX512]",
"kmov": "Move from and to Mask Registers in ${SIZE} [AVX512]",
"knot": "NOT Mask Registers in ${SIZE} [AVX512]",
"kor": "Bitwise Logical OR Masks in ${SIZE} [AVX512]",
"lods": "Load ${SIZE} String",
"mov": "Move ${SIZE} Data",
"movs": "Move ${SIZE} Data from String to String",
"outs": "Output ${SIZE} String to Port",
"pabs": "Packed Absolute ${SIZE} Value [SSE3]",
"padd": "Add Packed ${SIZE} Integers [MMX]",
"padds": "Add Packed Signed Integers with Signed Saturation [MMX]",
"paddus": "Add Packed Unsigned Integers with Unsigned Saturation [MMX]",
"pavg": "Average Packed Integers [SSE]",
"pcmpeq": "Compare Packed ${SIZE} Data to Equal [MMX]",
"pcmpgt": "Compare Packed ${SIZE} Data to Greater Than [MMX]",
"pextr": "Extract ${SIZE} Data [SSE]",
"phadd": "Packed Horizontal Add [SSE3]",
"phsub": "Packed Horizontal Subtract [SSE3]",
"pinsr": "Insert ${SIZE} Data [SSE]",
"pmaxs": "Maximum of Packed Signed ${SIZE} Integers [SSE]",
"pmaxu": "Maximum of Packed Unsigned ${SIZE} Integers [SSE]",
"pmins": "Minimum of Packed Signed ${SIZE} Integers [SSE]",
"pminu": "Minimum of Packed Unsigned ${SIZE} Integers [SSE]",
"pshuf": "Shuffle Packed ${SIZE} Data [SSE2]",
"psign": "Packed SIGN on ${SIZE} Data [SSE3]",
"psll": "Shift Packed ${SIZE} Data Left Logical [MMX]",
"psra": "Shift Packed ${SIZE} Data Right Arithmetic [MMX]",
"psrl": "Shift Packed ${SIZE} Data Right Logical [MMX]",
"psub": "Subtract Packed ${SIZE} Integers [MMX]",
"psubs": "Subtract Packed Signed ${SIZE} Integers with Signed Saturation [MMX]",
"psubus": "Subtract Packed Unsigned ${SIZE} Integers with Unsigned Saturation [MMX]",
"scas": "Scan String with comparing ${SIZE} data",
"stos": "Store ${SIZE} String",
"vmov": "Move ${SIZE} Data [AVX]",
"vpabs": "Packed Absolute ${SIZE} Value [AVX]",
"vpavg": "Average Packed Integers [AVX]",
"vpadd": "Add Packed ${SIZE} Integers [AVX]",
"vpadds": "Add Packed Signed Integers with Signed Saturation [AVX]",
"vpaddus": "Add Packed Unsigned Integers with Unsigned Saturation [AVX]",
"vpblend": "Blend Packed Words [AVX]",
"vpcmpeq": "Compare Packed ${SIZE} Data to Equal [AVX]",
"vpcmpgt": "Compare Packed ${SIZE} Data to Greater Than [AVX]",
"vpextr": "Extract ${SIZE} Data [AVX]",
"vphadd": "Packed Horizontal Add [AVX]",
"vphsub": "Packed Horizontal Subtract [AVX]",
"vpinsr": "Insert ${SIZE} Data [AVX]",
"vpmaxs": "Maximum of Packed Signed ${SIZE} Integers [AVX]",
"vpmaxu": "Maximum of Packed Unsigned ${SIZE} Integers [AVX]",
"vpmins": "Minimum of Packed Signed ${SIZE} Integers [AVX]",
"vpminu": "Minimum of Packed Unsigned ${SIZE} Integers [AVX]",
"vpshuf": "Shuffle Packed ${SIZE} Data [AVX]",
"vpshufhw": "Shuffle Packed High Words [AVX]",
"vpshuflw": "Shuffle Packed Low Words [AVX]",
"vpsign": "Packed SIGN on ${SIZE} Data [AVX]",
"vpsll": "Shift Packed ${SIZE} Data Left Logical [AVX]",
"vpsllv": "Variable Bit Shift Left Logical [AVX2]",
"vpsrlv": "Variable Bit Shift Right Logical [AVX2]",
"vpsra": "Shift Packed ${SIZE} Data Right Arithmetic [AVX]",
"vpsrav": "Variable Bit Shift Right Arithmetic [AVX2]",
"vpsrl": "Shift Packed ${SIZE} Data Right Logical [AVX]",
"vpsub": "Subtract Packed Signed ${SIZE} Integers [AVX]",
"vpsubs": "Subtract Packed Signed ${SIZE} Integers with Signed Saturation [AVX]",
"vpsubus": "Subtract Packed Unsigned ${SIZE} Integers with Unsigned Saturation [AVX]",
}
}