forked from asmjit/asmjit
-
Notifications
You must be signed in to change notification settings - Fork 4
/
asmjit_test_assembler_x86.cpp
8300 lines (8273 loc) · 740 KB
/
asmjit_test_assembler_x86.cpp
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
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// This file is part of AsmJit project <https://asmjit.com>
//
// See asmjit.h or LICENSE.md for license and copyright information
// SPDX-License-Identifier: Zlib
#include <asmjit/core.h>
#if !defined(ASMJIT_NO_X86)
#include <asmjit/x86.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "asmjit_test_assembler.h"
#include "cmdline.h"
using namespace asmjit;
#define TEST_INSTRUCTION(OPCODE, ...) \
tester.testInstruction(OPCODE, #__VA_ARGS__, tester.assembler.__VA_ARGS__)
static void ASMJIT_NOINLINE testX86AssemblerBase(AssemblerTester<x86::Assembler>& tester) noexcept {
using namespace x86;
TEST_INSTRUCTION("37" , aaa(ax));
TEST_INSTRUCTION("D501" , aad(ax, 1));
TEST_INSTRUCTION("D401" , aam(ax, 1));
TEST_INSTRUCTION("3F" , aas(ax));
TEST_INSTRUCTION("80D101" , adc(cl, 1));
TEST_INSTRUCTION("80D501" , adc(ch, 1));
TEST_INSTRUCTION("8094118000000001" , adc(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("6683D101" , adc(cx, 1));
TEST_INSTRUCTION("668394118000000001" , adc(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("83D101" , adc(ecx, 1));
TEST_INSTRUCTION("8394118000000001" , adc(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("10D1" , adc(cl, dl));
TEST_INSTRUCTION("10F1" , adc(cl, dh));
TEST_INSTRUCTION("10D5" , adc(ch, dl));
TEST_INSTRUCTION("10F5" , adc(ch, dh));
TEST_INSTRUCTION("109C1180000000" , adc(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("10BC1180000000" , adc(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("109C1180000000" , adc(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("10BC1180000000" , adc(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6611D1" , adc(cx, dx));
TEST_INSTRUCTION("66119C1180000000" , adc(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66119C1180000000" , adc(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("11D1" , adc(ecx, edx));
TEST_INSTRUCTION("119C1180000000" , adc(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("119C1180000000" , adc(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("128C1A80000000" , adc(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("128C1A80000000" , adc(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("12AC1A80000000" , adc(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("12AC1A80000000" , adc(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66138C1A80000000" , adc(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66138C1A80000000" , adc(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("138C1A80000000" , adc(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("138C1A80000000" , adc(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38F6CA" , adcx(ecx, edx));
TEST_INSTRUCTION("660F38F68C1A80000000" , adcx(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38F68C1A80000000" , adcx(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("80C101" , add(cl, 1));
TEST_INSTRUCTION("80C501" , add(ch, 1));
TEST_INSTRUCTION("8084118000000001" , add(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("6683C101" , add(cx, 1));
TEST_INSTRUCTION("668384118000000001" , add(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("83C101" , add(ecx, 1));
TEST_INSTRUCTION("8384118000000001" , add(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("00D1" , add(cl, dl));
TEST_INSTRUCTION("00F1" , add(cl, dh));
TEST_INSTRUCTION("00D5" , add(ch, dl));
TEST_INSTRUCTION("00F5" , add(ch, dh));
TEST_INSTRUCTION("009C1180000000" , add(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("00BC1180000000" , add(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("009C1180000000" , add(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("00BC1180000000" , add(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6601D1" , add(cx, dx));
TEST_INSTRUCTION("66019C1180000000" , add(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66019C1180000000" , add(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("01D1" , add(ecx, edx));
TEST_INSTRUCTION("019C1180000000" , add(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("019C1180000000" , add(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("028C1A80000000" , add(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("028C1A80000000" , add(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("02AC1A80000000" , add(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("02AC1A80000000" , add(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66038C1A80000000" , add(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66038C1A80000000" , add(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("038C1A80000000" , add(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("038C1A80000000" , add(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("80E101" , and_(cl, 1));
TEST_INSTRUCTION("80E501" , and_(ch, 1));
TEST_INSTRUCTION("6683E101" , and_(cx, 1));
TEST_INSTRUCTION("83E101" , and_(ecx, 1));
TEST_INSTRUCTION("80A4118000000001" , and_(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("6683A4118000000001" , and_(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("83A4118000000001" , and_(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("20D1" , and_(cl, dl));
TEST_INSTRUCTION("20F1" , and_(cl, dh));
TEST_INSTRUCTION("20D5" , and_(ch, dl));
TEST_INSTRUCTION("20F5" , and_(ch, dh));
TEST_INSTRUCTION("209C1180000000" , and_(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("20BC1180000000" , and_(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("209C1180000000" , and_(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("20BC1180000000" , and_(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6621D1" , and_(cx, dx));
TEST_INSTRUCTION("66219C1180000000" , and_(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66219C1180000000" , and_(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("21D1" , and_(ecx, edx));
TEST_INSTRUCTION("219C1180000000" , and_(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("219C1180000000" , and_(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("228C1A80000000" , and_(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("228C1A80000000" , and_(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("22AC1A80000000" , and_(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("22AC1A80000000" , and_(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66238C1A80000000" , and_(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66238C1A80000000" , and_(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("238C1A80000000" , and_(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("238C1A80000000" , and_(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E268F2CB" , andn(ecx, edx, ebx));
TEST_INSTRUCTION("C4E268F28C2B80000000" , andn(ecx, edx, ptr(ebx, ebp, 0, 128)));
TEST_INSTRUCTION("C4E268F28C2B80000000" , andn(ecx, edx, dword_ptr(ebx, ebp, 0, 128)));
TEST_INSTRUCTION("63D1" , arpl(cx, dx));
TEST_INSTRUCTION("639C1180000000" , arpl(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("639C1180000000" , arpl(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("C4E260F7CA" , bextr(ecx, edx, ebx));
TEST_INSTRUCTION("C4E258F78C1A80000000" , bextr(ecx, ptr(edx, ebx, 0, 128), esp));
TEST_INSTRUCTION("C4E258F78C1A80000000" , bextr(ecx, dword_ptr(edx, ebx, 0, 128), esp));
TEST_INSTRUCTION("8FE97001CA" , blcfill(ecx, edx));
TEST_INSTRUCTION("8FE970018C1A80000000" , blcfill(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE970018C1A80000000" , blcfill(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97002F2" , blci(ecx, edx));
TEST_INSTRUCTION("8FE97002B41A80000000" , blci(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97002B41A80000000" , blci(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001EA" , blcic(ecx, edx));
TEST_INSTRUCTION("8FE97001AC1A80000000" , blcic(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001AC1A80000000" , blcic(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97002CA" , blcmsk(ecx, edx));
TEST_INSTRUCTION("8FE970028C1A80000000" , blcmsk(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE970028C1A80000000" , blcmsk(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001DA" , blcs(ecx, edx));
TEST_INSTRUCTION("8FE970019C1A80000000" , blcs(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE970019C1A80000000" , blcs(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001D2" , blsfill(ecx, edx));
TEST_INSTRUCTION("8FE97001941A80000000" , blsfill(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001941A80000000" , blsfill(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E270F3DA" , blsi(ecx, edx));
TEST_INSTRUCTION("C4E270F39C1A80000000" , blsi(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E270F39C1A80000000" , blsi(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001F2" , blsic(ecx, edx));
TEST_INSTRUCTION("8FE97001B41A80000000" , blsic(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8FE97001B41A80000000" , blsic(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E270F3D2" , blsmsk(ecx, edx));
TEST_INSTRUCTION("C4E270F3941A80000000" , blsmsk(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E270F3941A80000000" , blsmsk(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E270F3CA" , blsr(ecx, edx));
TEST_INSTRUCTION("C4E270F38C1A80000000" , blsr(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C4E270F38C1A80000000" , blsr(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30F1ACA" , bndcl(bnd1, edx));
TEST_INSTRUCTION("F30F1A8C1A80000000" , bndcl(bnd1, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30F1A8C1A80000000" , bndcl(bnd1, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F20F1BCA" , bndcn(bnd1, edx));
TEST_INSTRUCTION("F20F1B8C1A80000000" , bndcn(bnd1, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F20F1B8C1A80000000" , bndcn(bnd1, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F20F1ACA" , bndcu(bnd1, edx));
TEST_INSTRUCTION("F20F1A8C1A80000000" , bndcu(bnd1, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F20F1A8C1A80000000" , bndcu(bnd1, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F1A8C1A80000000" , bndldx(bnd1, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30F1B8C1A80000000" , bndmk(bnd1, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F1ACA" , bndmov(bnd1, bnd2));
TEST_INSTRUCTION("660F1A8C1A80000000" , bndmov(bnd1, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F1B9C1180000000" , bndmov(ptr(ecx, edx, 0, 128), bnd3));
TEST_INSTRUCTION("0F1B9C1180000000" , bndstx(ptr(ecx, edx, 0, 128), bnd3));
TEST_INSTRUCTION("66628C1A80000000" , bound(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66628C1A80000000" , bound(cx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("628C1A80000000" , bound(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("628C1A80000000" , bound(ecx, qword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FBCCA" , bsf(cx, dx));
TEST_INSTRUCTION("660FBC8C1A80000000" , bsf(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FBC8C1A80000000" , bsf(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FBCCA" , bsf(ecx, edx));
TEST_INSTRUCTION("0FBC8C1A80000000" , bsf(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FBC8C1A80000000" , bsf(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FBDCA" , bsr(cx, dx));
TEST_INSTRUCTION("660FBD8C1A80000000" , bsr(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FBD8C1A80000000" , bsr(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FBDCA" , bsr(ecx, edx));
TEST_INSTRUCTION("0FBD8C1A80000000" , bsr(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FBD8C1A80000000" , bsr(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FC9" , bswap(cx));
TEST_INSTRUCTION("0FC9" , bswap(ecx));
TEST_INSTRUCTION("660FBAE101" , bt(cx, 1));
TEST_INSTRUCTION("0FBAE101" , bt(ecx, 1));
TEST_INSTRUCTION("660FBAA4118000000001" , bt(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("0FBAA4118000000001" , bt(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("660FA3D1" , bt(cx, dx));
TEST_INSTRUCTION("660FA39C1180000000" , bt(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("660FA39C1180000000" , bt(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("0FA3D1" , bt(ecx, edx));
TEST_INSTRUCTION("0FA39C1180000000" , bt(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0FA39C1180000000" , bt(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("660FBAF901" , btc(cx, 1));
TEST_INSTRUCTION("0FBAF901" , btc(ecx, 1));
TEST_INSTRUCTION("660FBABC118000000001" , btc(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("0FBABC118000000001" , btc(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("660FBBD1" , btc(cx, dx));
TEST_INSTRUCTION("660FBB9C1180000000" , btc(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("660FBB9C1180000000" , btc(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("0FBBD1" , btc(ecx, edx));
TEST_INSTRUCTION("0FBB9C1180000000" , btc(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0FBB9C1180000000" , btc(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("660FBAF101" , btr(cx, 1));
TEST_INSTRUCTION("0FBAF101" , btr(ecx, 1));
TEST_INSTRUCTION("660FBAB4118000000001" , btr(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("0FBAB4118000000001" , btr(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("660FB3D1" , btr(cx, dx));
TEST_INSTRUCTION("660FB39C1180000000" , btr(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("660FB39C1180000000" , btr(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("0FB3D1" , btr(ecx, edx));
TEST_INSTRUCTION("0FB39C1180000000" , btr(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0FB39C1180000000" , btr(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("660FBAE901" , bts(cx, 1));
TEST_INSTRUCTION("0FBAE901" , bts(ecx, 1));
TEST_INSTRUCTION("660FBAAC118000000001" , bts(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("0FBAAC118000000001" , bts(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("660FABD1" , bts(cx, dx));
TEST_INSTRUCTION("660FAB9C1180000000" , bts(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("660FAB9C1180000000" , bts(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("0FABD1" , bts(ecx, edx));
TEST_INSTRUCTION("0FAB9C1180000000" , bts(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0FAB9C1180000000" , bts(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("C4E260F5CA" , bzhi(ecx, edx, ebx));
TEST_INSTRUCTION("C4E258F58C1A80000000" , bzhi(ecx, ptr(edx, ebx, 0, 128), esp));
TEST_INSTRUCTION("C4E258F58C1A80000000" , bzhi(ecx, dword_ptr(edx, ebx, 0, 128), esp));
TEST_INSTRUCTION("6698" , cbw(ax));
TEST_INSTRUCTION("99" , cdq(edx, eax));
TEST_INSTRUCTION("0F01CA" , clac());
TEST_INSTRUCTION("F8" , clc());
TEST_INSTRUCTION("FC" , cld());
TEST_INSTRUCTION("0F1C841180000000" , cldemote(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0FAEBC1180000000" , clflush(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("660FAEBC1180000000" , clflushopt(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F01DD" , clgi());
TEST_INSTRUCTION("FA" , cli());
TEST_INSTRUCTION("F30FAEB41180000000" , clrssbsy(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F30FAEB41180000000" , clrssbsy(qword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F06" , clts());
TEST_INSTRUCTION("660FAEB41180000000" , clwb(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F01FC" , clzero(ptr(eax)));
TEST_INSTRUCTION("0F01FC" , clzero(zmmword_ptr(eax)));
TEST_INSTRUCTION("F5" , cmc());
TEST_INSTRUCTION("660F47CA" , cmova(cx, dx));
TEST_INSTRUCTION("660F478C1A80000000" , cmova(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F478C1A80000000" , cmova(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F47CA" , cmova(ecx, edx));
TEST_INSTRUCTION("0F478C1A80000000" , cmova(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F478C1A80000000" , cmova(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F43CA" , cmovae(cx, dx));
TEST_INSTRUCTION("660F438C1A80000000" , cmovae(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F438C1A80000000" , cmovae(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F43CA" , cmovae(ecx, edx));
TEST_INSTRUCTION("0F438C1A80000000" , cmovae(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F438C1A80000000" , cmovae(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F42CA" , cmovb(cx, dx));
TEST_INSTRUCTION("660F428C1A80000000" , cmovb(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F428C1A80000000" , cmovb(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F42CA" , cmovb(ecx, edx));
TEST_INSTRUCTION("0F428C1A80000000" , cmovb(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F428C1A80000000" , cmovb(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F46CA" , cmovbe(cx, dx));
TEST_INSTRUCTION("660F468C1A80000000" , cmovbe(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F468C1A80000000" , cmovbe(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F46CA" , cmovbe(ecx, edx));
TEST_INSTRUCTION("0F468C1A80000000" , cmovbe(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F468C1A80000000" , cmovbe(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F42CA" , cmovc(cx, dx));
TEST_INSTRUCTION("660F428C1A80000000" , cmovc(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F428C1A80000000" , cmovc(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F42CA" , cmovc(ecx, edx));
TEST_INSTRUCTION("0F428C1A80000000" , cmovc(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F428C1A80000000" , cmovc(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F44CA" , cmove(cx, dx));
TEST_INSTRUCTION("660F448C1A80000000" , cmove(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F448C1A80000000" , cmove(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F44CA" , cmove(ecx, edx));
TEST_INSTRUCTION("0F448C1A80000000" , cmove(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F448C1A80000000" , cmove(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4FCA" , cmovg(cx, dx));
TEST_INSTRUCTION("660F4F8C1A80000000" , cmovg(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4F8C1A80000000" , cmovg(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4FCA" , cmovg(ecx, edx));
TEST_INSTRUCTION("0F4F8C1A80000000" , cmovg(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4F8C1A80000000" , cmovg(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4DCA" , cmovge(cx, dx));
TEST_INSTRUCTION("660F4D8C1A80000000" , cmovge(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4D8C1A80000000" , cmovge(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4DCA" , cmovge(ecx, edx));
TEST_INSTRUCTION("0F4D8C1A80000000" , cmovge(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4D8C1A80000000" , cmovge(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4CCA" , cmovl(cx, dx));
TEST_INSTRUCTION("660F4C8C1A80000000" , cmovl(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4C8C1A80000000" , cmovl(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4CCA" , cmovl(ecx, edx));
TEST_INSTRUCTION("0F4C8C1A80000000" , cmovl(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4C8C1A80000000" , cmovl(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4ECA" , cmovle(cx, dx));
TEST_INSTRUCTION("660F4E8C1A80000000" , cmovle(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4E8C1A80000000" , cmovle(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4ECA" , cmovle(ecx, edx));
TEST_INSTRUCTION("0F4E8C1A80000000" , cmovle(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4E8C1A80000000" , cmovle(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F46CA" , cmovna(cx, dx));
TEST_INSTRUCTION("660F468C1A80000000" , cmovna(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F468C1A80000000" , cmovna(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F46CA" , cmovna(ecx, edx));
TEST_INSTRUCTION("0F468C1A80000000" , cmovna(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F468C1A80000000" , cmovna(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F42CA" , cmovnae(cx, dx));
TEST_INSTRUCTION("660F428C1A80000000" , cmovnae(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F428C1A80000000" , cmovnae(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F42CA" , cmovnae(ecx, edx));
TEST_INSTRUCTION("0F428C1A80000000" , cmovnae(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F428C1A80000000" , cmovnae(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F43CA" , cmovnb(cx, dx));
TEST_INSTRUCTION("660F438C1A80000000" , cmovnb(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F438C1A80000000" , cmovnb(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F43CA" , cmovnb(ecx, edx));
TEST_INSTRUCTION("0F438C1A80000000" , cmovnb(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F438C1A80000000" , cmovnb(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F47CA" , cmovnbe(cx, dx));
TEST_INSTRUCTION("660F478C1A80000000" , cmovnbe(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F478C1A80000000" , cmovnbe(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F47CA" , cmovnbe(ecx, edx));
TEST_INSTRUCTION("0F478C1A80000000" , cmovnbe(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F478C1A80000000" , cmovnbe(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F43CA" , cmovnc(cx, dx));
TEST_INSTRUCTION("660F438C1A80000000" , cmovnc(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F438C1A80000000" , cmovnc(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F43CA" , cmovnc(ecx, edx));
TEST_INSTRUCTION("0F438C1A80000000" , cmovnc(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F438C1A80000000" , cmovnc(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F45CA" , cmovne(cx, dx));
TEST_INSTRUCTION("660F458C1A80000000" , cmovne(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F458C1A80000000" , cmovne(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F45CA" , cmovne(ecx, edx));
TEST_INSTRUCTION("0F458C1A80000000" , cmovne(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F458C1A80000000" , cmovne(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4ECA" , cmovng(cx, dx));
TEST_INSTRUCTION("660F4E8C1A80000000" , cmovng(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4E8C1A80000000" , cmovng(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4ECA" , cmovng(ecx, edx));
TEST_INSTRUCTION("0F4E8C1A80000000" , cmovng(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4E8C1A80000000" , cmovng(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4CCA" , cmovnge(cx, dx));
TEST_INSTRUCTION("660F4C8C1A80000000" , cmovnge(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4C8C1A80000000" , cmovnge(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4CCA" , cmovnge(ecx, edx));
TEST_INSTRUCTION("0F4C8C1A80000000" , cmovnge(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4C8C1A80000000" , cmovnge(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4DCA" , cmovnl(cx, dx));
TEST_INSTRUCTION("660F4D8C1A80000000" , cmovnl(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4D8C1A80000000" , cmovnl(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4DCA" , cmovnl(ecx, edx));
TEST_INSTRUCTION("0F4D8C1A80000000" , cmovnl(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4D8C1A80000000" , cmovnl(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4FCA" , cmovnle(cx, dx));
TEST_INSTRUCTION("660F4F8C1A80000000" , cmovnle(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4F8C1A80000000" , cmovnle(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4FCA" , cmovnle(ecx, edx));
TEST_INSTRUCTION("0F4F8C1A80000000" , cmovnle(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4F8C1A80000000" , cmovnle(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F41CA" , cmovno(cx, dx));
TEST_INSTRUCTION("660F418C1A80000000" , cmovno(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F418C1A80000000" , cmovno(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F41CA" , cmovno(ecx, edx));
TEST_INSTRUCTION("0F418C1A80000000" , cmovno(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F418C1A80000000" , cmovno(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4BCA" , cmovnp(cx, dx));
TEST_INSTRUCTION("660F4B8C1A80000000" , cmovnp(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4B8C1A80000000" , cmovnp(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4BCA" , cmovnp(ecx, edx));
TEST_INSTRUCTION("0F4B8C1A80000000" , cmovnp(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4B8C1A80000000" , cmovnp(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F49CA" , cmovns(cx, dx));
TEST_INSTRUCTION("660F498C1A80000000" , cmovns(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F498C1A80000000" , cmovns(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F49CA" , cmovns(ecx, edx));
TEST_INSTRUCTION("0F498C1A80000000" , cmovns(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F498C1A80000000" , cmovns(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F45CA" , cmovnz(cx, dx));
TEST_INSTRUCTION("660F458C1A80000000" , cmovnz(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F458C1A80000000" , cmovnz(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F45CA" , cmovnz(ecx, edx));
TEST_INSTRUCTION("0F458C1A80000000" , cmovnz(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F458C1A80000000" , cmovnz(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F40CA" , cmovo(cx, dx));
TEST_INSTRUCTION("660F408C1A80000000" , cmovo(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F408C1A80000000" , cmovo(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F40CA" , cmovo(ecx, edx));
TEST_INSTRUCTION("0F408C1A80000000" , cmovo(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F408C1A80000000" , cmovo(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4ACA" , cmovp(cx, dx));
TEST_INSTRUCTION("660F4A8C1A80000000" , cmovp(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4A8C1A80000000" , cmovp(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4ACA" , cmovp(ecx, edx));
TEST_INSTRUCTION("0F4A8C1A80000000" , cmovp(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4A8C1A80000000" , cmovp(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4ACA" , cmovpe(cx, dx));
TEST_INSTRUCTION("660F4A8C1A80000000" , cmovpe(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4A8C1A80000000" , cmovpe(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4ACA" , cmovpe(ecx, edx));
TEST_INSTRUCTION("0F4A8C1A80000000" , cmovpe(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4A8C1A80000000" , cmovpe(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4BCA" , cmovpo(cx, dx));
TEST_INSTRUCTION("660F4B8C1A80000000" , cmovpo(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F4B8C1A80000000" , cmovpo(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4BCA" , cmovpo(ecx, edx));
TEST_INSTRUCTION("0F4B8C1A80000000" , cmovpo(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F4B8C1A80000000" , cmovpo(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F48CA" , cmovs(cx, dx));
TEST_INSTRUCTION("660F488C1A80000000" , cmovs(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F488C1A80000000" , cmovs(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F48CA" , cmovs(ecx, edx));
TEST_INSTRUCTION("0F488C1A80000000" , cmovs(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F488C1A80000000" , cmovs(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F44CA" , cmovz(cx, dx));
TEST_INSTRUCTION("660F448C1A80000000" , cmovz(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F448C1A80000000" , cmovz(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F44CA" , cmovz(ecx, edx));
TEST_INSTRUCTION("0F448C1A80000000" , cmovz(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F448C1A80000000" , cmovz(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("80F901" , cmp(cl, 1));
TEST_INSTRUCTION("80FD01" , cmp(ch, 1));
TEST_INSTRUCTION("80BC118000000001" , cmp(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("6683F901" , cmp(cx, 1));
TEST_INSTRUCTION("6683BC118000000001" , cmp(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("83F901" , cmp(ecx, 1));
TEST_INSTRUCTION("83BC118000000001" , cmp(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("38D1" , cmp(cl, dl));
TEST_INSTRUCTION("38F1" , cmp(cl, dh));
TEST_INSTRUCTION("38D5" , cmp(ch, dl));
TEST_INSTRUCTION("38F5" , cmp(ch, dh));
TEST_INSTRUCTION("389C1180000000" , cmp(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("38BC1180000000" , cmp(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("389C1180000000" , cmp(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("38BC1180000000" , cmp(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6639D1" , cmp(cx, dx));
TEST_INSTRUCTION("66399C1180000000" , cmp(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66399C1180000000" , cmp(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("39D1" , cmp(ecx, edx));
TEST_INSTRUCTION("399C1180000000" , cmp(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("399C1180000000" , cmp(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("3A8C1A80000000" , cmp(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("3A8C1A80000000" , cmp(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("3AAC1A80000000" , cmp(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("3AAC1A80000000" , cmp(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("663B8C1A80000000" , cmp(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("663B8C1A80000000" , cmp(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("3B8C1A80000000" , cmp(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("3B8C1A80000000" , cmp(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("A6" , cmps(byte_ptr(esi), byte_ptr(edi)));
TEST_INSTRUCTION("66A7" , cmps(word_ptr(esi), word_ptr(edi)));
TEST_INSTRUCTION("A7" , cmps(dword_ptr(esi), dword_ptr(edi)));
TEST_INSTRUCTION("0FB0D1" , cmpxchg(cl, dl, al));
TEST_INSTRUCTION("0FB0F1" , cmpxchg(cl, dh, al));
TEST_INSTRUCTION("0FB0D5" , cmpxchg(ch, dl, al));
TEST_INSTRUCTION("0FB0F5" , cmpxchg(ch, dh, al));
TEST_INSTRUCTION("0FB09C1180000000" , cmpxchg(ptr(ecx, edx, 0, 128), bl, al));
TEST_INSTRUCTION("0FB0BC1180000000" , cmpxchg(ptr(ecx, edx, 0, 128), bh, al));
TEST_INSTRUCTION("0FB09C1180000000" , cmpxchg(byte_ptr(ecx, edx, 0, 128), bl, al));
TEST_INSTRUCTION("0FB0BC1180000000" , cmpxchg(byte_ptr(ecx, edx, 0, 128), bh, al));
TEST_INSTRUCTION("660FB1D1" , cmpxchg(cx, dx, ax));
TEST_INSTRUCTION("660FB19C1180000000" , cmpxchg(ptr(ecx, edx, 0, 128), bx, ax));
TEST_INSTRUCTION("660FB19C1180000000" , cmpxchg(word_ptr(ecx, edx, 0, 128), bx, ax));
TEST_INSTRUCTION("0FB1D1" , cmpxchg(ecx, edx, eax));
TEST_INSTRUCTION("0FB19C1180000000" , cmpxchg(ptr(ecx, edx, 0, 128), ebx, eax));
TEST_INSTRUCTION("0FB19C1180000000" , cmpxchg(dword_ptr(ecx, edx, 0, 128), ebx, eax));
TEST_INSTRUCTION("0FC78C1180000000" , cmpxchg8b(ptr(ecx, edx, 0, 128), edx, eax, ecx, ebx));
TEST_INSTRUCTION("0FC78C1180000000" , cmpxchg8b(qword_ptr(ecx, edx, 0, 128), edx, eax, ecx, ebx));
TEST_INSTRUCTION("0FA2" , cpuid(eax, ebx, ecx, edx));
TEST_INSTRUCTION("F20F38F0CA" , crc32(ecx, dl));
TEST_INSTRUCTION("F20F38F0CE" , crc32(ecx, dh));
TEST_INSTRUCTION("66F20F38F1CA" , crc32(ecx, dx));
TEST_INSTRUCTION("F20F38F1CA" , crc32(ecx, edx));
TEST_INSTRUCTION("F20F38F08C1A80000000" , crc32(ecx, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66F20F38F18C1A80000000" , crc32(ecx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F20F38F18C1A80000000" , crc32(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("6699" , cwd(dx, ax));
TEST_INSTRUCTION("98" , cwde(eax));
TEST_INSTRUCTION("27" , daa(ax));
TEST_INSTRUCTION("2F" , das(ax));
TEST_INSTRUCTION("6649" , dec(cx));
TEST_INSTRUCTION("49" , dec(ecx));
TEST_INSTRUCTION("FEC9" , dec(cl));
TEST_INSTRUCTION("FECD" , dec(ch));
TEST_INSTRUCTION("FE8C1180000000" , dec(byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66FF8C1180000000" , dec(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("FF8C1180000000" , dec(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F6F1" , div(ax, cl));
TEST_INSTRUCTION("F6F5" , div(ax, ch));
TEST_INSTRUCTION("F6B41180000000" , div(ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F6B41180000000" , div(ax, byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7F1" , div(dx, ax, cx));
TEST_INSTRUCTION("66F7B41180000000" , div(dx, ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7B41180000000" , div(dx, ax, word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7F1" , div(edx, eax, ecx));
TEST_INSTRUCTION("F7B41180000000" , div(edx, eax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7B41180000000" , div(edx, eax, dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F77" , emms());
TEST_INSTRUCTION("F30F1EFB" , endbr32());
TEST_INSTRUCTION("F30F1EFA" , endbr64());
TEST_INSTRUCTION("F20F38F88C1A80000000" , enqcmd(zmmword_ptr(ecx), zmmword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30F38F88C1A80000000" , enqcmds(zmmword_ptr(ecx), zmmword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C8010002" , enter(1, 2));
TEST_INSTRUCTION("0FAE8C1180000000" , fxrstor(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0FAE841180000000" , fxsave(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("D9F4" , fxtract());
TEST_INSTRUCTION("0F37" , getsec());
TEST_INSTRUCTION("F4" , hlt());
TEST_INSTRUCTION("F30F3AF0C001" , hreset(1, eax));
TEST_INSTRUCTION("F6F9" , idiv(ax, cl));
TEST_INSTRUCTION("F6FD" , idiv(ax, ch));
TEST_INSTRUCTION("F6BC1180000000" , idiv(ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F6BC1180000000" , idiv(ax, byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7F9" , idiv(dx, ax, cx));
TEST_INSTRUCTION("66F7BC1180000000" , idiv(dx, ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7BC1180000000" , idiv(dx, ax, word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7F9" , idiv(edx, eax, ecx));
TEST_INSTRUCTION("F7BC1180000000" , idiv(edx, eax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7BC1180000000" , idiv(edx, eax, dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F6E9" , imul(ax, cl));
TEST_INSTRUCTION("F6ED" , imul(ax, ch));
TEST_INSTRUCTION("660FAF841180000000" , imul(ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F6AC1180000000" , imul(ax, byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7E9" , imul(dx, ax, cx));
TEST_INSTRUCTION("66F7AC1180000000" , imul(dx, ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7AC1180000000" , imul(dx, ax, word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7E9" , imul(edx, eax, ecx));
TEST_INSTRUCTION("F7AC1180000000" , imul(edx, eax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7AC1180000000" , imul(edx, eax, dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("660FAFCA" , imul(cx, dx));
TEST_INSTRUCTION("666BC901" , imul(cx, 1));
TEST_INSTRUCTION("660FAF8C1A80000000" , imul(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FAF8C1A80000000" , imul(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FAFCA" , imul(ecx, edx));
TEST_INSTRUCTION("6BC901" , imul(ecx, 1));
TEST_INSTRUCTION("0FAF8C1A80000000" , imul(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FAF8C1A80000000" , imul(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("666BCA01" , imul(cx, dx, 1));
TEST_INSTRUCTION("666B8C1A8000000001" , imul(cx, ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("666B8C1A8000000001" , imul(cx, word_ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("6BCA01" , imul(ecx, edx, 1));
TEST_INSTRUCTION("6B8C1A8000000001" , imul(ecx, ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("6B8C1A8000000001" , imul(ecx, dword_ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("EC" , in(al, dx));
TEST_INSTRUCTION("E401" , in(al, 1));
TEST_INSTRUCTION("66ED" , in(ax, dx));
TEST_INSTRUCTION("66E501" , in(ax, 1));
TEST_INSTRUCTION("ED" , in(eax, dx));
TEST_INSTRUCTION("E501" , in(eax, 1));
TEST_INSTRUCTION("6641" , inc(cx));
TEST_INSTRUCTION("41" , inc(ecx));
TEST_INSTRUCTION("FEC1" , inc(cl));
TEST_INSTRUCTION("FEC5" , inc(ch));
TEST_INSTRUCTION("FE841180000000" , inc(byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66FF841180000000" , inc(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("FF841180000000" , inc(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F30FAEE9" , incsspd(ecx));
TEST_INSTRUCTION("6C" , ins(byte_ptr(edi), dx));
TEST_INSTRUCTION("666D" , ins(word_ptr(edi), dx));
TEST_INSTRUCTION("6D" , ins(dword_ptr(edi), dx));
TEST_INSTRUCTION("CD01" , int_(1));
TEST_INSTRUCTION("CC" , int3());
TEST_INSTRUCTION("CE" , into());
TEST_INSTRUCTION("0F08" , invd());
TEST_INSTRUCTION("660F38808C1A80000000" , invept(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38808C1A80000000" , invept(ecx, xmmword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F01BC1180000000" , invlpg(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F01DF" , invlpga(eax, ecx));
TEST_INSTRUCTION("660F38828C1A80000000" , invpcid(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38828C1A80000000" , invpcid(ecx, xmmword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38818C1A80000000" , invvpid(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38818C1A80000000" , invvpid(ecx, xmmword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66CF" , iret());
TEST_INSTRUCTION("CF" , iretd());
TEST_INSTRUCTION("9F" , lahf(ah));
TEST_INSTRUCTION("660F02CA" , lar(cx, dx));
TEST_INSTRUCTION("660F028C1A80000000" , lar(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F028C1A80000000" , lar(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F02CA" , lar(ecx, edx));
TEST_INSTRUCTION("0F028C1A80000000" , lar(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F028C1A80000000" , lar(ecx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("9A020000000100" , lcall(1, 2));
TEST_INSTRUCTION("FF9C1180000000" , lcall(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66FF9C1180000000" , lcall(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("FF9C1180000000" , lcall(fword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0FAE941180000000" , ldmxcsr(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0FAE941180000000" , ldmxcsr(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66C58C1A80000000" , lds(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66C58C1A80000000" , lds(cx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C58C1A80000000" , lds(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C58C1A80000000" , lds(ecx, fword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("668D8C1A80000000" , lea(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8D8C1A80000000" , lea(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C9" , leave());
TEST_INSTRUCTION("66C48C1A80000000" , les(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66C48C1A80000000" , les(cx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C48C1A80000000" , les(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("C48C1A80000000" , les(ecx, fword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FAEE8" , lfence());
TEST_INSTRUCTION("660FB48C1A80000000" , lfs(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FB48C1A80000000" , lfs(cx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB48C1A80000000" , lfs(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB48C1A80000000" , lfs(ecx, fword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F01941180000000" , lgdt(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("660FB58C1A80000000" , lgs(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FB58C1A80000000" , lgs(cx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB58C1A80000000" , lgs(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB58C1A80000000" , lgs(ecx, fword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F019C1180000000" , lidt(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("EA020000000100" , ljmp(1, 2));
TEST_INSTRUCTION("FFAC1180000000" , ljmp(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66FFAC1180000000" , ljmp(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("FFAC1180000000" , ljmp(fword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F00D1" , lldt(cx));
TEST_INSTRUCTION("0F00941180000000" , lldt(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F00941180000000" , lldt(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("8FE97812C1" , llwpcb(ecx));
TEST_INSTRUCTION("0F01F1" , lmsw(cx));
TEST_INSTRUCTION("0F01B41180000000" , lmsw(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F01B41180000000" , lmsw(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("AC" , lods(al, ptr(esi)));
TEST_INSTRUCTION("AC" , lods(al, byte_ptr(esi)));
TEST_INSTRUCTION("66AD" , lods(ax, ptr(esi)));
TEST_INSTRUCTION("66AD" , lods(ax, word_ptr(esi)));
TEST_INSTRUCTION("AD" , lods(eax, ptr(esi)));
TEST_INSTRUCTION("AD" , lods(eax, dword_ptr(esi)));
TEST_INSTRUCTION("660F03CA" , lsl(cx, dx));
TEST_INSTRUCTION("660F038C1A80000000" , lsl(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F038C1A80000000" , lsl(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F03CA" , lsl(ecx, edx));
TEST_INSTRUCTION("0F038C1A80000000" , lsl(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F038C1A80000000" , lsl(ecx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FB28C1A80000000" , lss(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FB28C1A80000000" , lss(cx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB28C1A80000000" , lss(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB28C1A80000000" , lss(ecx, fword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F00D9" , ltr(cx));
TEST_INSTRUCTION("0F009C1180000000" , ltr(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F009C1180000000" , ltr(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("8FEA7012C201000000" , lwpins(ecx, edx, 1));
TEST_INSTRUCTION("8FEA7012841A8000000001000000" , lwpins(ecx, ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("8FEA7012841A8000000001000000" , lwpins(ecx, dword_ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("8FEA7012CA01000000" , lwpval(ecx, edx, 1));
TEST_INSTRUCTION("8FEA70128C1A8000000001000000" , lwpval(ecx, ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("8FEA70128C1A8000000001000000" , lwpval(ecx, dword_ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("66F30FBDCA" , lzcnt(cx, dx));
TEST_INSTRUCTION("66F30FBD8C1A80000000" , lzcnt(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66F30FBD8C1A80000000" , lzcnt(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30FBDCA" , lzcnt(ecx, edx));
TEST_INSTRUCTION("F30FBD8C1A80000000" , lzcnt(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30FBD8C1A80000000" , lzcnt(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30F01FA" , mcommit());
TEST_INSTRUCTION("0FAEF0" , mfence());
TEST_INSTRUCTION("0F01C8" , monitor(ptr(eax), ecx, edx));
TEST_INSTRUCTION("0F01FA" , monitorx(ptr(eax), ecx, edx));
TEST_INSTRUCTION("88D1" , mov(cl, dl));
TEST_INSTRUCTION("88F1" , mov(cl, dh));
TEST_INSTRUCTION("88D5" , mov(ch, dl));
TEST_INSTRUCTION("88F5" , mov(ch, dh));
TEST_INSTRUCTION("889C1180000000" , mov(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("88BC1180000000" , mov(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("889C1180000000" , mov(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("88BC1180000000" , mov(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6689D1" , mov(cx, dx));
TEST_INSTRUCTION("668EE2" , mov(fs, dx));
TEST_INSTRUCTION("66899C1180000000" , mov(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66899C1180000000" , mov(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("89D1" , mov(ecx, edx));
TEST_INSTRUCTION("8EE2" , mov(fs, edx));
TEST_INSTRUCTION("899C1180000000" , mov(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("899C1180000000" , mov(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("B101" , mov(cl, 1));
TEST_INSTRUCTION("B501" , mov(ch, 1));
TEST_INSTRUCTION("C684118000000001" , mov(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66B90100" , mov(cx, 1));
TEST_INSTRUCTION("66C78411800000000100" , mov(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("B901000000" , mov(ecx, 1));
TEST_INSTRUCTION("C784118000000001000000" , mov(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("8A8C1A80000000" , mov(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8A8C1A80000000" , mov(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8AAC1A80000000" , mov(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8AAC1A80000000" , mov(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("668CE1" , mov(cx, fs));
TEST_INSTRUCTION("668B8C1A80000000" , mov(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("668B8C1A80000000" , mov(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8CE1" , mov(ecx, fs));
TEST_INSTRUCTION("8B8C1A80000000" , mov(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8B8C1A80000000" , mov(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("8CA41180000000" , mov(ptr(ecx, edx, 0, 128), fs));
TEST_INSTRUCTION("668CA41180000000" , mov(word_ptr(ecx, edx, 0, 128), fs));
TEST_INSTRUCTION("8EA41A80000000" , mov(fs, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("668EA41A80000000" , mov(fs, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F20D1" , mov(ecx, cr2));
TEST_INSTRUCTION("0F21D1" , mov(ecx, dr2));
TEST_INSTRUCTION("0F22CA" , mov(cr1, edx));
TEST_INSTRUCTION("0F23CA" , mov(dr1, edx));
TEST_INSTRUCTION("660F38F08C1A80000000" , movbe(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38F08C1A80000000" , movbe(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F38F08C1A80000000" , movbe(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F38F08C1A80000000" , movbe(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660F38F19C1180000000" , movbe(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("660F38F19C1180000000" , movbe(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("0F38F19C1180000000" , movbe(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0F38F19C1180000000" , movbe(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("660F38F88C1A80000000" , movdir64b(zmmword_ptr(ecx), zmmword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0F38F99C1180000000" , movdiri(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0F38F99C1180000000" , movdiri(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0FC39C1180000000" , movnti(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0FC39C1180000000" , movnti(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("A4" , movs(byte_ptr(edi), byte_ptr(esi)));
TEST_INSTRUCTION("66A5" , movs(word_ptr(edi), word_ptr(esi)));
TEST_INSTRUCTION("A5" , movs(dword_ptr(edi), dword_ptr(esi)));
TEST_INSTRUCTION("660FBECA" , movsx(cx, dl));
TEST_INSTRUCTION("660FBECE" , movsx(cx, dh));
TEST_INSTRUCTION("660FBE8C1A80000000" , movsx(cx, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FBECA" , movsx(ecx, dl));
TEST_INSTRUCTION("0FBECE" , movsx(ecx, dh));
TEST_INSTRUCTION("0FBFCA" , movsx(ecx, dx));
TEST_INSTRUCTION("0FBE8C1A80000000" , movsx(ecx, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FBF8C1A80000000" , movsx(ecx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660FB6CA" , movzx(cx, dl));
TEST_INSTRUCTION("660FB6CE" , movzx(cx, dh));
TEST_INSTRUCTION("660FB68C1A80000000" , movzx(cx, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB6CA" , movzx(ecx, dl));
TEST_INSTRUCTION("0FB6CE" , movzx(ecx, dh));
TEST_INSTRUCTION("0FB7CA" , movzx(ecx, dx));
TEST_INSTRUCTION("0FB68C1A80000000" , movzx(ecx, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0FB78C1A80000000" , movzx(ecx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F6E1" , mul(ax, cl));
TEST_INSTRUCTION("F6E5" , mul(ax, ch));
TEST_INSTRUCTION("F6A41180000000" , mul(ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F6A41180000000" , mul(ax, byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7E1" , mul(dx, ax, cx));
TEST_INSTRUCTION("66F7A41180000000" , mul(dx, ax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7A41180000000" , mul(dx, ax, word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7E1" , mul(edx, eax, ecx));
TEST_INSTRUCTION("F7A41180000000" , mul(edx, eax, ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7A41180000000" , mul(edx, eax, dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("C4E26BF6CB" , mulx(ecx, edx, ebx, edx));
TEST_INSTRUCTION("C4E26BF68C2B80000000" , mulx(ecx, edx, ptr(ebx, ebp, 0, 128), edx));
TEST_INSTRUCTION("C4E26BF68C2B80000000" , mulx(ecx, edx, dword_ptr(ebx, ebp, 0, 128), edx));
TEST_INSTRUCTION("0F01C9" , mwait(eax, ecx));
TEST_INSTRUCTION("0F01FB" , mwaitx(eax, ecx, ebx));
TEST_INSTRUCTION("F6D9" , neg(cl));
TEST_INSTRUCTION("F6DD" , neg(ch));
TEST_INSTRUCTION("66F7D9" , neg(cx));
TEST_INSTRUCTION("F7D9" , neg(ecx));
TEST_INSTRUCTION("F69C1180000000" , neg(byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F79C1180000000" , neg(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F79C1180000000" , neg(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("90" , nop());
TEST_INSTRUCTION("660F1FC1" , nop(cx));
TEST_INSTRUCTION("0F1FC1" , nop(ecx));
TEST_INSTRUCTION("660F1F841180000000" , nop(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F1F841180000000" , nop(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("660F1FD1" , nop(cx, dx));
TEST_INSTRUCTION("660F1F9C1180000000" , nop(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("660F1F9C1180000000" , nop(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("0F1FD1" , nop(ecx, edx));
TEST_INSTRUCTION("0F1F9C1180000000" , nop(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0F1F9C1180000000" , nop(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("F6D1" , not_(cl));
TEST_INSTRUCTION("F6D5" , not_(ch));
TEST_INSTRUCTION("66F7D1" , not_(cx));
TEST_INSTRUCTION("F7D1" , not_(ecx));
TEST_INSTRUCTION("F6941180000000" , not_(byte_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("66F7941180000000" , not_(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F7941180000000" , not_(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("80C901" , or_(cl, 1));
TEST_INSTRUCTION("80CD01" , or_(ch, 1));
TEST_INSTRUCTION("808C118000000001" , or_(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("6683C901" , or_(cx, 1));
TEST_INSTRUCTION("66838C118000000001" , or_(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("83C901" , or_(ecx, 1));
TEST_INSTRUCTION("838C118000000001" , or_(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("08D1" , or_(cl, dl));
TEST_INSTRUCTION("08F1" , or_(cl, dh));
TEST_INSTRUCTION("08D5" , or_(ch, dl));
TEST_INSTRUCTION("08F5" , or_(ch, dh));
TEST_INSTRUCTION("089C1180000000" , or_(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("08BC1180000000" , or_(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("089C1180000000" , or_(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("08BC1180000000" , or_(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6609D1" , or_(cx, dx));
TEST_INSTRUCTION("66099C1180000000" , or_(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66099C1180000000" , or_(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("09D1" , or_(ecx, edx));
TEST_INSTRUCTION("099C1180000000" , or_(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("099C1180000000" , or_(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("0A8C1A80000000" , or_(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0A8C1A80000000" , or_(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0AAC1A80000000" , or_(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0AAC1A80000000" , or_(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660B8C1A80000000" , or_(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("660B8C1A80000000" , or_(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0B8C1A80000000" , or_(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("0B8C1A80000000" , or_(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("EE" , out(dx, al));
TEST_INSTRUCTION("66EF" , out(dx, ax));
TEST_INSTRUCTION("EF" , out(dx, eax));
TEST_INSTRUCTION("E601" , out(1, al));
TEST_INSTRUCTION("66E701" , out(1, ax));
TEST_INSTRUCTION("E701" , out(1, eax));
TEST_INSTRUCTION("6E" , outs(dx, byte_ptr(esi)));
TEST_INSTRUCTION("666F" , outs(dx, word_ptr(esi)));
TEST_INSTRUCTION("6F" , outs(dx, dword_ptr(esi)));
TEST_INSTRUCTION("F390" , pause());
TEST_INSTRUCTION("0F01C5" , pconfig());
TEST_INSTRUCTION("C4E26BF5CB" , pdep(ecx, edx, ebx));
TEST_INSTRUCTION("C4E26BF58C2B80000000" , pdep(ecx, edx, ptr(ebx, ebp, 0, 128)));
TEST_INSTRUCTION("C4E26BF58C2B80000000" , pdep(ecx, edx, dword_ptr(ebx, ebp, 0, 128)));
TEST_INSTRUCTION("C4E26AF5CB" , pext(ecx, edx, ebx));
TEST_INSTRUCTION("C4E26AF58C2B80000000" , pext(ecx, edx, ptr(ebx, ebp, 0, 128)));
TEST_INSTRUCTION("C4E26AF58C2B80000000" , pext(ecx, edx, dword_ptr(ebx, ebp, 0, 128)));
TEST_INSTRUCTION("6659" , pop(cx));
TEST_INSTRUCTION("668F841180000000" , pop(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("59" , pop(ecx));
TEST_INSTRUCTION("8F841180000000" , pop(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0FA1" , pop(fs));
TEST_INSTRUCTION("6661" , popa());
TEST_INSTRUCTION("61" , popad());
TEST_INSTRUCTION("66F30FB8CA" , popcnt(cx, dx));
TEST_INSTRUCTION("66F30FB88C1A80000000" , popcnt(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("66F30FB88C1A80000000" , popcnt(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30FB8CA" , popcnt(ecx, edx));
TEST_INSTRUCTION("F30FB88C1A80000000" , popcnt(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("F30FB88C1A80000000" , popcnt(ecx, dword_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("669D" , popf());
TEST_INSTRUCTION("9D" , popfd());
TEST_INSTRUCTION("0F0D841180000000" , prefetch(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F18841180000000" , prefetchnta(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F188C1180000000" , prefetcht0(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F18941180000000" , prefetcht1(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F189C1180000000" , prefetcht2(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F0D8C1180000000" , prefetchw(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0F0D941180000000" , prefetchwt1(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F30FAEE1" , ptwrite(ecx));
TEST_INSTRUCTION("F30FAEA41180000000" , ptwrite(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F30FAEA41180000000" , ptwrite(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("6651" , push(cx));
TEST_INSTRUCTION("6A01" , push(1));
TEST_INSTRUCTION("66FFB41180000000" , push(word_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("51" , push(ecx));
TEST_INSTRUCTION("FFB41180000000" , push(dword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("0FA0" , push(fs));
TEST_INSTRUCTION("6660" , pusha());
TEST_INSTRUCTION("60" , pushad());
TEST_INSTRUCTION("669C" , pushf());
TEST_INSTRUCTION("9C" , pushfd());
TEST_INSTRUCTION("F20F01FF" , pvalidate());
TEST_INSTRUCTION("D2D1" , rcl(cl, cl));
TEST_INSTRUCTION("D0D1" , rcl(cl, 1));
TEST_INSTRUCTION("D2D5" , rcl(ch, cl));
TEST_INSTRUCTION("D0D5" , rcl(ch, 1));
TEST_INSTRUCTION("66D3D1" , rcl(cx, cl));
TEST_INSTRUCTION("66D1D1" , rcl(cx, 1));
TEST_INSTRUCTION("D3D1" , rcl(ecx, cl));
TEST_INSTRUCTION("D1D1" , rcl(ecx, 1));
TEST_INSTRUCTION("D2941180000000" , rcl(byte_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D0941180000000" , rcl(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66D3941180000000" , rcl(word_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("66D1941180000000" , rcl(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D3941180000000" , rcl(dword_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D1941180000000" , rcl(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D2D9" , rcr(cl, cl));
TEST_INSTRUCTION("D0D9" , rcr(cl, 1));
TEST_INSTRUCTION("D2DD" , rcr(ch, cl));
TEST_INSTRUCTION("D0DD" , rcr(ch, 1));
TEST_INSTRUCTION("66D3D9" , rcr(cx, cl));
TEST_INSTRUCTION("66D1D9" , rcr(cx, 1));
TEST_INSTRUCTION("D3D9" , rcr(ecx, cl));
TEST_INSTRUCTION("D1D9" , rcr(ecx, 1));
TEST_INSTRUCTION("D29C1180000000" , rcr(byte_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D09C1180000000" , rcr(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66D39C1180000000" , rcr(word_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("66D19C1180000000" , rcr(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D39C1180000000" , rcr(dword_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D19C1180000000" , rcr(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("0F32" , rdmsr(edx, eax, ecx));
TEST_INSTRUCTION("F30FC7F9" , rdpid(ecx));
TEST_INSTRUCTION("0F01EE" , rdpkru(edx, eax, ecx));
TEST_INSTRUCTION("0F33" , rdpmc(edx, eax, ecx));
TEST_INSTRUCTION("0F01FD" , rdpru(edx, eax, ecx));
TEST_INSTRUCTION("660FC7F1" , rdrand(cx));
TEST_INSTRUCTION("0FC7F1" , rdrand(ecx));
TEST_INSTRUCTION("660FC7F9" , rdseed(cx));
TEST_INSTRUCTION("0FC7F9" , rdseed(ecx));
TEST_INSTRUCTION("F30F1EC9" , rdsspd(ecx));
TEST_INSTRUCTION("0F31" , rdtsc(edx, eax));
TEST_INSTRUCTION("0F01F9" , rdtscp(edx, eax, ecx));
TEST_INSTRUCTION("C3" , ret());
TEST_INSTRUCTION("C20100" , ret(1));
TEST_INSTRUCTION("CB" , retf());
TEST_INSTRUCTION("CA0100" , retf(1));
TEST_INSTRUCTION("D2C1" , rol(cl, cl));
TEST_INSTRUCTION("D0C1" , rol(cl, 1));
TEST_INSTRUCTION("D2C5" , rol(ch, cl));
TEST_INSTRUCTION("D0C5" , rol(ch, 1));
TEST_INSTRUCTION("66D3C1" , rol(cx, cl));
TEST_INSTRUCTION("66D1C1" , rol(cx, 1));
TEST_INSTRUCTION("D3C1" , rol(ecx, cl));
TEST_INSTRUCTION("D1C1" , rol(ecx, 1));
TEST_INSTRUCTION("D2841180000000" , rol(byte_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D0841180000000" , rol(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66D3841180000000" , rol(word_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("66D1841180000000" , rol(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D3841180000000" , rol(dword_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D1841180000000" , rol(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D2C9" , ror(cl, cl));
TEST_INSTRUCTION("D0C9" , ror(cl, 1));
TEST_INSTRUCTION("D2CD" , ror(ch, cl));
TEST_INSTRUCTION("D0CD" , ror(ch, 1));
TEST_INSTRUCTION("66D3C9" , ror(cx, cl));
TEST_INSTRUCTION("66D1C9" , ror(cx, 1));
TEST_INSTRUCTION("D3C9" , ror(ecx, cl));
TEST_INSTRUCTION("D1C9" , ror(ecx, 1));
TEST_INSTRUCTION("D28C1180000000" , ror(byte_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D08C1180000000" , ror(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66D38C1180000000" , ror(word_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("66D18C1180000000" , ror(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D38C1180000000" , ror(dword_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D18C1180000000" , ror(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("C4E37BF0CA01" , rorx(ecx, edx, 1));
TEST_INSTRUCTION("C4E37BF08C1A8000000001" , rorx(ecx, ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("C4E37BF08C1A8000000001" , rorx(ecx, dword_ptr(edx, ebx, 0, 128), 1));
TEST_INSTRUCTION("0FAA" , rsm());
TEST_INSTRUCTION("F30F01AC1180000000" , rstorssp(ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("F30F01AC1180000000" , rstorssp(qword_ptr(ecx, edx, 0, 128)));
TEST_INSTRUCTION("9E" , sahf(ah));
TEST_INSTRUCTION("D2E1" , sal(cl, cl));
TEST_INSTRUCTION("D0E1" , sal(cl, 1));
TEST_INSTRUCTION("D2E5" , sal(ch, cl));
TEST_INSTRUCTION("D0E5" , sal(ch, 1));
TEST_INSTRUCTION("66D3E1" , sal(cx, cl));
TEST_INSTRUCTION("66D1E1" , sal(cx, 1));
TEST_INSTRUCTION("D3E1" , sal(ecx, cl));
TEST_INSTRUCTION("D1E1" , sal(ecx, 1));
TEST_INSTRUCTION("D2A41180000000" , sal(byte_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D0A41180000000" , sal(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66D3A41180000000" , sal(word_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("66D1A41180000000" , sal(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D3A41180000000" , sal(dword_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D1A41180000000" , sal(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D2F9" , sar(cl, cl));
TEST_INSTRUCTION("D0F9" , sar(cl, 1));
TEST_INSTRUCTION("D2FD" , sar(ch, cl));
TEST_INSTRUCTION("D0FD" , sar(ch, 1));
TEST_INSTRUCTION("66D3F9" , sar(cx, cl));
TEST_INSTRUCTION("66D1F9" , sar(cx, 1));
TEST_INSTRUCTION("D3F9" , sar(ecx, cl));
TEST_INSTRUCTION("D1F9" , sar(ecx, 1));
TEST_INSTRUCTION("D2BC1180000000" , sar(byte_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D0BC1180000000" , sar(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("66D3BC1180000000" , sar(word_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("66D1BC1180000000" , sar(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("D3BC1180000000" , sar(dword_ptr(ecx, edx, 0, 128), cl));
TEST_INSTRUCTION("D1BC1180000000" , sar(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("C4E262F7CA" , sarx(ecx, edx, ebx));
TEST_INSTRUCTION("C4E25AF78C1A80000000" , sarx(ecx, ptr(edx, ebx, 0, 128), esp));
TEST_INSTRUCTION("C4E25AF78C1A80000000" , sarx(ecx, dword_ptr(edx, ebx, 0, 128), esp));
TEST_INSTRUCTION("F30F01EA" , saveprevssp());
TEST_INSTRUCTION("80D901" , sbb(cl, 1));
TEST_INSTRUCTION("80DD01" , sbb(ch, 1));
TEST_INSTRUCTION("809C118000000001" , sbb(byte_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("6683D901" , sbb(cx, 1));
TEST_INSTRUCTION("66839C118000000001" , sbb(word_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("83D901" , sbb(ecx, 1));
TEST_INSTRUCTION("839C118000000001" , sbb(dword_ptr(ecx, edx, 0, 128), 1));
TEST_INSTRUCTION("18D1" , sbb(cl, dl));
TEST_INSTRUCTION("18F1" , sbb(cl, dh));
TEST_INSTRUCTION("18D5" , sbb(ch, dl));
TEST_INSTRUCTION("18F5" , sbb(ch, dh));
TEST_INSTRUCTION("189C1180000000" , sbb(ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("18BC1180000000" , sbb(ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("189C1180000000" , sbb(byte_ptr(ecx, edx, 0, 128), bl));
TEST_INSTRUCTION("18BC1180000000" , sbb(byte_ptr(ecx, edx, 0, 128), bh));
TEST_INSTRUCTION("6619D1" , sbb(cx, dx));
TEST_INSTRUCTION("66199C1180000000" , sbb(ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("66199C1180000000" , sbb(word_ptr(ecx, edx, 0, 128), bx));
TEST_INSTRUCTION("19D1" , sbb(ecx, edx));
TEST_INSTRUCTION("199C1180000000" , sbb(ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("199C1180000000" , sbb(dword_ptr(ecx, edx, 0, 128), ebx));
TEST_INSTRUCTION("1A8C1A80000000" , sbb(cl, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("1A8C1A80000000" , sbb(cl, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("1AAC1A80000000" , sbb(ch, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("1AAC1A80000000" , sbb(ch, byte_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("661B8C1A80000000" , sbb(cx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("661B8C1A80000000" , sbb(cx, word_ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("1B8C1A80000000" , sbb(ecx, ptr(edx, ebx, 0, 128)));
TEST_INSTRUCTION("1B8C1A80000000" , sbb(ecx, dword_ptr(edx, ebx, 0, 128)));