forked from asmjit/asmjit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathasmjit_test_assembler_a64.cpp
More file actions
4057 lines (4035 loc) · 236 KB
/
Copy pathasmjit_test_assembler_a64.cpp
File metadata and controls
4057 lines (4035 loc) · 236 KB
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/core.h> or LICENSE.md for license and copyright information
// SPDX-License-Identifier: Zlib
#include <asmjit/core.h>
#if !defined(ASMJIT_NO_AARCH64)
#include <asmjit/a64.h>
#include <asmjit-testing/tests/asmjit_test_assembler.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace asmjit;
#define TEST_INSTRUCTION(OPCODE, ...) \
tester.test_valid_instruction(#__VA_ARGS__, OPCODE, tester.assembler.__VA_ARGS__)
static void ASMJIT_NOINLINE test_aarch64_assembler_base(AssemblerTester<a64::Assembler>& tester) noexcept {
using namespace a64;
TEST_INSTRUCTION("4120C05A", abs(w1, w2));
TEST_INSTRUCTION("4120C0DA", abs(x1, x2));
TEST_INSTRUCTION("4100031A", adc(w1, w2, w3));
TEST_INSTRUCTION("4100039A", adc(x1, x2, x3));
TEST_INSTRUCTION("E103031A", adc(w1, wzr, w3));
TEST_INSTRUCTION("E103039A", adc(x1, xzr, x3));
TEST_INSTRUCTION("5F00031A", adc(wzr, w2, w3));
TEST_INSTRUCTION("5F00039A", adc(xzr, x2, x3));
TEST_INSTRUCTION("4100033A", adcs(w1, w2, w3));
TEST_INSTRUCTION("410003BA", adcs(x1, x2, x3));
TEST_INSTRUCTION("4100030B", add(w1, w2, w3));
TEST_INSTRUCTION("4100038B", add(x1, x2, x3));
TEST_INSTRUCTION("410C030B", add(w1, w2, w3, lsl(3)));
TEST_INSTRUCTION("410C038B", add(x1, x2, x3, lsl(3)));
TEST_INSTRUCTION("FF030411", add(wsp, wsp, 256));
TEST_INSTRUCTION("FFFF3F11", add(wsp, wsp, 0xFFF));
TEST_INSTRUCTION("FF030491", add(sp, sp, 256));
TEST_INSTRUCTION("FFFF3F91", add(sp, sp, 0xFFF));
TEST_INSTRUCTION("E103030B", add(w1, wzr, w3));
TEST_INSTRUCTION("E103038B", add(x1, xzr, x3));
TEST_INSTRUCTION("5F00030B", add(wzr, w2, w3));
TEST_INSTRUCTION("5F00038B", add(xzr, x2, x3));
TEST_INSTRUCTION("4140238B", add(x1, x2, w3, uxtw(0)));
TEST_INSTRUCTION("83004011", add(w3, w4, 0, lsl(12)));
TEST_INSTRUCTION("83004091", add(x3, x4, 0, lsl(12)));
TEST_INSTRUCTION("83005011", add(w3, w4, 1024, lsl(12)));
TEST_INSTRUCTION("83005091", add(x3, x4, 1024, lsl(12)));
TEST_INSTRUCTION("83005011", add(w3, w4, 1024, lsl(12)));
TEST_INSTRUCTION("83005091", add(x3, x4, 1024, lsl(12)));
TEST_INSTRUCTION("FF830091", add(sp, sp, 32));
TEST_INSTRUCTION("412C8291", addg(x1, x2, 32, 11));
TEST_INSTRUCTION("5F2C8291", addg(sp, x2, 32, 11));
TEST_INSTRUCTION("E12F8291", addg(x1, sp, 32, 11));
TEST_INSTRUCTION("4100032B", adds(w1, w2, w3));
TEST_INSTRUCTION("410003AB", adds(x1, x2, x3));
TEST_INSTRUCTION("01000010", adr(x1, 0));
TEST_INSTRUCTION("01080010", adr(x1, 256));
TEST_INSTRUCTION("010000B0", adrp(x1, 4096));
TEST_INSTRUCTION("4100030A", and_(w1, w2, w3));
TEST_INSTRUCTION("4100038A", and_(x1, x2, x3));
TEST_INSTRUCTION("41000012", and_(w1, w2, 1));
TEST_INSTRUCTION("41004092", and_(x1, x2, 1));
TEST_INSTRUCTION("410C0012", and_(w1, w2, 15));
TEST_INSTRUCTION("410C4092", and_(x1, x2, 15));
TEST_INSTRUCTION("3F1C0012", and_(wsp, w1, 0xFF));
TEST_INSTRUCTION("3F1C4092", and_(sp, x1, 0xFF));
TEST_INSTRUCTION("E103030A", and_(w1, wzr, w3));
TEST_INSTRUCTION("E103038A", and_(x1, xzr, x3));
TEST_INSTRUCTION("5F00030A", and_(wzr, w2, w3));
TEST_INSTRUCTION("5F00038A", and_(xzr, x2, x3));
TEST_INSTRUCTION("00000012", and_(w0, w0, 0x1));
TEST_INSTRUCTION("00004092", and_(x0, x0, 0x1));
TEST_INSTRUCTION("410C0012", and_(w1, w2, 0xf));
TEST_INSTRUCTION("410C4092", and_(x1, x2, 0xf));
TEST_INSTRUCTION("BFEC7C92", and_(sp, x5, 0xfffffffffffffff0));
TEST_INSTRUCTION("4100036A", ands(w1, w2, w3));
TEST_INSTRUCTION("410003EA", ands(x1, x2, x3));
TEST_INSTRUCTION("E103036A", ands(w1, wzr, w3));
TEST_INSTRUCTION("E10303EA", ands(x1, xzr, x3));
TEST_INSTRUCTION("5F00036A", ands(wzr, w2, w3));
TEST_INSTRUCTION("5F0003EA", ands(xzr, x2, x3));
TEST_INSTRUCTION("00000072", ands(w0, w0, 0x1));
TEST_INSTRUCTION("000040F2", ands(x0, x0, 0x1));
TEST_INSTRUCTION("410C0072", ands(w1, w2, 0xf));
TEST_INSTRUCTION("410C40F2", ands(x1, x2, 0xf));
TEST_INSTRUCTION("417C0F13", asr(w1, w2, 15));
TEST_INSTRUCTION("41FC4F93", asr(x1, x2, 15));
TEST_INSTRUCTION("4128C31A", asrv(w1, w2, w3));
TEST_INSTRUCTION("4128C39A", asrv(x1, x2, x3));
TEST_INSTRUCTION("4F7808D5", at(Predicate::AT::kS1E0R, x15));
TEST_INSTRUCTION("4118C1DA", autda(x1, x2));
TEST_INSTRUCTION("E11BC1DA", autda(x1, sp));
TEST_INSTRUCTION("411CC1DA", autdb(x1, x2));
TEST_INSTRUCTION("E11FC1DA", autdb(x1, sp));
TEST_INSTRUCTION("E13BC1DA", autdza(x1));
TEST_INSTRUCTION("F43BC1DA", autdza(x20));
TEST_INSTRUCTION("E13FC1DA", autdzb(x1));
TEST_INSTRUCTION("F43FC1DA", autdzb(x20));
TEST_INSTRUCTION("4110C1DA", autia(x1, x2));
TEST_INSTRUCTION("E113C1DA", autia(x1, sp));
TEST_INSTRUCTION("9F2103D5", autia1716());
TEST_INSTRUCTION("BF2303D5", autiasp());
TEST_INSTRUCTION("9F2303D5", autiaz());
TEST_INSTRUCTION("4114C1DA", autib(x1, x2));
TEST_INSTRUCTION("E117C1DA", autib(x1, sp));
TEST_INSTRUCTION("DF2103D5", autib1716());
TEST_INSTRUCTION("FF2303D5", autibsp());
TEST_INSTRUCTION("DF2303D5", autibz());
TEST_INSTRUCTION("E133C1DA", autiza(x1));
TEST_INSTRUCTION("F433C1DA", autiza(x20));
TEST_INSTRUCTION("E137C1DA", autizb(x1));
TEST_INSTRUCTION("F437C1DA", autizb(x20));
TEST_INSTRUCTION("5F4000D5", axflag());
TEST_INSTRUCTION("E13F1833", bfc(w1, 8, 16));
TEST_INSTRUCTION("E13F78B3", bfc(x1, 8, 16));
TEST_INSTRUCTION("413C1833", bfi(w1, w2, 8, 16));
TEST_INSTRUCTION("413C78B3", bfi(x1, x2, 8, 16));
TEST_INSTRUCTION("41400833", bfm(w1, w2, 8, 16));
TEST_INSTRUCTION("414048B3", bfm(x1, x2, 8, 16));
TEST_INSTRUCTION("415C0833", bfxil(w1, w2, 8, 16));
TEST_INSTRUCTION("415C48B3", bfxil(x1, x2, 8, 16));
TEST_INSTRUCTION("41781F12", bic(w1, w2, 1));
TEST_INSTRUCTION("41F87F92", bic(x1, x2, 1));
TEST_INSTRUCTION("416C1C12", bic(w1, w2, 15));
TEST_INSTRUCTION("41EC7C92", bic(x1, x2, 15));
TEST_INSTRUCTION("4110230A", bic(w1, w2, w3, lsl(4)));
TEST_INSTRUCTION("4110238A", bic(x1, x2, x3, lsl(4)));
TEST_INSTRUCTION("E103230A", bic(w1, wzr, w3));
TEST_INSTRUCTION("E103238A", bic(x1, xzr, x3));
TEST_INSTRUCTION("41781F72", bics(w1, w2, 1));
TEST_INSTRUCTION("41F87FF2", bics(x1, x2, 1));
TEST_INSTRUCTION("416C1C72", bics(w1, w2, 15));
TEST_INSTRUCTION("41EC7CF2", bics(x1, x2, 15));
TEST_INSTRUCTION("4110236A", bics(w1, w2, w3, lsl(4)));
TEST_INSTRUCTION("411023EA", bics(x1, x2, x3, lsl(4)));
TEST_INSTRUCTION("E103236A", bics(w1, wzr, w3));
TEST_INSTRUCTION("E10323EA", bics(x1, xzr, x3));
TEST_INSTRUCTION("60031FD6", br(x27));
TEST_INSTRUCTION("E0031FD6", br(xzr));
TEST_INSTRUCTION("200020D4", brk(1));
TEST_INSTRUCTION("DF2403D5", bti(Predicate::BTI::kJC));
TEST_INSTRUCTION("627CA188", cas(w1, w2, ptr(x3)));
TEST_INSTRUCTION("627CA1C8", cas(x1, x2, ptr(x3)));
TEST_INSTRUCTION("627CE188", casa(w1, w2, ptr(x3)));
TEST_INSTRUCTION("627CE1C8", casa(x1, x2, ptr(x3)));
TEST_INSTRUCTION("627CE108", casab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("627CE148", casah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("62FCE188", casal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("62FCE1C8", casal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("62FCE108", casalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("62FCE148", casalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("627CA108", casb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("627CA148", cash(w1, w2, ptr(x3)));
TEST_INSTRUCTION("62FCA188", casl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("62FCA1C8", casl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("62FCA108", caslb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("62FCA148", caslh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("687C2208", casp(w2, w3, w8, w9, ptr(x3)));
TEST_INSTRUCTION("687C2248", casp(x2, x3, x8, x9, ptr(x3)));
TEST_INSTRUCTION("687C6208", caspa(w2, w3, w8, w9, ptr(x3)));
TEST_INSTRUCTION("687C6248", caspa(x2, x3, x8, x9, ptr(x3)));
TEST_INSTRUCTION("68FC6208", caspal(w2, w3, w8, w9, ptr(x3)));
TEST_INSTRUCTION("68FC6248", caspal(x2, x3, x8, x9, ptr(x3)));
TEST_INSTRUCTION("68FC2208", caspl(w2, w3, w8, w9, ptr(x3)));
TEST_INSTRUCTION("68FC2248", caspl(x2, x3, x8, x9, ptr(x3)));
TEST_INSTRUCTION("2300423A", ccmn(w1, w2, 3, CondCode::kEQ));
TEST_INSTRUCTION("230042BA", ccmn(x1, x2, 3, CondCode::kEQ));
TEST_INSTRUCTION("2308423A", ccmn(w1, 2, 3, CondCode::kEQ));
TEST_INSTRUCTION("230842BA", ccmn(x1, 2, 3, CondCode::kEQ));
TEST_INSTRUCTION("23005F3A", ccmn(w1, wzr, 3, CondCode::kEQ));
TEST_INSTRUCTION("23005FBA", ccmn(x1, xzr, 3, CondCode::kEQ));
TEST_INSTRUCTION("2300427A", ccmp(w1, w2, 3, CondCode::kEQ));
TEST_INSTRUCTION("230042FA", ccmp(x1, x2, 3, CondCode::kEQ));
TEST_INSTRUCTION("2308427A", ccmp(w1, 2, 3, CondCode::kEQ));
TEST_INSTRUCTION("230842FA", ccmp(x1, 2, 3, CondCode::kEQ));
TEST_INSTRUCTION("23005F7A", ccmp(w1, wzr, 3, CondCode::kEQ));
TEST_INSTRUCTION("23005FFA", ccmp(x1, xzr, 3, CondCode::kEQ));
TEST_INSTRUCTION("1F4000D5", cfinv());
TEST_INSTRUCTION("4114821A", cinc(w1, w2, CondCode::kEQ));
TEST_INSTRUCTION("4114829A", cinc(x1, x2, CondCode::kEQ));
TEST_INSTRUCTION("5F14821A", cinc(wzr, w2, CondCode::kEQ));
TEST_INSTRUCTION("E1179F1A", cinc(w1, wzr, CondCode::kEQ));
TEST_INSTRUCTION("5F14829A", cinc(xzr, x2, CondCode::kEQ));
TEST_INSTRUCTION("E1179F9A", cinc(x1, xzr, CondCode::kEQ));
TEST_INSTRUCTION("4110825A", cinv(w1, w2, CondCode::kEQ));
TEST_INSTRUCTION("411082DA", cinv(x1, x2, CondCode::kEQ));
TEST_INSTRUCTION("5F10825A", cinv(wzr, w2, CondCode::kEQ));
TEST_INSTRUCTION("E1139F5A", cinv(w1, wzr, CondCode::kEQ));
TEST_INSTRUCTION("5F1082DA", cinv(xzr, x2, CondCode::kEQ));
TEST_INSTRUCTION("E1139FDA", cinv(x1, xzr, CondCode::kEQ));
TEST_INSTRUCTION("DF2203D5", clrbhb());
TEST_INSTRUCTION("1F2503D5", chkfeat(x16));
TEST_INSTRUCTION("5F3B03D5", clrex(11));
TEST_INSTRUCTION("4114C05A", cls(w1, w2));
TEST_INSTRUCTION("4114C0DA", cls(x1, x2));
TEST_INSTRUCTION("E117C05A", cls(w1, wzr));
TEST_INSTRUCTION("E117C0DA", cls(x1, xzr));
TEST_INSTRUCTION("5F14C05A", cls(wzr, w2));
TEST_INSTRUCTION("5F14C0DA", cls(xzr, x2));
TEST_INSTRUCTION("4110C05A", clz(w1, w2));
TEST_INSTRUCTION("4110C0DA", clz(x1, x2));
TEST_INSTRUCTION("E113C05A", clz(w1, wzr));
TEST_INSTRUCTION("E113C0DA", clz(x1, xzr));
TEST_INSTRUCTION("5F10C05A", clz(wzr, w2));
TEST_INSTRUCTION("5F10C0DA", clz(xzr, x2));
TEST_INSTRUCTION("3F840031", cmn(w1, 33));
TEST_INSTRUCTION("3FFC4331", cmn(w1, 0xFF000));
TEST_INSTRUCTION("FF030231", cmn(wsp, 128));
TEST_INSTRUCTION("3F8400B1", cmn(x1, 33));
TEST_INSTRUCTION("3FFC43B1", cmn(x1, 0xFF000));
TEST_INSTRUCTION("FF0302B1", cmn(sp, 128));
TEST_INSTRUCTION("3F00022B", cmn(w1, w2));
TEST_INSTRUCTION("3F0002AB", cmn(x1, x2));
TEST_INSTRUCTION("3F08222B", cmn(w1, w2, uxtb(2)));
TEST_INSTRUCTION("3F0822AB", cmn(x1, w2, uxtb(2)));
TEST_INSTRUCTION("5F4023AB", cmn(x2, w3, uxtw(0)));
TEST_INSTRUCTION("FF43212B", cmn(wsp, w1));
TEST_INSTRUCTION("FF07212B", cmn(wsp, w1, uxtb(1)));
TEST_INSTRUCTION("FF6321AB", cmn(sp, x1));
TEST_INSTRUCTION("FF6721AB", cmn(sp, x1, uxtx(1)));
TEST_INSTRUCTION("3F840071", cmp(w1, 33));
TEST_INSTRUCTION("3FFC4371", cmp(w1, 0xFF000));
TEST_INSTRUCTION("FF030271", cmp(wsp, 128));
TEST_INSTRUCTION("3F8400F1", cmp(x1, 33));
TEST_INSTRUCTION("3FFC43F1", cmp(x1, 0xFF000));
TEST_INSTRUCTION("FF0302F1", cmp(sp, 128));
TEST_INSTRUCTION("3F00026B", cmp(w1, w2));
TEST_INSTRUCTION("3F0002EB", cmp(x1, x2));
TEST_INSTRUCTION("3F08226B", cmp(w1, w2, uxtb(2)));
TEST_INSTRUCTION("3F0822EB", cmp(x1, w2, uxtb(2)));
TEST_INSTRUCTION("5F4023EB", cmp(x2, w3, uxtw(0)));
TEST_INSTRUCTION("FF43216B", cmp(wsp, w1));
TEST_INSTRUCTION("FF07216B", cmp(wsp, w1, uxtb(1)));
TEST_INSTRUCTION("FF6321EB", cmp(sp, x1));
TEST_INSTRUCTION("FF6721EB", cmp(sp, x1, uxtx(1)));
TEST_INSTRUCTION("3F00C2BA", cmpp(x1, x2));
TEST_INSTRUCTION("3F00DFBA", cmpp(x1, sp));
TEST_INSTRUCTION("FF03C2BA", cmpp(sp, x2));
TEST_INSTRUCTION("FF03DFBA", cmpp(sp, sp));
TEST_INSTRUCTION("411CC05A", cnt(w1, w2));
TEST_INSTRUCTION("411CC0DA", cnt(x1, x2));
TEST_INSTRUCTION("4140C31A", crc32b(w1, w2, w3));
TEST_INSTRUCTION("5F40C31A", crc32b(wzr, w2, w3));
TEST_INSTRUCTION("E143C31A", crc32b(w1, wzr, w3));
TEST_INSTRUCTION("4140DF1A", crc32b(w1, w2, wzr));
TEST_INSTRUCTION("4150C31A", crc32cb(w1, w2, w3));
TEST_INSTRUCTION("5F50C31A", crc32cb(wzr, w2, w3));
TEST_INSTRUCTION("E153C31A", crc32cb(w1, wzr, w3));
TEST_INSTRUCTION("4150DF1A", crc32cb(w1, w2, wzr));
TEST_INSTRUCTION("4154C31A", crc32ch(w1, w2, w3));
TEST_INSTRUCTION("5F54C31A", crc32ch(wzr, w2, w3));
TEST_INSTRUCTION("E157C31A", crc32ch(w1, wzr, w3));
TEST_INSTRUCTION("4154DF1A", crc32ch(w1, w2, wzr));
TEST_INSTRUCTION("4158C31A", crc32cw(w1, w2, w3));
TEST_INSTRUCTION("5F58C31A", crc32cw(wzr, w2, w3));
TEST_INSTRUCTION("E15BC31A", crc32cw(w1, wzr, w3));
TEST_INSTRUCTION("4158DF1A", crc32cw(w1, w2, wzr));
TEST_INSTRUCTION("415CC39A", crc32cx(w1, w2, x3));
TEST_INSTRUCTION("5F5CC39A", crc32cx(wzr, w2, x3));
TEST_INSTRUCTION("E15FC39A", crc32cx(w1, wzr, x3));
TEST_INSTRUCTION("415CDF9A", crc32cx(w1, w2, xzr));
TEST_INSTRUCTION("4144C31A", crc32h(w1, w2, w3));
TEST_INSTRUCTION("5F44C31A", crc32h(wzr, w2, w3));
TEST_INSTRUCTION("E147C31A", crc32h(w1, wzr, w3));
TEST_INSTRUCTION("4144DF1A", crc32h(w1, w2, wzr));
TEST_INSTRUCTION("4148C31A", crc32w(w1, w2, w3));
TEST_INSTRUCTION("5F48C31A", crc32w(wzr, w2, w3));
TEST_INSTRUCTION("E14BC31A", crc32w(w1, wzr, w3));
TEST_INSTRUCTION("4148DF1A", crc32w(w1, w2, wzr));
TEST_INSTRUCTION("414CC39A", crc32x(w1, w2, x3));
TEST_INSTRUCTION("5F4CC39A", crc32x(wzr, w2, x3));
TEST_INSTRUCTION("E14FC39A", crc32x(w1, wzr, x3));
TEST_INSTRUCTION("414CDF9A", crc32x(w1, w2, xzr));
TEST_INSTRUCTION("9F2203D5", csdb());
TEST_INSTRUCTION("4100831A", csel(w1, w2, w3, CondCode::kEQ));
TEST_INSTRUCTION("4100839A", csel(x1, x2, x3, CondCode::kEQ));
TEST_INSTRUCTION("E1179F1A", cset(w1, CondCode::kEQ));
TEST_INSTRUCTION("E1179F9A", cset(x1, CondCode::kEQ));
TEST_INSTRUCTION("E1179F1A", cset(w1, CondCode::kEQ));
TEST_INSTRUCTION("E1179F9A", cset(x1, CondCode::kEQ));
TEST_INSTRUCTION("E1139F5A", csetm(w1, CondCode::kEQ));
TEST_INSTRUCTION("E1139FDA", csetm(x1, CondCode::kEQ));
TEST_INSTRUCTION("4104831A", csinc(w1, w2, w3, CondCode::kEQ));
TEST_INSTRUCTION("4104839A", csinc(x1, x2, x3, CondCode::kEQ));
TEST_INSTRUCTION("4100835A", csinv(w1, w2, w3, CondCode::kEQ));
TEST_INSTRUCTION("410083DA", csinv(x1, x2, x3, CondCode::kEQ));
TEST_INSTRUCTION("4104835A", csneg(w1, w2, w3, CondCode::kEQ));
TEST_INSTRUCTION("410483DA", csneg(x1, x2, x3, CondCode::kEQ));
TEST_INSTRUCTION("4118C05A", ctz(w1, w2));
TEST_INSTRUCTION("4118C0DA", ctz(x1, x2));
TEST_INSTRUCTION("2F740BD5", dc(Predicate::DC::kZVA, x15));
TEST_INSTRUCTION("2100B0D4", dcps1(0x8001));
TEST_INSTRUCTION("2200B0D4", dcps2(0x8001));
TEST_INSTRUCTION("2300B0D4", dcps3(0x8001));
TEST_INSTRUCTION("DF2003D5", dgh());
TEST_INSTRUCTION("BF3103D5", dmb(1));
TEST_INSTRUCTION("E003BFD6", drps());
TEST_INSTRUCTION("9F3103D5", dsb(1));
TEST_INSTRUCTION("4100234A", eon(w1, w2, w3));
TEST_INSTRUCTION("5F00234A", eon(wzr, w2, w3));
TEST_INSTRUCTION("E103234A", eon(w1, wzr, w3));
TEST_INSTRUCTION("41003F4A", eon(w1, w2, wzr));
TEST_INSTRUCTION("4110234A", eon(w1, w2, w3, lsl(4)));
TEST_INSTRUCTION("410023CA", eon(x1, x2, x3));
TEST_INSTRUCTION("5F0023CA", eon(xzr, x2, x3));
TEST_INSTRUCTION("E10323CA", eon(x1, xzr, x3));
TEST_INSTRUCTION("41003FCA", eon(x1, x2, xzr));
TEST_INSTRUCTION("411023CA", eon(x1, x2, x3, lsl(4)));
TEST_INSTRUCTION("4100034A", eor(w1, w2, w3));
TEST_INSTRUCTION("5F00034A", eor(wzr, w2, w3));
TEST_INSTRUCTION("E103034A", eor(w1, wzr, w3));
TEST_INSTRUCTION("41001F4A", eor(w1, w2, wzr));
TEST_INSTRUCTION("410003CA", eor(x1, x2, x3));
TEST_INSTRUCTION("5F0003CA", eor(xzr, x2, x3));
TEST_INSTRUCTION("E10303CA", eor(x1, xzr, x3));
TEST_INSTRUCTION("41001FCA", eor(x1, x2, xzr));
TEST_INSTRUCTION("4110034A", eor(w1, w2, w3, lsl(4)));
TEST_INSTRUCTION("411003CA", eor(x1, x2, x3, lsl(4)));
TEST_INSTRUCTION("3F1C0052", eor(wsp, w1, 0xFF));
TEST_INSTRUCTION("FF1F0052", eor(wsp, wzr, 0xFF));
TEST_INSTRUCTION("3F1C40D2", eor(sp, x1, 0xFF));
TEST_INSTRUCTION("FF1F40D2", eor(sp, xzr, 0xFF));
TEST_INSTRUCTION("41001252", eor(w1, w2, 0x4000));
TEST_INSTRUCTION("410071D2", eor(x1, x2, 0x8000));
TEST_INSTRUCTION("E0039FD6", eret());
TEST_INSTRUCTION("1F2203D5", esb());
TEST_INSTRUCTION("413C8313", extr(w1, w2, w3, 15));
TEST_INSTRUCTION("5F3C8313", extr(wzr, w2, w3, 15));
TEST_INSTRUCTION("E13F8313", extr(w1, wzr, w3, 15));
TEST_INSTRUCTION("413C9F13", extr(w1, w2, wzr, 15));
TEST_INSTRUCTION("413CC393", extr(x1, x2, x3, 15));
TEST_INSTRUCTION("5F3CC393", extr(xzr, x2, x3, 15));
TEST_INSTRUCTION("E13FC393", extr(x1, xzr, x3, 15));
TEST_INSTRUCTION("413CDF93", extr(x1, x2, xzr, 15));
TEST_INSTRUCTION("4114C39A", gmi(x1, x2, x3));
TEST_INSTRUCTION("E117C39A", gmi(x1, sp, x3));
TEST_INSTRUCTION("200040D4", hlt(1));
TEST_INSTRUCTION("220000D4", hvc(1));
TEST_INSTRUCTION("2F750BD5", ic(Predicate::IC::kIVAU, x15));
TEST_INSTRUCTION("DF3103D5", isb(1));
TEST_INSTRUCTION("620021B8", ldadd(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E20321B8", ldadd(w1, w2, ptr(sp)));
TEST_INSTRUCTION("620021F8", ldadd(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E20321F8", ldadd(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6200A1B8", ldadda(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E203A1B8", ldadda(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6200A1F8", ldadda(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E203A1F8", ldadda(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6200A138", ldaddab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E203A138", ldaddab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6200A178", ldaddah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E203A178", ldaddah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6200E1B8", ldaddal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E203E1B8", ldaddal(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6200E1F8", ldaddal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E203E1F8", ldaddal(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6200E138", ldaddalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E203E138", ldaddalb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6200E178", ldaddalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E203E178", ldaddalh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62002138", ldaddb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2032138", ldaddb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62002178", ldaddh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2032178", ldaddh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("620061B8", ldaddl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E20361B8", ldaddl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("620061F8", ldaddl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E20361F8", ldaddl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62006138", ldaddlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2036138", ldaddlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62006178", ldaddlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2036178", ldaddlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("621021B8", ldclr(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E21321B8", ldclr(w1, w2, ptr(sp)));
TEST_INSTRUCTION("621021F8", ldclr(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E21321F8", ldclr(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6210A1B8", ldclra(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E213A1B8", ldclra(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6210A1F8", ldclra(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E213A1F8", ldclra(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6210A138", ldclrab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E213A138", ldclrab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6210A178", ldclrah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E213A178", ldclrah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6210E1B8", ldclral(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E213E1B8", ldclral(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6210E1F8", ldclral(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E213E1F8", ldclral(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6210E138", ldclralb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E213E138", ldclralb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6210E178", ldclralh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E213E178", ldclralh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62102138", ldclrb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2132138", ldclrb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62102178", ldclrh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2132178", ldclrh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("621061B8", ldclrl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E21361B8", ldclrl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("621061F8", ldclrl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E21361F8", ldclrl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62106138", ldclrlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2136138", ldclrlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62106178", ldclrlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2136178", ldclrlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("622021B8", ldeor(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E22321B8", ldeor(w1, w2, ptr(sp)));
TEST_INSTRUCTION("622021F8", ldeor(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E22321F8", ldeor(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6220A1B8", ldeora(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E223A1B8", ldeora(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6220A1F8", ldeora(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E223A1F8", ldeora(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6220A138", ldeorab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E223A138", ldeorab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6220A178", ldeorah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E223A178", ldeorah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6220E1B8", ldeoral(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E223E1B8", ldeoral(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6220E1F8", ldeoral(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E223E1F8", ldeoral(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6220E138", ldeoralb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E223E138", ldeoralb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6220E178", ldeoralh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E223E178", ldeoralh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62202138", ldeorb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2232138", ldeorb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62202178", ldeorh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2232178", ldeorh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("622061B8", ldeorl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E22361B8", ldeorl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("622061F8", ldeorl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E22361F8", ldeorl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62206138", ldeorlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2236138", ldeorlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62206178", ldeorlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2236178", ldeorlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("410060D9", ldg(x1, ptr(x2)));
TEST_INSTRUCTION("418060D9", ldg(x1, ptr(x2, 128)));
TEST_INSTRUCTION("E10360D9", ldg(x1, ptr(sp)));
TEST_INSTRUCTION("E18360D9", ldg(x1, ptr(sp, 128)));
TEST_INSTRUCTION("4100E0D9", ldgm(x1, ptr(x2)));
TEST_INSTRUCTION("E103E0D9", ldgm(x1, ptr(sp)));
TEST_INSTRUCTION("417CDF88", ldlar(w1, ptr(x2)));
TEST_INSTRUCTION("E17FDF88", ldlar(w1, ptr(sp)));
TEST_INSTRUCTION("417CDFC8", ldlar(x1, ptr(x2)));
TEST_INSTRUCTION("E17FDFC8", ldlar(x1, ptr(sp)));
TEST_INSTRUCTION("417CDF08", ldlarb(w1, ptr(x2)));
TEST_INSTRUCTION("E17FDF08", ldlarb(w1, ptr(sp)));
TEST_INSTRUCTION("417CDF48", ldlarh(w1, ptr(x2)));
TEST_INSTRUCTION("E17FDF48", ldlarh(w1, ptr(sp)));
TEST_INSTRUCTION("41084028", ldnp(w1, w2, ptr(x2)));
TEST_INSTRUCTION("41086028", ldnp(w1, w2, ptr(x2, -256)));
TEST_INSTRUCTION("41885F28", ldnp(w1, w2, ptr(x2, 252)));
TEST_INSTRUCTION("410840A8", ldnp(x1, x2, ptr(x2)));
TEST_INSTRUCTION("410860A8", ldnp(x1, x2, ptr(x2, -512)));
TEST_INSTRUCTION("41885FA8", ldnp(x1, x2, ptr(x2, 504)));
TEST_INSTRUCTION("41084029", ldp(w1, w2, ptr(x2)));
TEST_INSTRUCTION("41086029", ldp(w1, w2, ptr(x2, -256)));
TEST_INSTRUCTION("41885F29", ldp(w1, w2, ptr(x2, 252)));
TEST_INSTRUCTION("410840A9", ldp(x1, x2, ptr(x2)));
TEST_INSTRUCTION("410860A9", ldp(x1, x2, ptr(x2, -512)));
TEST_INSTRUCTION("41885FA9", ldp(x1, x2, ptr(x2, 504)));
TEST_INSTRUCTION("41084069", ldpsw(x1, x2, ptr(x2)));
TEST_INSTRUCTION("41086069", ldpsw(x1, x2, ptr(x2, -256)));
TEST_INSTRUCTION("41885F69", ldpsw(x1, x2, ptr(x2, 252)));
TEST_INSTRUCTION("410040B9", ldr(w1, ptr(x2)));
TEST_INSTRUCTION("413040B9", ldr(w1, ptr(x2, 48)));
TEST_INSTRUCTION("410C43B8", ldr(w1, ptr_pre(x2, 48)));
TEST_INSTRUCTION("416863B8", ldr(w1, ptr(x2, x3)));
TEST_INSTRUCTION("410040F9", ldr(x1, ptr(x2)));
TEST_INSTRUCTION("411840F9", ldr(x1, ptr(x2, 48)));
TEST_INSTRUCTION("410C43F8", ldr(x1, ptr_pre(x2, 48)));
TEST_INSTRUCTION("416863F8", ldr(x1, ptr(x2, x3)));
TEST_INSTRUCTION("FB0F5FF8", ldr(x27, ptr_pre(sp, -16)));
TEST_INSTRUCTION("FB0741F8", ldr(x27, ptr_post(sp, 16)));
TEST_INSTRUCTION("411040B8", ldr(w1, ptr(x2, 1))); // LDUR
TEST_INSTRUCTION("41D05FB8", ldr(w1, ptr(x2, -3))); // LDUR
TEST_INSTRUCTION("41705FB8", ldr(w1, ptr(x2, -9))); // LDUR
TEST_INSTRUCTION("411040F8", ldr(x1, ptr(x2, 1))); // LDUR
TEST_INSTRUCTION("413040F8", ldr(x1, ptr(x2, 3))); // LDUR
TEST_INSTRUCTION("41705FF8", ldr(x1, ptr(x2, -9))); // LDUR
TEST_INSTRUCTION("41004039", ldrb(w1, ptr(x2)));
TEST_INSTRUCTION("41C04039", ldrb(w1, ptr(x2, 48)));
TEST_INSTRUCTION("410C4338", ldrb(w1, ptr_pre(x2, 48)));
TEST_INSTRUCTION("41686338", ldrb(w1, ptr(x2, x3)));
TEST_INSTRUCTION("41044039", ldrb(w1, ptr(x2, 1)));
TEST_INSTRUCTION("41D05F38", ldrb(w1, ptr(x2, -3))); // LDURB
TEST_INSTRUCTION("41705F38", ldrb(w1, ptr(x2, -9))); // LDURB
TEST_INSTRUCTION("41004079", ldrh(w1, ptr(x2)));
TEST_INSTRUCTION("41604079", ldrh(w1, ptr(x2, 48)));
TEST_INSTRUCTION("410C4378", ldrh(w1, ptr_pre(x2, 48)));
TEST_INSTRUCTION("41686378", ldrh(w1, ptr(x2, x3)));
TEST_INSTRUCTION("41104078", ldrh(w1, ptr(x2, 1))); // LDURH
TEST_INSTRUCTION("41D05F78", ldrh(w1, ptr(x2, -3))); // LDURH
TEST_INSTRUCTION("41705F78", ldrh(w1, ptr(x2, -9))); // LDURH
TEST_INSTRUCTION("4168E338", ldrsb(w1, ptr(x2, x3)));
TEST_INSTRUCTION("4104C039", ldrsb(w1, ptr(x2, 1)));
TEST_INSTRUCTION("4120C039", ldrsb(w1, ptr(x2, 8)));
TEST_INSTRUCTION("41D0DF38", ldrsb(w1, ptr(x2, -3))); // LDURSB
TEST_INSTRUCTION("4170DF38", ldrsb(w1, ptr(x2, -9))); // LDURSB
TEST_INSTRUCTION("4168A338", ldrsb(x1, ptr(x2, x3)));
TEST_INSTRUCTION("41048039", ldrsb(x1, ptr(x2, 1)));
TEST_INSTRUCTION("41208039", ldrsb(x1, ptr(x2, 8)));
TEST_INSTRUCTION("41D09F38", ldrsb(x1, ptr(x2, -3))); // LDURSB
TEST_INSTRUCTION("41709F38", ldrsb(x1, ptr(x2, -9))); // LDURSB
TEST_INSTRUCTION("4168E378", ldrsh(w1, ptr(x2, x3)));
TEST_INSTRUCTION("4110C078", ldrsh(w1, ptr(x2, 1))); // LDURSH
TEST_INSTRUCTION("4110C079", ldrsh(w1, ptr(x2, 8)));
TEST_INSTRUCTION("41D0DF78", ldrsh(w1, ptr(x2, -3))); // LDURSH
TEST_INSTRUCTION("4170DF78", ldrsh(w1, ptr(x2, -9))); // LDURSH
TEST_INSTRUCTION("4168A378", ldrsh(x1, ptr(x2, x3)));
TEST_INSTRUCTION("41108078", ldrsh(x1, ptr(x2, 1))); // LDURSH
TEST_INSTRUCTION("41108079", ldrsh(x1, ptr(x2, 8)));
TEST_INSTRUCTION("41D09F78", ldrsh(x1, ptr(x2, -3))); // LDURSH
TEST_INSTRUCTION("41709F78", ldrsh(x1, ptr(x2, -9))); // LDURSH
TEST_INSTRUCTION("410080B9", ldrsw(x1, ptr(x2)));
TEST_INSTRUCTION("413080B9", ldrsw(x1, ptr(x2, 48)));
TEST_INSTRUCTION("410C83B8", ldrsw(x1, ptr_pre(x2, 48)));
TEST_INSTRUCTION("410483B8", ldrsw(x1, ptr_post(x2, 48)));
TEST_INSTRUCTION("4168A3B8", ldrsw(x1, ptr(x2, x3)));
TEST_INSTRUCTION("411080B8", ldrsw(x1, ptr(x2, 1))); // LDURSW
TEST_INSTRUCTION("413080B8", ldrsw(x1, ptr(x2, 3))); // LDURSW
TEST_INSTRUCTION("41709FB8", ldrsw(x1, ptr(x2, -9))); // LDURSW
TEST_INSTRUCTION("410420F8", ldraa(x1, ptr(x2)));
TEST_INSTRUCTION("410460F8", ldraa(x1, ptr(x2, -4096)));
TEST_INSTRUCTION("410C60F8", ldraa(x1, ptr_pre(x2, -4096)));
TEST_INSTRUCTION("41FC3FF8", ldraa(x1, ptr_pre(x2, 4088)));
TEST_INSTRUCTION("E10720F8", ldraa(x1, ptr(sp)));
TEST_INSTRUCTION("E10760F8", ldraa(x1, ptr(sp, -4096)));
TEST_INSTRUCTION("E10F60F8", ldraa(x1, ptr_pre(sp, -4096)));
TEST_INSTRUCTION("E1FF3FF8", ldraa(x1, ptr_pre(sp, 4088)));
TEST_INSTRUCTION("4104A0F8", ldrab(x1, ptr(x2)));
TEST_INSTRUCTION("4104E0F8", ldrab(x1, ptr(x2, -4096)));
TEST_INSTRUCTION("410CE0F8", ldrab(x1, ptr_pre(x2, -4096)));
TEST_INSTRUCTION("41FCBFF8", ldrab(x1, ptr_pre(x2, 4088)));
TEST_INSTRUCTION("E107A0F8", ldrab(x1, ptr(sp)));
TEST_INSTRUCTION("E107E0F8", ldrab(x1, ptr(sp, -4096)));
TEST_INSTRUCTION("E10FE0F8", ldrab(x1, ptr_pre(sp, -4096)));
TEST_INSTRUCTION("E1FFBFF8", ldrab(x1, ptr_pre(sp, 4088)));
TEST_INSTRUCTION("60DBA0B8", ldrsw(x0, ptr(x27, w0, sxtw(2))));
TEST_INSTRUCTION("623021B8", ldset(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E23321B8", ldset(w1, w2, ptr(sp)));
TEST_INSTRUCTION("623021F8", ldset(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E23321F8", ldset(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6230A1B8", ldseta(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E233A1B8", ldseta(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6230A1F8", ldseta(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E233A1F8", ldseta(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6230A138", ldsetab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E233A138", ldsetab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6230A178", ldsetah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E233A178", ldsetah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6230E1B8", ldsetal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E233E1B8", ldsetal(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6230E1F8", ldsetal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E233E1F8", ldsetal(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6230E178", ldsetalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E233E178", ldsetalh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6230E138", ldsetalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E233E138", ldsetalb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62302138", ldsetb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2332138", ldsetb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62302178", ldseth(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2332178", ldseth(w1, w2, ptr(sp)));
TEST_INSTRUCTION("623061B8", ldsetl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E23361B8", ldsetl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("623061F8", ldsetl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E23361F8", ldsetl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62306138", ldsetlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2336138", ldsetlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62306178", ldsetlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2336178", ldsetlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("624021B8", ldsmax(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E24321B8", ldsmax(w1, w2, ptr(sp)));
TEST_INSTRUCTION("624021F8", ldsmax(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E24321F8", ldsmax(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6240A1B8", ldsmaxa(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E243A1B8", ldsmaxa(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6240A1F8", ldsmaxa(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E243A1F8", ldsmaxa(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6240A138", ldsmaxab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E243A138", ldsmaxab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6240A178", ldsmaxah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E243A178", ldsmaxah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6240E1B8", ldsmaxal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E243E1B8", ldsmaxal(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6240E1F8", ldsmaxal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E243E1F8", ldsmaxal(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6240E138", ldsmaxalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E243E138", ldsmaxalb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6240E178", ldsmaxalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E243E178", ldsmaxalh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62402138", ldsmaxb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2432138", ldsmaxb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62402178", ldsmaxh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2432178", ldsmaxh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("624061B8", ldsmaxl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E24361B8", ldsmaxl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("624061F8", ldsmaxl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E24361F8", ldsmaxl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62406138", ldsmaxlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2436138", ldsmaxlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62406178", ldsmaxlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2436178", ldsmaxlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("625021B8", ldsmin(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E25321B8", ldsmin(w1, w2, ptr(sp)));
TEST_INSTRUCTION("625021F8", ldsmin(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E25321F8", ldsmin(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6250A1B8", ldsmina(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E253A1B8", ldsmina(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6250A1F8", ldsmina(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E253A1F8", ldsmina(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6250A138", ldsminab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E253A138", ldsminab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6250A178", ldsminah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E253A178", ldsminah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6250E1B8", ldsminal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E253E1B8", ldsminal(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6250E1F8", ldsminal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E253E1F8", ldsminal(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6250E138", ldsminalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E253E138", ldsminalb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6250E178", ldsminalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E253E178", ldsminalh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62502138", ldsminb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2532138", ldsminb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62502178", ldsminh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2532178", ldsminh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("625061B8", ldsminl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E25361B8", ldsminl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("625061F8", ldsminl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E25361F8", ldsminl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62506138", ldsminlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2536138", ldsminlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62506178", ldsminlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2536178", ldsminlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("410840B8", ldtr(w1, ptr(x2)));
TEST_INSTRUCTION("411848B8", ldtr(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10B40B8", ldtr(w1, ptr(sp)));
TEST_INSTRUCTION("E11B48B8", ldtr(w1, ptr(sp, 129)));
TEST_INSTRUCTION("410840F8", ldtr(x1, ptr(x2)));
TEST_INSTRUCTION("411848F8", ldtr(x1, ptr(x2, 129)));
TEST_INSTRUCTION("E10B40F8", ldtr(x1, ptr(sp)));
TEST_INSTRUCTION("E11B48F8", ldtr(x1, ptr(sp, 129)));
TEST_INSTRUCTION("41084038", ldtrb(w1, ptr(x2)));
TEST_INSTRUCTION("41184838", ldtrb(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10B4038", ldtrb(w1, ptr(sp)));
TEST_INSTRUCTION("E11B4838", ldtrb(w1, ptr(sp, 129)));
TEST_INSTRUCTION("41084078", ldtrh(w1, ptr(x2)));
TEST_INSTRUCTION("41184878", ldtrh(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10B4078", ldtrh(w1, ptr(sp)));
TEST_INSTRUCTION("E11B4878", ldtrh(w1, ptr(sp, 129)));
TEST_INSTRUCTION("4108C038", ldtrsb(w1, ptr(x2)));
TEST_INSTRUCTION("4118C838", ldtrsb(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10BC038", ldtrsb(w1, ptr(sp)));
TEST_INSTRUCTION("E11BC838", ldtrsb(w1, ptr(sp, 129)));
TEST_INSTRUCTION("4108C078", ldtrsh(w1, ptr(x2)));
TEST_INSTRUCTION("4118C878", ldtrsh(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10BC078", ldtrsh(w1, ptr(sp)));
TEST_INSTRUCTION("E11BC878", ldtrsh(w1, ptr(sp, 129)));
TEST_INSTRUCTION("410880B8", ldtrsw(x1, ptr(x2)));
TEST_INSTRUCTION("411888B8", ldtrsw(x1, ptr(x2, 129)));
TEST_INSTRUCTION("E10B80B8", ldtrsw(x1, ptr(sp)));
TEST_INSTRUCTION("E11B88B8", ldtrsw(x1, ptr(sp, 129)));
TEST_INSTRUCTION("626021B8", ldumax(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E26321B8", ldumax(w1, w2, ptr(sp)));
TEST_INSTRUCTION("626021F8", ldumax(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E26321F8", ldumax(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6260A1B8", ldumaxa(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E263A1B8", ldumaxa(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6260A1F8", ldumaxa(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E263A1F8", ldumaxa(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6260A138", ldumaxab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E263A138", ldumaxab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6260A178", ldumaxah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E263A178", ldumaxah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6260E1B8", ldumaxal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E263E1B8", ldumaxal(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6260E1F8", ldumaxal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E263E1F8", ldumaxal(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6260E138", ldumaxalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E263E138", ldumaxalb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6260E178", ldumaxalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E263E178", ldumaxalh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62602138", ldumaxb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2632138", ldumaxb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62602178", ldumaxh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2632178", ldumaxh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("626061B8", ldumaxl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E26361B8", ldumaxl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("626061F8", ldumaxl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E26361F8", ldumaxl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62606138", ldumaxlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2636138", ldumaxlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62606178", ldumaxlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2636178", ldumaxlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("627021B8", ldumin(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E27321B8", ldumin(w1, w2, ptr(sp)));
TEST_INSTRUCTION("627021F8", ldumin(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E27321F8", ldumin(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6270A1B8", ldumina(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E273A1B8", ldumina(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6270A1F8", ldumina(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E273A1F8", ldumina(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6270A138", lduminab(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E273A138", lduminab(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6270A178", lduminah(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E273A178", lduminah(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6270E1B8", lduminal(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E273E1B8", lduminal(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6270E1F8", lduminal(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E273E1F8", lduminal(x1, x2, ptr(sp)));
TEST_INSTRUCTION("6270E138", lduminalb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E273E138", lduminalb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("6270E178", lduminalh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E273E178", lduminalh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62702138", lduminb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2732138", lduminb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62702178", lduminh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2732178", lduminh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("627061B8", lduminl(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E27361B8", lduminl(w1, w2, ptr(sp)));
TEST_INSTRUCTION("627061F8", lduminl(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E27361F8", lduminl(x1, x2, ptr(sp)));
TEST_INSTRUCTION("62706138", lduminlb(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2736138", lduminlb(w1, w2, ptr(sp)));
TEST_INSTRUCTION("62706178", lduminlh(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E2736178", lduminlh(w1, w2, ptr(sp)));
TEST_INSTRUCTION("410040B8", ldur(w1, ptr(x2)));
TEST_INSTRUCTION("411048B8", ldur(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10340B8", ldur(w1, ptr(sp)));
TEST_INSTRUCTION("E11348B8", ldur(w1, ptr(sp, 129)));
TEST_INSTRUCTION("410040F8", ldur(x1, ptr(x2)));
TEST_INSTRUCTION("411048F8", ldur(x1, ptr(x2, 129)));
TEST_INSTRUCTION("E10340F8", ldur(x1, ptr(sp)));
TEST_INSTRUCTION("E11348F8", ldur(x1, ptr(sp, 129)));
TEST_INSTRUCTION("41004038", ldurb(w1, ptr(x2)));
TEST_INSTRUCTION("41104838", ldurb(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E1034038", ldurb(w1, ptr(sp)));
TEST_INSTRUCTION("E1134838", ldurb(w1, ptr(sp, 129)));
TEST_INSTRUCTION("41004078", ldurh(w1, ptr(x2)));
TEST_INSTRUCTION("41104878", ldurh(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E1034078", ldurh(w1, ptr(sp)));
TEST_INSTRUCTION("E1134878", ldurh(w1, ptr(sp, 129)));
TEST_INSTRUCTION("4100C038", ldursb(w1, ptr(x2)));
TEST_INSTRUCTION("4110C838", ldursb(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E103C038", ldursb(w1, ptr(sp)));
TEST_INSTRUCTION("E113C838", ldursb(w1, ptr(sp, 129)));
TEST_INSTRUCTION("4100C078", ldursh(w1, ptr(x2)));
TEST_INSTRUCTION("4110C878", ldursh(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E103C078", ldursh(w1, ptr(sp)));
TEST_INSTRUCTION("E113C878", ldursh(w1, ptr(sp, 129)));
TEST_INSTRUCTION("410080B8", ldursw(x1, ptr(x2)));
TEST_INSTRUCTION("411088B8", ldursw(x1, ptr(x2, 129)));
TEST_INSTRUCTION("E10380B8", ldursw(x1, ptr(sp)));
TEST_INSTRUCTION("E11388B8", ldursw(x1, ptr(sp, 129)));
TEST_INSTRUCTION("420080B8", ldursw(x2, ptr(x2)));
TEST_INSTRUCTION("421088B8", ldursw(x2, ptr(x2, 129)));
TEST_INSTRUCTION("E20380B8", ldursw(x2, ptr(sp)));
TEST_INSTRUCTION("E21388B8", ldursw(x2, ptr(sp, 129)));
TEST_INSTRUCTION("61087F88", ldxp(w1, w2, ptr(x3)));
TEST_INSTRUCTION("E10B7F88", ldxp(w1, w2, ptr(sp)));
TEST_INSTRUCTION("61087FC8", ldxp(x1, x2, ptr(x3)));
TEST_INSTRUCTION("E10B7FC8", ldxp(x1, x2, ptr(sp)));
TEST_INSTRUCTION("417C5F88", ldxr(w1, ptr(x2)));
TEST_INSTRUCTION("E17F5F88", ldxr(w1, ptr(sp)));
TEST_INSTRUCTION("417C5FC8", ldxr(x1, ptr(x2)));
TEST_INSTRUCTION("E17F5FC8", ldxr(x1, ptr(sp)));
TEST_INSTRUCTION("417C5F08", ldxrb(w1, ptr(x2)));
TEST_INSTRUCTION("E17F5F08", ldxrb(w1, ptr(sp)));
TEST_INSTRUCTION("417C5F48", ldxrh(w1, ptr(x2)));
TEST_INSTRUCTION("E17F5F48", ldxrh(w1, ptr(sp)));
TEST_INSTRUCTION("4120C31A", lsl(w1, w2, w3));
TEST_INSTRUCTION("4120C39A", lsl(x1, x2, x3));
TEST_INSTRUCTION("41401153", lsl(w1, w2, 15));
TEST_INSTRUCTION("41C071D3", lsl(x1, x2, 15));
TEST_INSTRUCTION("4120C31A", lslv(w1, w2, w3));
TEST_INSTRUCTION("4120C39A", lslv(x1, x2, x3));
TEST_INSTRUCTION("4124C31A", lsr(w1, w2, w3));
TEST_INSTRUCTION("4124C39A", lsr(x1, x2, x3));
TEST_INSTRUCTION("417C0F53", lsr(w1, w2, 15));
TEST_INSTRUCTION("41FC4FD3", lsr(x1, x2, 15));
TEST_INSTRUCTION("4124C31A", lsrv(w1, w2, w3));
TEST_INSTRUCTION("4124C39A", lsrv(x1, x2, x3));
TEST_INSTRUCTION("4110031B", madd(w1, w2, w3, w4));
TEST_INSTRUCTION("4110039B", madd(x1, x2, x3, x4));
TEST_INSTRUCTION("41FC031B", mneg(w1, w2, w3));
TEST_INSTRUCTION("41FC039B", mneg(x1, x2, x3));
TEST_INSTRUCTION("E103022A", mov(w1, w2));
TEST_INSTRUCTION("E10302AA", mov(x1, x2));
TEST_INSTRUCTION("01008052", mov(w1, 0));
TEST_INSTRUCTION("01008012", mov(w1, -1));
TEST_INSTRUCTION("21008052", mov(w1, 1));
TEST_INSTRUCTION("41008052", mov(w1, 2));
TEST_INSTRUCTION("61008052", mov(w1, 3));
TEST_INSTRUCTION("81008052", mov(w1, 4));
TEST_INSTRUCTION("A1008052", mov(w1, 5));
TEST_INSTRUCTION("C1008052", mov(w1, 6));
TEST_INSTRUCTION("E1008052", mov(w1, 7));
TEST_INSTRUCTION("01018052", mov(w1, 8));
TEST_INSTRUCTION("21018052", mov(w1, 9));
TEST_INSTRUCTION("41018052", mov(w1, 10));
TEST_INSTRUCTION("8146A252", mov(w1, 0x12340000));
TEST_INSTRUCTION("81468252", mov(w1, 0x00001234));
TEST_INSTRUCTION("61B9BD12", mov(w1, 0x1234FFFF));
TEST_INSTRUCTION("61B99D12", mov(w1, 0xFFFF1234));
TEST_INSTRUCTION("010080D2", mov(x1, 0));
TEST_INSTRUCTION("01008092", mov(x1, -1));
TEST_INSTRUCTION("8146E2D2", mov(x1, 0x1234000000000000));
TEST_INSTRUCTION("8146C2D2", mov(x1, 0x0000123400000000));
TEST_INSTRUCTION("8146A2D2", mov(x1, 0x0000000012340000));
TEST_INSTRUCTION("814682D2", mov(x1, 0x0000000000001234));
TEST_INSTRUCTION("61B9FD92", mov(x1, 0x1234FFFFFFFFFFFF));
TEST_INSTRUCTION("61B9DD92", mov(x1, 0xFFFF1234FFFFFFFF));
TEST_INSTRUCTION("61B9BD92", mov(x1, 0xFFFFFFFF1234FFFF));
TEST_INSTRUCTION("61B99D92", mov(x1, 0xFFFFFFFFFFFF1234));
TEST_INSTRUCTION("E1030011", mov(w1, wsp));
TEST_INSTRUCTION("E1030091", mov(x1, sp));
TEST_INSTRUCTION("3F000011", mov(wsp, w1));
TEST_INSTRUCTION("FF3F0032", mov(wsp, 0xFFFF));
TEST_INSTRUCTION("3F000091", mov(sp, x1));
TEST_INSTRUCTION("FF3F40B2", mov(sp, 0xFFFF));
TEST_INSTRUCTION("FF030011", mov(wsp, wsp));
TEST_INSTRUCTION("FF030091", mov(sp, sp));
TEST_INSTRUCTION("015138D5", mrs(x1, Predicate::SysReg::kAFSR0_EL1));
TEST_INSTRUCTION("01423BD5", mrs(x1, Predicate::SysReg::kNZCV));
TEST_INSTRUCTION("015118D5", msr(Predicate::SysReg::kAFSR0_EL1, x1));
TEST_INSTRUCTION("01421BD5", msr(Predicate::SysReg::kNZCV, x1));
TEST_INSTRUCTION("4190031B", msub(w1, w2, w3, w4));
TEST_INSTRUCTION("4190039B", msub(x1, x2, x3, x4));
TEST_INSTRUCTION("417C031B", mul(w1, w2, w3));
TEST_INSTRUCTION("417C039B", mul(x1, x2, x3));
TEST_INSTRUCTION("E103222A", mvn_(w1, w2));
TEST_INSTRUCTION("E10322AA", mvn_(x1, x2));
TEST_INSTRUCTION("E113222A", mvn_(w1, w2, lsl(4)));
TEST_INSTRUCTION("E11322AA", mvn_(x1, x2, lsl(4)));
TEST_INSTRUCTION("E103024B", neg(w1, w2));
TEST_INSTRUCTION("E10302CB", neg(x1, x2));
TEST_INSTRUCTION("E113024B", neg(w1, w2, lsl(4)));
TEST_INSTRUCTION("E11302CB", neg(x1, x2, lsl(4)));
TEST_INSTRUCTION("E103026B", negs(w1, w2));
TEST_INSTRUCTION("E10302EB", negs(x1, x2));
TEST_INSTRUCTION("E113026B", negs(w1, w2, lsl(4)));
TEST_INSTRUCTION("E11302EB", negs(x1, x2, lsl(4)));
TEST_INSTRUCTION("E103025A", ngc(w1, w2));
TEST_INSTRUCTION("E10302DA", ngc(x1, x2));
TEST_INSTRUCTION("E103027A", ngcs(w1, w2));
TEST_INSTRUCTION("E10302FA", ngcs(x1, x2));
TEST_INSTRUCTION("4100232A", orn(w1, w2, w3));
TEST_INSTRUCTION("410023AA", orn(x1, x2, x3));
TEST_INSTRUCTION("4110232A", orn(w1, w2, w3, lsl(4)));
TEST_INSTRUCTION("411023AA", orn(x1, x2, x3, lsl(4)));
TEST_INSTRUCTION("4100032A", orr(w1, w2, w3));
TEST_INSTRUCTION("410003AA", orr(x1, x2, x3));
TEST_INSTRUCTION("4110032A", orr(w1, w2, w3, lsl(4)));
TEST_INSTRUCTION("411003AA", orr(x1, x2, x3, lsl(4)));
TEST_INSTRUCTION("3F1C0032", orr(wsp, w1, 0xFF));
TEST_INSTRUCTION("3F1C40B2", orr(sp, x1, 0xFF));
TEST_INSTRUCTION("41001232", orr(w1, w2, 0x4000));
TEST_INSTRUCTION("410071B2", orr(x1, x2, 0x8000));
TEST_INSTRUCTION("E8030032", orr(w8, wzr, 0x1));
TEST_INSTRUCTION("E80340B2", orr(x8, xzr, 0x1));
TEST_INSTRUCTION("4108C1DA", pacda(x1, x2));
TEST_INSTRUCTION("E10BC1DA", pacda(x1, sp));
TEST_INSTRUCTION("410CC1DA", pacdb(x1, x2));
TEST_INSTRUCTION("E10FC1DA", pacdb(x1, sp));
TEST_INSTRUCTION("E12BC1DA", pacdza(x1));
TEST_INSTRUCTION("F42BC1DA", pacdza(x20));
TEST_INSTRUCTION("E12FC1DA", pacdzb(x1));
TEST_INSTRUCTION("F42FC1DA", pacdzb(x20));
TEST_INSTRUCTION("4130C39A", pacga(x1, x2, x3));
TEST_INSTRUCTION("4130DF9A", pacga(x1, x2, sp));
TEST_INSTRUCTION("204080F9", prfm(Predicate::PRFOp::kPLDL1KEEP, ptr(x1, 128)));
TEST_INSTRUCTION("401098F8", prfm(Predicate::PRFOp::kPLDL1KEEP, ptr(x2, -127)));
TEST_INSTRUCTION("601088F8", prfm(Predicate::PRFOp::kPLDL1KEEP, ptr(x3, 129)));
TEST_INSTRUCTION("6068A4F8", prfm(Predicate::PRFOp::kPLDL1KEEP, ptr(x3, x4)));
TEST_INSTRUCTION("6078A4F8", prfm(Predicate::PRFOp::kPLDL1KEEP, ptr(x3, x4, lsl(3))));
TEST_INSTRUCTION("60C8A4F8", prfm(Predicate::PRFOp::kPLDL1KEEP, ptr(x3, x4, sxtw(0))));
TEST_INSTRUCTION("73D8A4F8", prfm(Predicate::PRFOp::kPSTL2STRM, ptr(x3, x4, sxtw(3))));
TEST_INSTRUCTION("9F3403D5", pssbb());
TEST_INSTRUCTION("4100C05A", rbit(w1, w2));
TEST_INSTRUCTION("4100C0DA", rbit(x1, x2));
TEST_INSTRUCTION("4108C05A", rev(w1, w2));
TEST_INSTRUCTION("410CC0DA", rev(x1, x2));
TEST_INSTRUCTION("4104C05A", rev16(w1, w2));
TEST_INSTRUCTION("4104C0DA", rev16(x1, x2));
TEST_INSTRUCTION("4108C0DA", rev32(x1, x2));
TEST_INSTRUCTION("410CC0DA", rev64(x1, x2));
TEST_INSTRUCTION("412CC31A", ror(w1, w2, w3));
TEST_INSTRUCTION("412CC39A", ror(x1, x2, x3));
TEST_INSTRUCTION("413C8213", ror(w1, w2, 15));
TEST_INSTRUCTION("413CC293", ror(x1, x2, 15));
TEST_INSTRUCTION("412CC31A", rorv(w1, w2, w3));
TEST_INSTRUCTION("412CC39A", rorv(x1, x2, x3));
TEST_INSTRUCTION("4100035A", sbc(w1, w2, w3));
TEST_INSTRUCTION("410003DA", sbc(x1, x2, x3));
TEST_INSTRUCTION("4100037A", sbcs(w1, w2, w3));
TEST_INSTRUCTION("410003FA", sbcs(x1, x2, x3));
TEST_INSTRUCTION("41241B13", sbfiz(w1, w2, 5, 10));
TEST_INSTRUCTION("41247B93", sbfiz(x1, x2, 5, 10));
TEST_INSTRUCTION("41280513", sbfm(w1, w2, 5, 10));
TEST_INSTRUCTION("41284593", sbfm(x1, x2, 5, 10));
TEST_INSTRUCTION("41380513", sbfx(w1, w2, 5, 10));
TEST_INSTRUCTION("41384593", sbfx(x1, x2, 5, 10));
TEST_INSTRUCTION("410CC31A", sdiv(w1, w2, w3));
TEST_INSTRUCTION("410CC39A", sdiv(x1, x2, x3));
TEST_INSTRUCTION("2D08003A", setf8(w1));
TEST_INSTRUCTION("2D48003A", setf16(w1));
TEST_INSTRUCTION("4110239B", smaddl(x1, w2, w3, x4));
TEST_INSTRUCTION("4160C31A", smax(w1, w2, w3));
TEST_INSTRUCTION("4160C39A", smax(x1, x2, x3));
TEST_INSTRUCTION("4134C011", smax(w1, w2, 13));
TEST_INSTRUCTION("4134C091", smax(x1, x2, 13));
TEST_INSTRUCTION("230000D4", smc(1));
TEST_INSTRUCTION("4168C31A", smin(w1, w2, w3));
TEST_INSTRUCTION("4168C39A", smin(x1, x2, x3));
TEST_INSTRUCTION("4134C811", smin(w1, w2, 13));
TEST_INSTRUCTION("4134C891", smin(x1, x2, 13));
TEST_INSTRUCTION("41FC239B", smnegl(x1, w2, w3));
TEST_INSTRUCTION("4190239B", smsubl(x1, w2, w3, x4));
TEST_INSTRUCTION("417C439B", smulh(x1, x2, x3));
TEST_INSTRUCTION("417C239B", smull(x1, w2, w3));
TEST_INSTRUCTION("9F3003D5", ssbb());
TEST_INSTRUCTION("4108A0D9", st2g(x1, ptr(x2)));
TEST_INSTRUCTION("4188A0D9", st2g(x1, ptr(x2, 128)));
TEST_INSTRUCTION("418CA0D9", st2g(x1, ptr_pre(x2, 128)));
TEST_INSTRUCTION("4184A0D9", st2g(x1, ptr_post(x2, 128)));
TEST_INSTRUCTION("E10BA0D9", st2g(x1, ptr(sp)));
TEST_INSTRUCTION("E18BA0D9", st2g(x1, ptr(sp, 128)));
TEST_INSTRUCTION("E18FA0D9", st2g(x1, ptr_pre(sp, 128)));
TEST_INSTRUCTION("E187A0D9", st2g(x1, ptr_post(sp, 128)));
TEST_INSTRUCTION("5F08A0D9", st2g(sp, ptr(x2)));
TEST_INSTRUCTION("5F88A0D9", st2g(sp, ptr(x2, 128)));
TEST_INSTRUCTION("5F8CA0D9", st2g(sp, ptr_pre(x2, 128)));
TEST_INSTRUCTION("5F84A0D9", st2g(sp, ptr_post(x2, 128)));
TEST_INSTRUCTION("FF0BA0D9", st2g(sp, ptr(sp)));
TEST_INSTRUCTION("FF8BA0D9", st2g(sp, ptr(sp, 128)));
TEST_INSTRUCTION("FF8FA0D9", st2g(sp, ptr_pre(sp, 128)));
TEST_INSTRUCTION("FF87A0D9", st2g(sp, ptr_post(sp, 128)));
TEST_INSTRUCTION("410820D9", stg(x1, ptr(x2)));
TEST_INSTRUCTION("418820D9", stg(x1, ptr(x2, 128)));
TEST_INSTRUCTION("418C20D9", stg(x1, ptr_pre(x2, 128)));
TEST_INSTRUCTION("418420D9", stg(x1, ptr_post(x2, 128)));
TEST_INSTRUCTION("E10B20D9", stg(x1, ptr(sp)));
TEST_INSTRUCTION("E18B20D9", stg(x1, ptr(sp, 128)));
TEST_INSTRUCTION("E18F20D9", stg(x1, ptr_pre(sp, 128)));
TEST_INSTRUCTION("E18720D9", stg(x1, ptr_post(sp, 128)));
TEST_INSTRUCTION("5F0820D9", stg(sp, ptr(x2)));
TEST_INSTRUCTION("5F8820D9", stg(sp, ptr(x2, 128)));
TEST_INSTRUCTION("5F8C20D9", stg(sp, ptr_pre(x2, 128)));
TEST_INSTRUCTION("5F8420D9", stg(sp, ptr_post(x2, 128)));
TEST_INSTRUCTION("FF0B20D9", stg(sp, ptr(sp)));
TEST_INSTRUCTION("FF8B20D9", stg(sp, ptr(sp, 128)));
TEST_INSTRUCTION("FF8F20D9", stg(sp, ptr_pre(sp, 128)));
TEST_INSTRUCTION("FF8720D9", stg(sp, ptr_post(sp, 128)));
TEST_INSTRUCTION("4100A0D9", stgm(x1, ptr(x2)));
TEST_INSTRUCTION("E103A0D9", stgm(x1, ptr(sp)));
TEST_INSTRUCTION("FF03A0D9", stgm(xzr, ptr(sp)));
TEST_INSTRUCTION("61080069", stgp(x1, x2, ptr(x3)));
TEST_INSTRUCTION("61082069", stgp(x1, x2, ptr(x3, -1024)));
TEST_INSTRUCTION("6108A069", stgp(x1, x2, ptr_pre(x3, -1024)));
TEST_INSTRUCTION("6108A068", stgp(x1, x2, ptr_post(x3, -1024)));
TEST_INSTRUCTION("61881F69", stgp(x1, x2, ptr(x3, 1008)));
TEST_INSTRUCTION("61889F69", stgp(x1, x2, ptr_pre(x3, 1008)));
TEST_INSTRUCTION("61889F68", stgp(x1, x2, ptr_post(x3, 1008)));
TEST_INSTRUCTION("E10B0069", stgp(x1, x2, ptr(sp)));
TEST_INSTRUCTION("E10B2069", stgp(x1, x2, ptr(sp, -1024)));
TEST_INSTRUCTION("E10BA069", stgp(x1, x2, ptr_pre(sp, -1024)));
TEST_INSTRUCTION("E10BA068", stgp(x1, x2, ptr_post(sp, -1024)));
TEST_INSTRUCTION("E18B1F69", stgp(x1, x2, ptr(sp, 1008)));
TEST_INSTRUCTION("E18B9F69", stgp(x1, x2, ptr_pre(sp, 1008)));
TEST_INSTRUCTION("E18B9F68", stgp(x1, x2, ptr_post(sp, 1008)));
TEST_INSTRUCTION("41080029", stp(w1, w2, ptr(x2)));
TEST_INSTRUCTION("41082029", stp(w1, w2, ptr(x2, -256)));
TEST_INSTRUCTION("41881F29", stp(w1, w2, ptr(x2, 252)));
TEST_INSTRUCTION("410800A9", stp(x1, x2, ptr(x2)));
TEST_INSTRUCTION("410820A9", stp(x1, x2, ptr(x2, -512)));
TEST_INSTRUCTION("41881FA9", stp(x1, x2, ptr(x2, 504)));
TEST_INSTRUCTION("FB0F1FF8", str(x27, ptr_pre(sp, -16)));
TEST_INSTRUCTION("411000B8", str(w1, ptr(x2, 1))); // STUR
TEST_INSTRUCTION("41D01FB8", str(w1, ptr(x2, -3))); // STUR
TEST_INSTRUCTION("41701FB8", str(w1, ptr(x2, -9))); // STUR
TEST_INSTRUCTION("411000F8", str(x1, ptr(x2, 1))); // STUR
TEST_INSTRUCTION("413000F8", str(x1, ptr(x2, 3))); // STUR
TEST_INSTRUCTION("41701FF8", str(x1, ptr(x2, -9))); // STUR
TEST_INSTRUCTION("41040039", strb(w1, ptr(x2, 1)));
TEST_INSTRUCTION("41D01F38", strb(w1, ptr(x2, -3))); // STURB
TEST_INSTRUCTION("41701F38", strb(w1, ptr(x2, -9))); // STURB
TEST_INSTRUCTION("41100078", strh(w1, ptr(x2, 1))); // STURH
TEST_INSTRUCTION("41D01F78", strh(w1, ptr(x2, -3))); // STURH
TEST_INSTRUCTION("41701F78", strh(w1, ptr(x2, -9))); // STURH
TEST_INSTRUCTION("410800B8", sttr(w1, ptr(x2)));
TEST_INSTRUCTION("411808B8", sttr(w1, ptr(x2, 129)));
TEST_INSTRUCTION("E10B00B8", sttr(w1, ptr(sp)));
TEST_INSTRUCTION("E11B08B8", sttr(w1, ptr(sp, 129)));
TEST_INSTRUCTION("410800F8", sttr(x1, ptr(x2)));