reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    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
 1001
 1002
 1003
 1004
 1005
 1006
 1007
 1008
 1009
 1010
 1011
 1012
 1013
 1014
 1015
 1016
 1017
 1018
 1019
 1020
 1021
 1022
 1023
 1024
 1025
 1026
 1027
 1028
 1029
 1030
 1031
 1032
 1033
 1034
 1035
 1036
 1037
 1038
 1039
 1040
 1041
 1042
 1043
 1044
 1045
 1046
 1047
 1048
 1049
 1050
 1051
 1052
 1053
 1054
 1055
 1056
 1057
 1058
 1059
 1060
 1061
 1062
 1063
 1064
 1065
 1066
 1067
 1068
 1069
 1070
 1071
 1072
 1073
 1074
 1075
 1076
 1077
 1078
 1079
 1080
 1081
 1082
 1083
 1084
 1085
 1086
 1087
 1088
 1089
 1090
 1091
 1092
 1093
 1094
 1095
 1096
 1097
 1098
 1099
 1100
 1101
 1102
 1103
 1104
 1105
 1106
 1107
 1108
 1109
 1110
 1111
 1112
 1113
 1114
 1115
 1116
 1117
 1118
 1119
 1120
 1121
 1122
 1123
 1124
 1125
 1126
 1127
 1128
 1129
 1130
 1131
 1132
 1133
 1134
 1135
 1136
 1137
 1138
 1139
 1140
 1141
 1142
 1143
 1144
 1145
 1146
 1147
 1148
 1149
 1150
 1151
 1152
 1153
 1154
 1155
 1156
 1157
 1158
 1159
 1160
 1161
 1162
 1163
 1164
 1165
 1166
 1167
 1168
 1169
 1170
 1171
 1172
 1173
 1174
 1175
 1176
 1177
 1178
 1179
 1180
 1181
 1182
 1183
 1184
 1185
 1186
 1187
 1188
 1189
 1190
 1191
 1192
 1193
 1194
 1195
 1196
 1197
 1198
 1199
 1200
 1201
 1202
 1203
 1204
 1205
 1206
 1207
 1208
 1209
 1210
 1211
 1212
 1213
 1214
 1215
 1216
 1217
 1218
 1219
 1220
 1221
 1222
 1223
 1224
 1225
 1226
 1227
 1228
 1229
 1230
 1231
 1232
 1233
 1234
 1235
 1236
 1237
 1238
 1239
 1240
 1241
 1242
 1243
 1244
 1245
 1246
 1247
 1248
 1249
 1250
 1251
 1252
 1253
 1254
 1255
 1256
 1257
 1258
 1259
 1260
 1261
 1262
 1263
 1264
 1265
 1266
 1267
 1268
 1269
 1270
 1271
 1272
 1273
 1274
 1275
 1276
 1277
 1278
 1279
 1280
 1281
 1282
 1283
 1284
 1285
 1286
 1287
 1288
 1289
 1290
 1291
 1292
 1293
 1294
 1295
 1296
 1297
 1298
 1299
 1300
 1301
 1302
 1303
 1304
 1305
 1306
 1307
 1308
 1309
 1310
 1311
 1312
 1313
 1314
 1315
 1316
 1317
 1318
 1319
 1320
 1321
 1322
 1323
 1324
 1325
 1326
 1327
 1328
 1329
 1330
 1331
 1332
 1333
 1334
 1335
 1336
 1337
 1338
 1339
 1340
 1341
 1342
 1343
 1344
 1345
 1346
 1347
 1348
 1349
 1350
 1351
 1352
 1353
 1354
 1355
 1356
 1357
 1358
 1359
 1360
 1361
 1362
 1363
 1364
 1365
 1366
 1367
 1368
 1369
 1370
 1371
 1372
 1373
 1374
 1375
 1376
 1377
 1378
 1379
 1380
 1381
 1382
 1383
 1384
 1385
 1386
 1387
 1388
 1389
 1390
 1391
 1392
 1393
 1394
 1395
 1396
 1397
 1398
 1399
 1400
 1401
 1402
 1403
 1404
 1405
 1406
 1407
 1408
 1409
 1410
 1411
 1412
 1413
 1414
 1415
 1416
 1417
 1418
 1419
 1420
 1421
 1422
 1423
 1424
 1425
 1426
 1427
 1428
 1429
 1430
 1431
 1432
 1433
 1434
 1435
 1436
 1437
 1438
 1439
 1440
 1441
 1442
 1443
 1444
 1445
 1446
 1447
 1448
 1449
 1450
 1451
 1452
 1453
 1454
 1455
 1456
 1457
 1458
 1459
 1460
 1461
 1462
 1463
 1464
 1465
 1466
 1467
 1468
 1469
 1470
 1471
 1472
 1473
 1474
 1475
 1476
 1477
 1478
 1479
 1480
 1481
 1482
 1483
 1484
 1485
 1486
 1487
 1488
 1489
 1490
 1491
 1492
 1493
 1494
 1495
 1496
 1497
 1498
 1499
 1500
 1501
 1502
 1503
 1504
 1505
 1506
 1507
 1508
 1509
 1510
 1511
 1512
 1513
 1514
 1515
 1516
 1517
 1518
 1519
 1520
 1521
 1522
 1523
 1524
 1525
 1526
 1527
 1528
 1529
 1530
 1531
 1532
 1533
 1534
 1535
 1536
 1537
 1538
 1539
 1540
 1541
 1542
 1543
 1544
 1545
 1546
 1547
 1548
 1549
 1550
 1551
 1552
 1553
 1554
 1555
 1556
 1557
 1558
 1559
 1560
 1561
 1562
 1563
 1564
 1565
 1566
 1567
 1568
 1569
 1570
 1571
 1572
 1573
 1574
 1575
 1576
 1577
 1578
 1579
 1580
 1581
 1582
 1583
 1584
 1585
 1586
 1587
 1588
 1589
 1590
 1591
 1592
 1593
 1594
 1595
 1596
 1597
 1598
 1599
 1600
 1601
 1602
 1603
 1604
 1605
 1606
 1607
 1608
 1609
 1610
 1611
 1612
 1613
 1614
 1615
 1616
 1617
 1618
 1619
 1620
 1621
 1622
 1623
 1624
 1625
 1626
 1627
 1628
 1629
 1630
 1631
 1632
 1633
 1634
 1635
 1636
 1637
 1638
 1639
 1640
 1641
 1642
 1643
 1644
 1645
 1646
 1647
 1648
 1649
 1650
 1651
 1652
 1653
 1654
 1655
 1656
 1657
 1658
 1659
 1660
 1661
 1662
 1663
 1664
 1665
 1666
 1667
 1668
 1669
 1670
 1671
 1672
 1673
 1674
 1675
 1676
 1677
 1678
 1679
 1680
 1681
 1682
 1683
 1684
 1685
 1686
 1687
 1688
 1689
 1690
 1691
 1692
 1693
 1694
 1695
 1696
 1697
 1698
 1699
 1700
 1701
 1702
 1703
 1704
 1705
 1706
 1707
 1708
 1709
 1710
 1711
 1712
 1713
 1714
 1715
 1716
 1717
 1718
 1719
 1720
 1721
 1722
 1723
 1724
 1725
 1726
 1727
 1728
 1729
 1730
 1731
 1732
 1733
 1734
 1735
 1736
 1737
 1738
 1739
 1740
 1741
 1742
 1743
 1744
 1745
 1746
 1747
 1748
 1749
 1750
 1751
 1752
 1753
 1754
 1755
 1756
 1757
 1758
 1759
 1760
 1761
 1762
 1763
 1764
 1765
 1766
 1767
 1768
 1769
 1770
 1771
 1772
 1773
 1774
 1775
 1776
 1777
 1778
 1779
 1780
 1781
 1782
 1783
 1784
 1785
 1786
 1787
 1788
 1789
 1790
 1791
 1792
 1793
 1794
 1795
 1796
 1797
 1798
 1799
 1800
 1801
 1802
 1803
 1804
 1805
 1806
 1807
 1808
 1809
 1810
 1811
 1812
 1813
 1814
 1815
 1816
 1817
 1818
 1819
 1820
 1821
 1822
 1823
 1824
 1825
 1826
 1827
 1828
 1829
 1830
 1831
 1832
 1833
 1834
 1835
 1836
 1837
 1838
 1839
 1840
 1841
 1842
 1843
 1844
 1845
 1846
 1847
 1848
 1849
 1850
 1851
 1852
 1853
 1854
 1855
 1856
 1857
 1858
 1859
 1860
 1861
 1862
 1863
 1864
 1865
 1866
 1867
 1868
 1869
 1870
 1871
 1872
 1873
 1874
 1875
 1876
 1877
 1878
 1879
 1880
 1881
 1882
 1883
 1884
 1885
 1886
 1887
 1888
 1889
 1890
 1891
 1892
 1893
 1894
 1895
 1896
 1897
 1898
 1899
 1900
 1901
 1902
 1903
 1904
 1905
 1906
 1907
 1908
 1909
 1910
 1911
 1912
 1913
 1914
 1915
 1916
 1917
 1918
 1919
 1920
 1921
 1922
 1923
 1924
 1925
 1926
 1927
 1928
 1929
 1930
 1931
 1932
 1933
 1934
 1935
 1936
 1937
 1938
 1939
 1940
 1941
 1942
 1943
 1944
 1945
 1946
 1947
 1948
 1949
 1950
 1951
 1952
 1953
 1954
 1955
 1956
 1957
 1958
 1959
 1960
 1961
 1962
 1963
 1964
 1965
 1966
 1967
 1968
 1969
 1970
 1971
 1972
 1973
 1974
 1975
 1976
 1977
 1978
 1979
 1980
 1981
 1982
 1983
 1984
 1985
 1986
 1987
 1988
 1989
 1990
 1991
 1992
 1993
 1994
 1995
 1996
 1997
 1998
 1999
 2000
 2001
 2002
 2003
 2004
 2005
 2006
 2007
 2008
 2009
 2010
 2011
 2012
 2013
 2014
 2015
 2016
 2017
 2018
 2019
 2020
 2021
 2022
 2023
 2024
 2025
 2026
 2027
 2028
 2029
 2030
 2031
 2032
 2033
 2034
 2035
 2036
 2037
 2038
 2039
 2040
 2041
 2042
 2043
 2044
 2045
 2046
 2047
 2048
 2049
 2050
 2051
 2052
 2053
 2054
 2055
 2056
 2057
 2058
 2059
 2060
 2061
 2062
 2063
 2064
 2065
 2066
 2067
 2068
 2069
 2070
 2071
 2072
 2073
 2074
 2075
 2076
 2077
 2078
 2079
 2080
 2081
 2082
 2083
 2084
 2085
 2086
 2087
 2088
 2089
 2090
 2091
 2092
 2093
 2094
 2095
 2096
 2097
 2098
 2099
 2100
 2101
 2102
 2103
 2104
 2105
 2106
 2107
 2108
 2109
 2110
 2111
 2112
 2113
 2114
 2115
 2116
 2117
 2118
 2119
 2120
 2121
 2122
 2123
 2124
 2125
 2126
 2127
 2128
 2129
 2130
 2131
 2132
 2133
 2134
 2135
 2136
 2137
 2138
 2139
 2140
 2141
 2142
 2143
 2144
 2145
 2146
 2147
 2148
 2149
 2150
 2151
 2152
 2153
 2154
 2155
 2156
 2157
 2158
 2159
 2160
 2161
 2162
 2163
 2164
 2165
 2166
 2167
 2168
 2169
 2170
 2171
 2172
 2173
 2174
 2175
 2176
 2177
 2178
 2179
 2180
 2181
 2182
 2183
 2184
 2185
 2186
 2187
 2188
 2189
 2190
 2191
 2192
 2193
 2194
 2195
 2196
 2197
 2198
 2199
 2200
 2201
 2202
 2203
 2204
 2205
 2206
 2207
 2208
 2209
 2210
 2211
 2212
 2213
 2214
 2215
 2216
 2217
 2218
 2219
 2220
 2221
 2222
 2223
 2224
 2225
 2226
 2227
 2228
 2229
 2230
 2231
 2232
 2233
 2234
 2235
 2236
 2237
 2238
 2239
 2240
 2241
 2242
 2243
 2244
 2245
 2246
 2247
 2248
 2249
 2250
 2251
 2252
 2253
 2254
 2255
 2256
 2257
 2258
 2259
 2260
 2261
 2262
 2263
 2264
 2265
 2266
 2267
 2268
 2269
 2270
 2271
 2272
 2273
 2274
 2275
 2276
 2277
 2278
 2279
 2280
 2281
 2282
 2283
 2284
 2285
 2286
 2287
 2288
 2289
 2290
 2291
 2292
 2293
 2294
 2295
 2296
 2297
 2298
 2299
 2300
 2301
 2302
 2303
 2304
 2305
 2306
 2307
 2308
 2309
 2310
 2311
 2312
 2313
 2314
 2315
 2316
 2317
 2318
 2319
 2320
 2321
 2322
 2323
 2324
 2325
 2326
 2327
 2328
 2329
 2330
 2331
 2332
 2333
 2334
 2335
 2336
 2337
 2338
 2339
 2340
 2341
 2342
 2343
 2344
 2345
 2346
 2347
 2348
 2349
 2350
 2351
 2352
 2353
 2354
 2355
 2356
 2357
 2358
 2359
 2360
 2361
 2362
 2363
 2364
 2365
 2366
 2367
 2368
 2369
 2370
 2371
 2372
 2373
 2374
 2375
 2376
 2377
 2378
 2379
 2380
 2381
 2382
 2383
 2384
 2385
 2386
 2387
 2388
 2389
 2390
 2391
 2392
 2393
 2394
 2395
 2396
 2397
 2398
 2399
 2400
 2401
 2402
 2403
 2404
 2405
 2406
 2407
 2408
 2409
 2410
 2411
 2412
 2413
 2414
 2415
 2416
 2417
 2418
 2419
 2420
 2421
 2422
 2423
 2424
 2425
 2426
 2427
 2428
 2429
 2430
 2431
 2432
 2433
 2434
 2435
 2436
 2437
 2438
 2439
 2440
 2441
 2442
 2443
 2444
 2445
 2446
 2447
 2448
 2449
 2450
 2451
 2452
 2453
 2454
 2455
 2456
 2457
 2458
 2459
 2460
 2461
 2462
 2463
 2464
 2465
 2466
 2467
 2468
 2469
 2470
 2471
 2472
 2473
 2474
 2475
 2476
 2477
 2478
 2479
 2480
 2481
 2482
 2483
 2484
 2485
 2486
 2487
 2488
 2489
 2490
 2491
 2492
 2493
 2494
 2495
 2496
 2497
 2498
 2499
 2500
 2501
 2502
 2503
 2504
 2505
 2506
 2507
 2508
 2509
 2510
 2511
 2512
 2513
 2514
 2515
 2516
 2517
 2518
 2519
 2520
 2521
 2522
 2523
 2524
 2525
 2526
 2527
 2528
 2529
 2530
 2531
 2532
 2533
 2534
 2535
 2536
 2537
 2538
 2539
 2540
 2541
 2542
 2543
 2544
 2545
 2546
 2547
 2548
 2549
 2550
 2551
 2552
 2553
 2554
 2555
 2556
 2557
 2558
 2559
 2560
 2561
 2562
 2563
 2564
 2565
 2566
 2567
 2568
 2569
 2570
 2571
 2572
 2573
 2574
 2575
 2576
 2577
 2578
 2579
 2580
 2581
 2582
 2583
 2584
 2585
 2586
 2587
 2588
 2589
 2590
 2591
 2592
 2593
 2594
 2595
 2596
 2597
 2598
 2599
 2600
 2601
 2602
 2603
 2604
 2605
 2606
 2607
 2608
 2609
 2610
 2611
 2612
 2613
 2614
 2615
 2616
 2617
 2618
 2619
 2620
 2621
 2622
 2623
 2624
 2625
 2626
 2627
 2628
 2629
 2630
 2631
 2632
 2633
 2634
 2635
 2636
 2637
 2638
 2639
 2640
 2641
 2642
 2643
 2644
 2645
 2646
 2647
 2648
 2649
 2650
 2651
 2652
 2653
 2654
 2655
 2656
 2657
 2658
 2659
 2660
 2661
 2662
 2663
 2664
 2665
 2666
 2667
 2668
 2669
 2670
 2671
 2672
 2673
 2674
 2675
 2676
 2677
 2678
 2679
 2680
 2681
 2682
 2683
 2684
 2685
 2686
 2687
 2688
 2689
 2690
 2691
 2692
 2693
 2694
 2695
 2696
 2697
 2698
 2699
 2700
 2701
 2702
 2703
 2704
 2705
 2706
 2707
 2708
 2709
 2710
 2711
 2712
 2713
 2714
 2715
 2716
 2717
 2718
 2719
 2720
 2721
 2722
 2723
 2724
 2725
 2726
 2727
 2728
 2729
 2730
 2731
 2732
 2733
 2734
 2735
 2736
 2737
 2738
 2739
 2740
 2741
 2742
 2743
 2744
 2745
 2746
 2747
 2748
 2749
 2750
 2751
 2752
 2753
 2754
 2755
 2756
 2757
 2758
 2759
 2760
 2761
 2762
 2763
 2764
 2765
 2766
 2767
 2768
 2769
 2770
 2771
 2772
 2773
 2774
 2775
 2776
 2777
 2778
 2779
 2780
 2781
 2782
 2783
 2784
 2785
 2786
 2787
 2788
 2789
 2790
 2791
 2792
 2793
 2794
 2795
 2796
 2797
 2798
 2799
 2800
 2801
 2802
 2803
 2804
 2805
 2806
 2807
 2808
 2809
 2810
 2811
 2812
 2813
 2814
 2815
 2816
 2817
 2818
 2819
 2820
 2821
 2822
 2823
 2824
 2825
 2826
 2827
 2828
 2829
 2830
 2831
 2832
 2833
 2834
 2835
 2836
 2837
 2838
 2839
 2840
 2841
 2842
 2843
 2844
 2845
 2846
 2847
 2848
 2849
 2850
 2851
 2852
 2853
 2854
 2855
 2856
 2857
 2858
 2859
 2860
 2861
 2862
 2863
 2864
 2865
 2866
 2867
 2868
 2869
 2870
 2871
 2872
 2873
 2874
 2875
 2876
 2877
 2878
 2879
 2880
 2881
 2882
 2883
 2884
 2885
 2886
 2887
 2888
 2889
 2890
 2891
 2892
 2893
 2894
 2895
 2896
 2897
 2898
 2899
 2900
 2901
 2902
 2903
 2904
 2905
 2906
 2907
 2908
 2909
 2910
 2911
 2912
 2913
 2914
 2915
 2916
 2917
 2918
 2919
 2920
 2921
 2922
 2923
 2924
 2925
 2926
 2927
 2928
 2929
 2930
 2931
 2932
 2933
 2934
 2935
 2936
 2937
 2938
 2939
 2940
 2941
 2942
 2943
 2944
 2945
 2946
 2947
 2948
 2949
 2950
 2951
 2952
 2953
 2954
 2955
 2956
 2957
 2958
 2959
 2960
 2961
 2962
 2963
 2964
 2965
 2966
 2967
 2968
 2969
 2970
 2971
 2972
 2973
 2974
 2975
 2976
 2977
 2978
 2979
 2980
 2981
 2982
 2983
 2984
 2985
 2986
 2987
 2988
 2989
 2990
 2991
 2992
 2993
 2994
 2995
 2996
 2997
 2998
 2999
 3000
 3001
 3002
 3003
 3004
 3005
 3006
 3007
 3008
 3009
 3010
 3011
 3012
 3013
 3014
 3015
 3016
 3017
 3018
 3019
 3020
 3021
 3022
 3023
 3024
 3025
 3026
 3027
 3028
 3029
 3030
 3031
 3032
 3033
 3034
 3035
 3036
 3037
 3038
 3039
 3040
 3041
 3042
 3043
 3044
 3045
 3046
 3047
 3048
 3049
 3050
 3051
 3052
 3053
 3054
 3055
 3056
 3057
 3058
 3059
 3060
 3061
 3062
 3063
 3064
 3065
 3066
 3067
 3068
 3069
 3070
 3071
 3072
 3073
 3074
 3075
 3076
 3077
 3078
 3079
 3080
 3081
 3082
 3083
 3084
 3085
 3086
 3087
 3088
 3089
 3090
 3091
 3092
 3093
 3094
 3095
 3096
 3097
 3098
 3099
 3100
 3101
 3102
 3103
 3104
 3105
 3106
 3107
 3108
 3109
 3110
 3111
 3112
 3113
 3114
 3115
 3116
 3117
 3118
 3119
 3120
 3121
 3122
 3123
 3124
 3125
 3126
 3127
 3128
 3129
 3130
 3131
 3132
 3133
 3134
 3135
 3136
 3137
 3138
 3139
 3140
 3141
 3142
 3143
 3144
 3145
 3146
 3147
 3148
 3149
 3150
 3151
 3152
 3153
 3154
 3155
 3156
 3157
 3158
 3159
 3160
 3161
 3162
 3163
 3164
 3165
 3166
 3167
 3168
 3169
 3170
 3171
 3172
 3173
 3174
 3175
 3176
 3177
 3178
 3179
 3180
 3181
 3182
 3183
 3184
 3185
 3186
 3187
 3188
 3189
 3190
 3191
 3192
 3193
 3194
 3195
 3196
 3197
 3198
 3199
 3200
 3201
 3202
 3203
 3204
 3205
 3206
 3207
 3208
 3209
 3210
 3211
 3212
 3213
 3214
 3215
 3216
 3217
 3218
 3219
 3220
 3221
 3222
 3223
 3224
 3225
 3226
 3227
 3228
 3229
 3230
 3231
 3232
 3233
 3234
 3235
 3236
 3237
 3238
 3239
 3240
 3241
 3242
 3243
 3244
 3245
 3246
 3247
 3248
 3249
 3250
 3251
 3252
 3253
 3254
 3255
 3256
 3257
 3258
 3259
 3260
 3261
 3262
 3263
 3264
 3265
 3266
 3267
 3268
 3269
 3270
 3271
 3272
 3273
 3274
 3275
 3276
 3277
 3278
 3279
 3280
 3281
 3282
 3283
 3284
 3285
 3286
 3287
 3288
 3289
 3290
 3291
 3292
 3293
 3294
 3295
 3296
 3297
 3298
 3299
 3300
 3301
 3302
 3303
 3304
 3305
 3306
 3307
 3308
 3309
 3310
 3311
 3312
 3313
 3314
 3315
 3316
 3317
 3318
 3319
 3320
 3321
 3322
 3323
 3324
 3325
 3326
 3327
 3328
 3329
 3330
 3331
 3332
 3333
 3334
 3335
 3336
 3337
 3338
 3339
 3340
 3341
 3342
 3343
 3344
 3345
 3346
 3347
 3348
 3349
 3350
 3351
 3352
 3353
 3354
 3355
 3356
 3357
 3358
 3359
 3360
 3361
 3362
 3363
 3364
 3365
 3366
 3367
 3368
 3369
 3370
 3371
 3372
 3373
 3374
 3375
 3376
 3377
 3378
 3379
 3380
 3381
 3382
 3383
 3384
 3385
 3386
 3387
 3388
 3389
 3390
 3391
 3392
 3393
 3394
 3395
 3396
 3397
 3398
 3399
 3400
 3401
 3402
 3403
 3404
 3405
 3406
 3407
 3408
 3409
 3410
 3411
 3412
 3413
 3414
 3415
 3416
 3417
 3418
 3419
 3420
 3421
 3422
 3423
 3424
 3425
 3426
 3427
 3428
 3429
 3430
 3431
 3432
 3433
 3434
 3435
 3436
 3437
 3438
 3439
 3440
 3441
 3442
 3443
 3444
 3445
 3446
 3447
 3448
 3449
 3450
 3451
 3452
 3453
 3454
 3455
 3456
 3457
 3458
 3459
 3460
 3461
 3462
 3463
 3464
 3465
 3466
 3467
 3468
 3469
 3470
 3471
 3472
 3473
 3474
 3475
 3476
 3477
 3478
 3479
 3480
 3481
 3482
 3483
 3484
 3485
 3486
 3487
 3488
 3489
 3490
 3491
 3492
 3493
 3494
 3495
 3496
 3497
 3498
 3499
 3500
 3501
 3502
 3503
 3504
 3505
 3506
 3507
 3508
 3509
 3510
 3511
 3512
 3513
 3514
 3515
 3516
 3517
 3518
 3519
 3520
 3521
 3522
 3523
 3524
 3525
 3526
 3527
 3528
 3529
 3530
 3531
 3532
 3533
 3534
 3535
 3536
 3537
 3538
 3539
 3540
 3541
 3542
 3543
 3544
 3545
 3546
 3547
 3548
 3549
 3550
 3551
 3552
 3553
 3554
 3555
 3556
 3557
 3558
 3559
 3560
 3561
 3562
 3563
 3564
 3565
 3566
 3567
 3568
 3569
 3570
 3571
 3572
 3573
 3574
 3575
 3576
 3577
 3578
 3579
 3580
 3581
 3582
 3583
 3584
 3585
 3586
 3587
 3588
 3589
 3590
 3591
 3592
 3593
 3594
 3595
 3596
 3597
 3598
 3599
 3600
 3601
 3602
 3603
 3604
 3605
 3606
 3607
 3608
 3609
 3610
 3611
 3612
 3613
 3614
 3615
 3616
 3617
 3618
 3619
 3620
 3621
 3622
 3623
 3624
 3625
 3626
 3627
 3628
 3629
 3630
 3631
 3632
 3633
 3634
 3635
 3636
 3637
 3638
 3639
 3640
 3641
 3642
 3643
 3644
 3645
 3646
 3647
 3648
 3649
 3650
 3651
 3652
 3653
 3654
 3655
 3656
 3657
 3658
 3659
 3660
 3661
 3662
 3663
 3664
 3665
 3666
 3667
 3668
 3669
 3670
 3671
 3672
 3673
 3674
 3675
 3676
 3677
 3678
 3679
 3680
 3681
 3682
 3683
 3684
 3685
 3686
 3687
 3688
 3689
 3690
 3691
 3692
 3693
 3694
 3695
 3696
 3697
 3698
 3699
 3700
 3701
 3702
 3703
 3704
 3705
 3706
 3707
 3708
 3709
 3710
 3711
 3712
 3713
 3714
 3715
 3716
 3717
 3718
 3719
 3720
 3721
 3722
 3723
 3724
 3725
 3726
 3727
 3728
 3729
 3730
 3731
 3732
 3733
 3734
 3735
 3736
 3737
 3738
 3739
 3740
 3741
 3742
 3743
 3744
 3745
 3746
 3747
 3748
 3749
 3750
 3751
 3752
 3753
 3754
 3755
 3756
 3757
 3758
 3759
 3760
 3761
 3762
 3763
 3764
 3765
 3766
 3767
 3768
 3769
 3770
 3771
 3772
 3773
 3774
 3775
 3776
 3777
 3778
 3779
 3780
 3781
 3782
 3783
 3784
 3785
 3786
 3787
 3788
 3789
 3790
 3791
 3792
 3793
 3794
 3795
 3796
 3797
 3798
 3799
 3800
 3801
 3802
 3803
 3804
 3805
 3806
 3807
 3808
 3809
 3810
 3811
 3812
 3813
 3814
 3815
 3816
 3817
 3818
 3819
 3820
 3821
 3822
 3823
 3824
 3825
 3826
 3827
 3828
 3829
 3830
 3831
 3832
 3833
 3834
 3835
 3836
 3837
 3838
 3839
 3840
 3841
 3842
 3843
 3844
 3845
 3846
 3847
 3848
 3849
 3850
 3851
 3852
 3853
 3854
 3855
 3856
 3857
 3858
 3859
 3860
 3861
 3862
 3863
 3864
 3865
 3866
 3867
 3868
 3869
 3870
 3871
 3872
 3873
 3874
 3875
 3876
 3877
 3878
 3879
 3880
 3881
 3882
 3883
 3884
 3885
 3886
 3887
 3888
 3889
 3890
 3891
 3892
 3893
 3894
 3895
 3896
 3897
 3898
 3899
 3900
 3901
 3902
 3903
 3904
 3905
 3906
 3907
 3908
 3909
 3910
 3911
 3912
 3913
 3914
 3915
 3916
 3917
 3918
 3919
 3920
 3921
 3922
 3923
 3924
 3925
 3926
 3927
 3928
 3929
 3930
 3931
 3932
 3933
 3934
 3935
 3936
 3937
 3938
 3939
 3940
 3941
 3942
 3943
 3944
 3945
 3946
 3947
 3948
 3949
 3950
 3951
 3952
 3953
 3954
 3955
 3956
 3957
 3958
 3959
 3960
 3961
 3962
 3963
 3964
 3965
 3966
 3967
 3968
 3969
 3970
 3971
 3972
 3973
 3974
 3975
 3976
 3977
 3978
 3979
 3980
 3981
 3982
 3983
 3984
 3985
 3986
 3987
 3988
 3989
 3990
 3991
 3992
 3993
 3994
 3995
 3996
 3997
 3998
 3999
 4000
 4001
 4002
 4003
 4004
 4005
 4006
 4007
 4008
 4009
 4010
 4011
 4012
 4013
 4014
 4015
 4016
 4017
 4018
 4019
 4020
 4021
 4022
 4023
 4024
 4025
 4026
 4027
 4028
 4029
 4030
 4031
 4032
 4033
 4034
 4035
 4036
 4037
 4038
 4039
 4040
 4041
 4042
 4043
 4044
 4045
 4046
 4047
 4048
 4049
 4050
 4051
 4052
 4053
 4054
 4055
 4056
 4057
 4058
 4059
 4060
 4061
 4062
 4063
 4064
 4065
 4066
 4067
 4068
 4069
 4070
 4071
 4072
 4073
 4074
 4075
 4076
 4077
 4078
 4079
 4080
 4081
 4082
 4083
 4084
 4085
 4086
 4087
 4088
 4089
 4090
 4091
 4092
 4093
 4094
 4095
 4096
 4097
 4098
 4099
 4100
 4101
 4102
 4103
 4104
 4105
 4106
 4107
 4108
 4109
 4110
 4111
 4112
 4113
 4114
 4115
 4116
 4117
 4118
 4119
 4120
 4121
 4122
 4123
 4124
 4125
 4126
 4127
 4128
 4129
 4130
 4131
 4132
 4133
 4134
 4135
 4136
 4137
 4138
 4139
 4140
 4141
 4142
 4143
 4144
 4145
 4146
 4147
 4148
 4149
 4150
 4151
 4152
 4153
 4154
 4155
 4156
 4157
 4158
 4159
 4160
 4161
 4162
 4163
 4164
 4165
 4166
 4167
 4168
 4169
 4170
 4171
 4172
 4173
 4174
 4175
 4176
 4177
 4178
 4179
 4180
 4181
 4182
 4183
 4184
 4185
 4186
 4187
 4188
 4189
 4190
 4191
 4192
 4193
 4194
 4195
 4196
 4197
 4198
 4199
 4200
 4201
 4202
 4203
 4204
 4205
 4206
 4207
 4208
 4209
 4210
 4211
 4212
 4213
 4214
 4215
 4216
 4217
 4218
 4219
 4220
 4221
 4222
 4223
 4224
 4225
 4226
 4227
 4228
 4229
 4230
 4231
 4232
 4233
 4234
 4235
 4236
 4237
 4238
 4239
 4240
 4241
 4242
 4243
 4244
 4245
 4246
 4247
 4248
 4249
 4250
 4251
 4252
 4253
 4254
 4255
 4256
 4257
 4258
 4259
 4260
 4261
 4262
 4263
 4264
 4265
 4266
 4267
 4268
 4269
 4270
 4271
 4272
 4273
 4274
 4275
 4276
 4277
 4278
 4279
 4280
 4281
 4282
 4283
 4284
 4285
 4286
 4287
 4288
 4289
 4290
 4291
 4292
 4293
 4294
 4295
 4296
 4297
 4298
 4299
 4300
 4301
 4302
 4303
 4304
 4305
 4306
 4307
 4308
 4309
 4310
 4311
 4312
 4313
 4314
 4315
 4316
 4317
 4318
 4319
 4320
 4321
 4322
 4323
 4324
 4325
 4326
 4327
 4328
 4329
 4330
 4331
 4332
 4333
 4334
 4335
 4336
 4337
 4338
 4339
 4340
 4341
 4342
 4343
 4344
 4345
 4346
 4347
 4348
 4349
 4350
 4351
 4352
 4353
 4354
 4355
 4356
 4357
 4358
 4359
 4360
 4361
 4362
 4363
 4364
 4365
 4366
 4367
 4368
 4369
 4370
 4371
 4372
 4373
 4374
 4375
 4376
 4377
 4378
 4379
 4380
 4381
 4382
 4383
 4384
 4385
 4386
 4387
 4388
 4389
 4390
 4391
 4392
 4393
 4394
 4395
 4396
 4397
 4398
 4399
 4400
 4401
 4402
 4403
 4404
 4405
 4406
 4407
 4408
 4409
 4410
 4411
 4412
 4413
 4414
 4415
 4416
 4417
 4418
 4419
 4420
 4421
 4422
 4423
 4424
 4425
 4426
 4427
 4428
 4429
 4430
 4431
 4432
 4433
 4434
 4435
 4436
 4437
 4438
 4439
 4440
 4441
 4442
 4443
 4444
 4445
 4446
 4447
 4448
 4449
 4450
 4451
 4452
 4453
 4454
 4455
 4456
 4457
 4458
 4459
 4460
 4461
 4462
 4463
 4464
 4465
 4466
 4467
 4468
 4469
 4470
 4471
 4472
 4473
 4474
 4475
 4476
 4477
 4478
 4479
 4480
 4481
 4482
 4483
 4484
 4485
 4486
 4487
 4488
 4489
 4490
 4491
 4492
 4493
 4494
 4495
 4496
 4497
 4498
 4499
 4500
 4501
 4502
 4503
 4504
 4505
 4506
 4507
 4508
 4509
 4510
 4511
 4512
 4513
 4514
 4515
 4516
 4517
 4518
 4519
 4520
 4521
 4522
 4523
 4524
 4525
 4526
 4527
 4528
 4529
 4530
 4531
 4532
 4533
 4534
 4535
 4536
 4537
 4538
 4539
 4540
 4541
 4542
 4543
 4544
 4545
 4546
 4547
 4548
 4549
 4550
 4551
 4552
 4553
 4554
 4555
 4556
 4557
 4558
 4559
 4560
 4561
 4562
 4563
 4564
 4565
 4566
 4567
 4568
 4569
 4570
 4571
 4572
 4573
 4574
 4575
 4576
 4577
 4578
 4579
 4580
 4581
 4582
 4583
 4584
 4585
 4586
 4587
 4588
 4589
 4590
 4591
 4592
 4593
 4594
 4595
 4596
 4597
 4598
 4599
 4600
 4601
 4602
 4603
 4604
 4605
 4606
 4607
 4608
 4609
 4610
 4611
 4612
 4613
 4614
 4615
 4616
 4617
 4618
 4619
 4620
 4621
 4622
 4623
 4624
 4625
 4626
 4627
 4628
 4629
 4630
 4631
 4632
 4633
 4634
 4635
 4636
 4637
 4638
 4639
 4640
 4641
 4642
 4643
 4644
 4645
 4646
 4647
 4648
 4649
 4650
 4651
 4652
 4653
 4654
 4655
 4656
 4657
 4658
 4659
 4660
 4661
 4662
 4663
 4664
 4665
 4666
 4667
 4668
 4669
 4670
 4671
 4672
 4673
 4674
 4675
 4676
 4677
 4678
 4679
 4680
 4681
 4682
 4683
 4684
 4685
 4686
 4687
 4688
 4689
 4690
 4691
 4692
 4693
 4694
 4695
 4696
 4697
 4698
 4699
 4700
 4701
 4702
 4703
 4704
 4705
 4706
 4707
 4708
 4709
 4710
 4711
 4712
 4713
 4714
 4715
 4716
 4717
 4718
 4719
 4720
 4721
 4722
 4723
 4724
 4725
 4726
 4727
 4728
 4729
 4730
 4731
 4732
 4733
 4734
 4735
 4736
 4737
 4738
 4739
 4740
 4741
 4742
 4743
 4744
 4745
 4746
 4747
 4748
 4749
 4750
 4751
 4752
 4753
 4754
 4755
 4756
 4757
 4758
 4759
 4760
 4761
 4762
 4763
 4764
 4765
 4766
 4767
 4768
 4769
 4770
 4771
 4772
 4773
 4774
 4775
 4776
 4777
 4778
 4779
 4780
 4781
 4782
 4783
 4784
 4785
 4786
 4787
 4788
 4789
 4790
 4791
 4792
 4793
 4794
 4795
 4796
 4797
 4798
 4799
 4800
 4801
 4802
 4803
 4804
 4805
 4806
 4807
 4808
 4809
 4810
 4811
 4812
 4813
 4814
 4815
 4816
 4817
 4818
 4819
 4820
 4821
 4822
 4823
 4824
 4825
 4826
 4827
 4828
 4829
 4830
 4831
 4832
 4833
 4834
 4835
 4836
 4837
 4838
 4839
 4840
 4841
 4842
 4843
 4844
 4845
 4846
 4847
 4848
 4849
 4850
 4851
 4852
 4853
 4854
 4855
 4856
 4857
 4858
 4859
 4860
 4861
 4862
 4863
 4864
 4865
 4866
 4867
 4868
 4869
 4870
 4871
 4872
 4873
 4874
 4875
 4876
 4877
 4878
 4879
// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+fp-armv8 < %s | FileCheck %s
  .globl _func

// Check that the assembler can handle the documented syntax from the ARM ARM.
// For complex constructs like shifter operands, check more thoroughly for them
// once then spot check that following instructions accept the form generally.
// This gives us good coverage while keeping the overall size of the test
// more reasonable.


_func:
// CHECK: _func

//------------------------------------------------------------------------------
// Add/sub (extended register)
//------------------------------------------------------------------------------
        // Basic extends 64-bit ops
        add x2, x4, w5, uxtb
        add x20, sp, w19, uxth
        add x12, x1, w20, uxtw
        add x20, x3, x13, uxtx
        add x17, x25, w20, sxtb
        add x18, x13, w19, sxth
        add sp, x2, w3, sxtw
        add x3, x5, x9, sxtx
// CHECK: add      x2, x4, w5, uxtb           // encoding: [0x82,0x00,0x25,0x8b]
// CHECK: add      x20, sp, w19, uxth         // encoding: [0xf4,0x23,0x33,0x8b]
// CHECK: add      x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0x8b]
// CHECK: add      x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0x8b]
// CHECK: add      x17, x25, w20, sxtb        // encoding: [0x31,0x83,0x34,0x8b]
// CHECK: add      x18, x13, w19, sxth        // encoding: [0xb2,0xa1,0x33,0x8b]
// CHECK: add      sp, x2, w3, sxtw           // encoding: [0x5f,0xc0,0x23,0x8b]
// CHECK: add      x3, x5, x9, sxtx           // encoding: [0xa3,0xe0,0x29,0x8b]

        // Basic extends, 32-bit ops
        add w2, w5, w7, uxtb
        add w21, w15, w17, uxth
        add w30, w29, wzr, uxtw
        add w19, w17, w1, uxtx  // Goodness knows what this means
        add w2, w5, w1, sxtb
        add w26, w17, w19, sxth
        add w0, w2, w3, sxtw
        add w2, w3, w5, sxtx
// CHECK: add      w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x0b]
// CHECK: add      w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x0b]
// CHECK: add      w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x0b]
// CHECK: add      w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x0b]
// CHECK: add      w2, w5, w1, sxtb           // encoding: [0xa2,0x80,0x21,0x0b]
// CHECK: add      w26, w17, w19, sxth        // encoding: [0x3a,0xa2,0x33,0x0b]
// CHECK: add      w0, w2, w3, sxtw           // encoding: [0x40,0xc0,0x23,0x0b]
// CHECK: add      w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x0b]

        // Nonzero shift amounts
        add x2, x3, w5, sxtb #0
        add x7, x11, w13, uxth #4
        add w17, w19, w23, uxtw #2
        add w29, w23, w17, uxtx #1
// CHECK: add      x2, x3, w5, sxtb           // encoding: [0x62,0x80,0x25,0x8b]
// CHECK: add      x7, x11, w13, uxth #4      // encoding: [0x67,0x31,0x2d,0x8b]
// CHECK: add      w17, w19, w23, uxtw #2     // encoding: [0x71,0x4a,0x37,0x0b]
// CHECK: add      w29, w23, w17, uxtx #1     // encoding: [0xfd,0x66,0x31,0x0b]

        // Sub
        sub x2, x4, w5, uxtb #2
        sub x20, sp, w19, uxth #4
        sub x12, x1, w20, uxtw
        sub x20, x3, x13, uxtx #0
        sub x17, x25, w20, sxtb
        sub x18, x13, w19, sxth
        sub sp, x2, w3, sxtw
        sub x3, x5, x9, sxtx
// CHECK: sub      x2, x4, w5, uxtb #2        // encoding: [0x82,0x08,0x25,0xcb]
// CHECK: sub      x20, sp, w19, uxth #4      // encoding: [0xf4,0x33,0x33,0xcb]
// CHECK: sub      x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0xcb]
// CHECK: sub      x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0xcb]
// CHECK: sub      x17, x25, w20, sxtb        // encoding: [0x31,0x83,0x34,0xcb]
// CHECK: sub      x18, x13, w19, sxth        // encoding: [0xb2,0xa1,0x33,0xcb]
// CHECK: sub      sp, x2, w3, sxtw           // encoding: [0x5f,0xc0,0x23,0xcb]
// CHECK: sub      x3, x5, x9, sxtx           // encoding: [0xa3,0xe0,0x29,0xcb]

        sub w2, w5, w7, uxtb
        sub w21, w15, w17, uxth
        sub w30, w29, wzr, uxtw
        sub w19, w17, w1, uxtx  // Goodness knows what this means
        sub w2, w5, w1, sxtb
        sub w26, wsp, w19, sxth
        sub wsp, w2, w3, sxtw
        sub w2, w3, w5, sxtx
// CHECK: sub      w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x4b]
// CHECK: sub      w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x4b]
// CHECK: sub      w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x4b]
// CHECK: sub      w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x4b]
// CHECK: sub      w2, w5, w1, sxtb           // encoding: [0xa2,0x80,0x21,0x4b]
// CHECK: sub      w26, wsp, w19, sxth        // encoding: [0xfa,0xa3,0x33,0x4b]
// CHECK: sub      wsp, w2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0x4b]
// CHECK: sub      w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x4b]

        // Adds
        adds x2, x4, w5, uxtb #2
        adds x20, sp, w19, uxth #4
        adds x12, x1, w20, uxtw
        adds x20, x3, x13, uxtx #0
        adds xzr, x25, w20, sxtb #3
        adds x18, sp, w19, sxth
        adds xzr, x2, w3, sxtw
        adds x3, x5, x9, sxtx #2
// CHECK: adds     x2, x4, w5, uxtb #2        // encoding: [0x82,0x08,0x25,0xab]
// CHECK: adds     x20, sp, w19, uxth #4      // encoding: [0xf4,0x33,0x33,0xab]
// CHECK: adds     x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0xab]
// CHECK: adds     x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0xab]
// CHECK: {{adds xzr,|cmn}} x25, w20, sxtb #3     // encoding: [0x3f,0x8f,0x34,0xab]
// CHECK: adds     x18, sp, w19, sxth         // encoding: [0xf2,0xa3,0x33,0xab]
// CHECK: {{adds xzr,|cmn}} x2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0xab]
// CHECK: adds     x3, x5, x9, sxtx #2        // encoding: [0xa3,0xe8,0x29,0xab]

        adds w2, w5, w7, uxtb
        adds w21, w15, w17, uxth
        adds w30, w29, wzr, uxtw
        adds w19, w17, w1, uxtx  // Goodness knows what this means
        adds w2, w5, w1, sxtb #1
        adds w26, wsp, w19, sxth
        adds wzr, w2, w3, sxtw
        adds w2, w3, w5, sxtx
// CHECK: adds     w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x2b]
// CHECK: adds     w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x2b]
// CHECK: adds     w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x2b]
// CHECK: adds     w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x2b]
// CHECK: adds     w2, w5, w1, sxtb #1        // encoding: [0xa2,0x84,0x21,0x2b]
// CHECK: adds     w26, wsp, w19, sxth        // encoding: [0xfa,0xa3,0x33,0x2b]
// CHECK: cmn w2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0x2b]
// CHECK: adds     w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x2b]

        // subs
        subs x2, x4, w5, uxtb #2
        subs x20, sp, w19, uxth #4
        subs x12, x1, w20, uxtw
        subs x20, x3, x13, uxtx #0
        subs xzr, x25, w20, sxtb #3
        subs x18, sp, w19, sxth
        subs xzr, x2, w3, sxtw
        subs x3, x5, x9, sxtx #2
// CHECK: subs     x2, x4, w5, uxtb #2        // encoding: [0x82,0x08,0x25,0xeb]
// CHECK: subs     x20, sp, w19, uxth #4      // encoding: [0xf4,0x33,0x33,0xeb]
// CHECK: subs     x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0xeb]
// CHECK: subs     x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0xeb]
// CHECK: {{subs xzr,|cmp}} x25, w20, sxtb #3     // encoding: [0x3f,0x8f,0x34,0xeb]
// CHECK: subs     x18, sp, w19, sxth         // encoding: [0xf2,0xa3,0x33,0xeb]
// CHECK: {{subs xzr,|cmp}} x2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0xeb]
// CHECK: subs     x3, x5, x9, sxtx #2        // encoding: [0xa3,0xe8,0x29,0xeb]

        subs w2, w5, w7, uxtb
        subs w21, w15, w17, uxth
        subs w30, w29, wzr, uxtw
        subs w19, w17, w1, uxtx  // Goodness knows what this means
        subs w2, w5, w1, sxtb #1
        subs w26, wsp, w19, sxth
        subs wzr, w2, w3, sxtw
        subs w2, w3, w5, sxtx
// CHECK: subs     w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x6b]
// CHECK: subs     w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x6b]
// CHECK: subs     w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x6b]
// CHECK: subs     w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x6b]
// CHECK: subs     w2, w5, w1, sxtb #1        // encoding: [0xa2,0x84,0x21,0x6b]
// CHECK: subs     w26, wsp, w19, sxth        // encoding: [0xfa,0xa3,0x33,0x6b]
// CHECK: {{subs wzr,|cmp}} w2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0x6b]
// CHECK: subs     w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x6b]

        // cmp
        cmp x4, w5, uxtb #2
        cmp sp, w19, uxth #4
        cmp x1, w20, uxtw
        cmp x3, x13, uxtx #0
        cmp x25, w20, sxtb #3
        cmp sp, w19, sxth
        cmp x2, w3, sxtw
        cmp x5, x9, sxtx #2
// CHECK: cmp      x4, w5, uxtb #2            // encoding: [0x9f,0x08,0x25,0xeb]
// CHECK: cmp      sp, w19, uxth #4           // encoding: [0xff,0x33,0x33,0xeb]
// CHECK: cmp      x1, w20, uxtw              // encoding: [0x3f,0x40,0x34,0xeb]
// CHECK: cmp      x3, x13, uxtx              // encoding: [0x7f,0x60,0x2d,0xeb]
// CHECK: cmp      x25, w20, sxtb #3          // encoding: [0x3f,0x8f,0x34,0xeb]
// CHECK: cmp      sp, w19, sxth              // encoding: [0xff,0xa3,0x33,0xeb]
// CHECK: cmp      x2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0xeb]
// CHECK: cmp      x5, x9, sxtx #2            // encoding: [0xbf,0xe8,0x29,0xeb]

        cmp w5, w7, uxtb
        cmp w15, w17, uxth
        cmp w29, wzr, uxtw
        cmp w17, w1, uxtx  // Goodness knows what this means
        cmp w5, w1, sxtb #1
        cmp wsp, w19, sxth
        cmp w2, w3, sxtw
        cmp w3, w5, sxtx
// CHECK: cmp      w5, w7, uxtb               // encoding: [0xbf,0x00,0x27,0x6b]
// CHECK: cmp      w15, w17, uxth             // encoding: [0xff,0x21,0x31,0x6b]
// CHECK: cmp      w29, wzr, uxtw             // encoding: [0xbf,0x43,0x3f,0x6b]
// CHECK: cmp      w17, w1, uxtx              // encoding: [0x3f,0x62,0x21,0x6b]
// CHECK: cmp      w5, w1, sxtb #1            // encoding: [0xbf,0x84,0x21,0x6b]
// CHECK: cmp      wsp, w19, sxth             // encoding: [0xff,0xa3,0x33,0x6b]
// CHECK: cmp      w2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0x6b]
// CHECK: cmp      w3, w5, sxtx               // encoding: [0x7f,0xe0,0x25,0x6b]


        // cmn
        cmn x4, w5, uxtb #2
        cmn sp, w19, uxth #4
        cmn x1, w20, uxtw
        cmn x3, x13, uxtx #0
        cmn x25, w20, sxtb #3
        cmn sp, w19, sxth
        cmn x2, w3, sxtw
        cmn x5, x9, sxtx #2
// CHECK: cmn      x4, w5, uxtb #2            // encoding: [0x9f,0x08,0x25,0xab]
// CHECK: cmn      sp, w19, uxth #4           // encoding: [0xff,0x33,0x33,0xab]
// CHECK: cmn      x1, w20, uxtw              // encoding: [0x3f,0x40,0x34,0xab]
// CHECK: cmn      x3, x13, uxtx              // encoding: [0x7f,0x60,0x2d,0xab]
// CHECK: cmn      x25, w20, sxtb #3          // encoding: [0x3f,0x8f,0x34,0xab]
// CHECK: cmn      sp, w19, sxth              // encoding: [0xff,0xa3,0x33,0xab]
// CHECK: cmn      x2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0xab]
// CHECK: cmn      x5, x9, sxtx #2            // encoding: [0xbf,0xe8,0x29,0xab]

        cmn w5, w7, uxtb
        cmn w15, w17, uxth
        cmn w29, wzr, uxtw
        cmn w17, w1, uxtx  // Goodness knows what this means
        cmn w5, w1, sxtb #1
        cmn wsp, w19, sxth
        cmn w2, w3, sxtw
        cmn w3, w5, sxtx
// CHECK: {{cmn|adds wzr,}}      w5, w7, uxtb               // encoding: [0xbf,0x00,0x27,0x2b]
// CHECK: {{cmn|adds wzr,}}      w15, w17, uxth             // encoding: [0xff,0x21,0x31,0x2b]
// CHECK: {{cmn|adds wzr,}}      w29, wzr, uxtw             // encoding: [0xbf,0x43,0x3f,0x2b]
// CHECK: {{cmn|adds wzr,}}      w17, w1, uxtx              // encoding: [0x3f,0x62,0x21,0x2b]
// CHECK: {{cmn|adds wzr,}}      w5, w1, sxtb #1            // encoding: [0xbf,0x84,0x21,0x2b]
// CHECK: {{cmn|adds wzr,}}      wsp, w19, sxth             // encoding: [0xff,0xa3,0x33,0x2b]
// CHECK: {{cmn|adds wzr,}}      w2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0x2b]
// CHECK: {{cmn|adds wzr,}}      w3, w5, sxtx               // encoding: [0x7f,0xe0,0x25,0x2b]

        // operands for cmp
        cmp x20, w29, uxtb #3
        cmp x12, x13, uxtx #4
        cmp wsp, w1, uxtb
        cmn wsp, wzr, sxtw
// CHECK: cmp      x20, w29, uxtb #3          // encoding: [0x9f,0x0e,0x3d,0xeb]
// CHECK: cmp      x12, x13, uxtx #4          // encoding: [0x9f,0x71,0x2d,0xeb]
// CHECK: cmp      wsp, w1, uxtb              // encoding: [0xff,0x03,0x21,0x6b]
// CHECK: {{cmn|adds wzr,}}      wsp, wzr, sxtw             // encoding: [0xff,0xc3,0x3f,0x2b]

        // LSL variant if sp involved
        sub sp, x3, x7, lsl #4
        add w2, wsp, w3, lsl #1
        cmp wsp, w9, lsl #0
        adds wzr, wsp, w3, lsl #4
        subs x3, sp, x9, lsl #2
// CHECK: sub      sp, x3, x7, lsl #4         // encoding: [0x7f,0x70,0x27,0xcb]
// CHECK: add      w2, wsp, w3, lsl #1        // encoding: [0xe2,0x47,0x23,0x0b]
// CHECK: cmp      wsp, w9                    // encoding: [0xff,0x43,0x29,0x6b]
// CHECK: cmn wsp, w3, lsl #4       // encoding: [0xff,0x53,0x23,0x2b]
// CHECK: subs     x3, sp, x9, lsl #2         // encoding: [0xe3,0x6b,0x29,0xeb]

//------------------------------------------------------------------------------
// Add/sub (immediate)
//------------------------------------------------------------------------------

// Check basic immediate values: an unsigned 12-bit immediate, optionally
// shifted left by 12 bits.
        add w4, w5, #0x0
        add w2, w3, #4095
        add w30, w29, #1, lsl #12
        add w13, w5, #4095, lsl #12
        add x5, x7, #1638
// CHECK: add      w4, w5, #0                 // encoding: [0xa4,0x00,0x00,0x11]
// CHECK: add      w2, w3, #4095              // encoding: [0x62,0xfc,0x3f,0x11]
// CHECK: add      w30, w29, #1, lsl #12      // encoding: [0xbe,0x07,0x40,0x11]
// CHECK: add      w13, w5, #4095, lsl #12    // encoding: [0xad,0xfc,0x7f,0x11]
// CHECK: add      x5, x7, #1638              // encoding: [0xe5,0x98,0x19,0x91]

// All registers involved in the non-S variants have 31 encoding sp rather than zr
        add w20, wsp, #801, lsl #0
        add wsp, wsp, #1104
        add wsp, w30, #4084
// CHECK: add      w20, wsp, #801             // encoding: [0xf4,0x87,0x0c,0x11]
// CHECK: add      wsp, wsp, #1104            // encoding: [0xff,0x43,0x11,0x11]
// CHECK: add      wsp, w30, #4084            // encoding: [0xdf,0xd3,0x3f,0x11]

// A few checks on the sanity of 64-bit versions
        add x0, x24, #291
        add x3, x24, #4095, lsl #12
        add x8, sp, #1074
        add sp, x29, #3816
// CHECK: add      x0, x24, #291              // encoding: [0x00,0x8f,0x04,0x91]
// CHECK: add      x3, x24, #4095, lsl #12    // encoding: [0x03,0xff,0x7f,0x91]
// CHECK: add      x8, sp, #1074              // encoding: [0xe8,0xcb,0x10,0x91]
// CHECK: add      sp, x29, #3816             // encoding: [0xbf,0xa3,0x3b,0x91]

// And on sub
        sub w0, wsp, #4077
        sub w4, w20, #546, lsl #12
        sub sp, sp, #288
        sub wsp, w19, #16
// CHECK: sub      w0, wsp, #4077             // encoding: [0xe0,0xb7,0x3f,0x51]
// CHECK: sub      w4, w20, #546, lsl #12     // encoding: [0x84,0x8a,0x48,0x51]
// CHECK: sub      sp, sp, #288               // encoding: [0xff,0x83,0x04,0xd1]
// CHECK: sub      wsp, w19, #16              // encoding: [0x7f,0x42,0x00,0x51]

// ADDS/SUBS accept zr in the Rd position but sp in the Rn position
        adds w13, w23, #291, lsl #12
        adds wzr, w2, #4095                  // FIXME: canonically should be cmn
        adds w20, wsp, #0x0
        adds xzr, x3, #0x1, lsl #12          // FIXME: canonically should be cmn
// CHECK: adds     w13, w23, #291, lsl #12    // encoding: [0xed,0x8e,0x44,0x31]
// CHECK: {{adds wzr,|cmn}} w2, #4095         // encoding: [0x5f,0xfc,0x3f,0x31]
// CHECK: adds     w20, wsp, #0               // encoding: [0xf4,0x03,0x00,0x31]
// CHECK: {{adds xzr,|cmn}} x3, #1, lsl #12   // encoding: [0x7f,0x04,0x40,0xb1]

// Checks for subs
        subs xzr, sp, #20, lsl #12           // FIXME: canonically should be cmp
        subs xzr, x30, #4095, lsl #0         // FIXME: canonically should be cmp
        subs x4, sp, #3822
// CHECK: {{subs xzr,|cmp}} sp, #20, lsl #12  // encoding: [0xff,0x53,0x40,0xf1]
// CHECK: {{subs xzr,|cmp}} x30, #4095        // encoding: [0xdf,0xff,0x3f,0xf1]
// CHECK: subs     x4, sp, #3822              // encoding: [0xe4,0xbb,0x3b,0xf1]

// cmn is an alias for adds zr, ...
        cmn w3, #291, lsl #12
        cmn wsp, #1365, lsl #0
        cmn sp, #1092, lsl #12
// CHECK: cmn      w3, #291, lsl #12          // encoding: [0x7f,0x8c,0x44,0x31]
// CHECK: cmn      wsp, #1365                 // encoding: [0xff,0x57,0x15,0x31]
// CHECK: cmn      sp, #1092, lsl #12         // encoding: [0xff,0x13,0x51,0xb1]

// cmp is an alias for subs zr, ... (FIXME: should always disassemble as such too).
        cmp x4, #300, lsl #12
        cmp wsp, #500
        cmp sp, #200, lsl #0
// CHECK: cmp      x4, #300, lsl #12          // encoding: [0x9f,0xb0,0x44,0xf1]
// CHECK: cmp      wsp, #500                  // encoding: [0xff,0xd3,0x07,0x71]
// CHECK: cmp      sp, #200                   // encoding: [0xff,0x23,0x03,0xf1]

// A "MOV" involving sp is encoded in this manner: add Reg, Reg, #0
        mov sp, x30
        mov wsp, w20
        mov x11, sp
        mov w24, wsp
// CHECK: mov      sp, x30                    // encoding: [0xdf,0x03,0x00,0x91]
// CHECK: mov      wsp, w20                   // encoding: [0x9f,0x02,0x00,0x11]
// CHECK: mov      x11, sp                    // encoding: [0xeb,0x03,0x00,0x91]
// CHECK: mov      w24, wsp                   // encoding: [0xf8,0x03,0x00,0x11]

// A relocation check (default to lo12, which is the only sane relocation anyway really)
        add x0, x4, #:lo12:var
// CHECK: add x0, x4, :lo12:var       // encoding: [0x80,0bAAAAAA00,0b00AAAAAA,0x91]
// CHECK:                             // fixup A - offset: 0, value: :lo12:var, kind: fixup_aarch64_add_imm12

//------------------------------------------------------------------------------
// Add-sub (shifted register)
//------------------------------------------------------------------------------

// As usual, we don't print the canonical forms of many instructions.

        add w3, w5, w7
        add wzr, w3, w5
        add w20, wzr, w4
        add w4, w6, wzr
// CHECK: add      w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x0b]
// CHECK: add      wzr, w3, w5                // encoding: [0x7f,0x00,0x05,0x0b]
// CHECK: add      w20, wzr, w4               // encoding: [0xf4,0x03,0x04,0x0b]
// CHECK: add      w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x0b]

        add w11, w13, w15, lsl #0
        add w9, w3, wzr, lsl #10
        add w17, w29, w20, lsl #31
        add w17, w29, w20, lsl #(31-2)
// CHECK: add      w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x0b]
// CHECK: add      w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x0b]
// CHECK: add      w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x0b]
// CHECK: add      w17, w29, w20, lsl #29     // encoding: [0xb1,0x77,0x14,0x0b]

        add w21, w22, w23, lsr #0
        add w24, w25, w26, lsr #18
        add w27, w28, w29, lsr #31
        add w27, w28, w29, lsr #(31-2)
// CHECK: add      w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x0b]
// CHECK: add      w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x0b]
// CHECK: add      w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x0b]
// CHECK: add      w27, w28, w29, lsr #29     // encoding: [0x9b,0x77,0x5d,0x0b]

        add w2, w3, w4, asr #0
        add w5, w6, w7, asr #21
        add w8, w9, w10, asr #31
        add w8, w9, w10, asr #(31-2)
// CHECK: add      w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x0b]
// CHECK: add      w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x0b]
// CHECK: add      w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x0b]
// CHECK: add      w8, w9, w10, asr #29       // encoding: [0x28,0x75,0x8a,0x0b]

        add x3, x5, x7
        add xzr, x3, x5
        add x20, xzr, x4
        add x4, x6, xzr
// CHECK: add      x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0x8b]
// CHECK: add      xzr, x3, x5                // encoding: [0x7f,0x00,0x05,0x8b]
// CHECK: add      x20, xzr, x4               // encoding: [0xf4,0x03,0x04,0x8b]
// CHECK: add      x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0x8b]

        add x11, x13, x15, lsl #0
        add x9, x3, xzr, lsl #10
        add x17, x29, x20, lsl #63
        add x17, x29, x20, lsl #(63-5)
// CHECK: add      x11, x13, x15              // encoding: [0xab,0x01,0x0f,0x8b]
// CHECK: add      x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x8b]
// CHECK: add      x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0x8b]
// CHECK: add	   x17, x29, x20, lsl #58     // encoding: [0xb1,0xeb,0x14,0x8b]

        add x21, x22, x23, lsr #0
        add x24, x25, x26, lsr #18
        add x27, x28, x29, lsr #63
        add x17, x29, x20, lsr #(63-5)
// CHECK: add      x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0x8b]
// CHECK: add      x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x8b]
// CHECK: add      x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0x8b]
// CHECK: add	   x17, x29, x20, lsr #58     // encoding: [0xb1,0xeb,0x54,0x8b]

        add x2, x3, x4, asr #0
        add x5, x6, x7, asr #21
        add x8, x9, x10, asr #63
        add x17, x29, x20, asr #(63-5)
// CHECK: add      x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0x8b]
// CHECK: add      x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0x8b]
// CHECK: add      x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0x8b]
// CHECK: add	   x17, x29, x20, asr #58     // encoding: [0xb1,0xeb,0x94,0x8b]

        adds w3, w5, w7
        adds wzr, w3, w5
        adds w20, wzr, w4
        adds w4, w6, wzr
// CHECK: adds     w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x2b]
// CHECK: {{adds wzr,|cmn}} w3, w5                // encoding: [0x7f,0x00,0x05,0x2b]
// CHECK: adds     w20, wzr, w4               // encoding: [0xf4,0x03,0x04,0x2b]
// CHECK: adds     w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x2b]

        adds w11, w13, w15, lsl #0
        adds w9, w3, wzr, lsl #10
        adds w17, w29, w20, lsl #31
// CHECK: adds     w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x2b]
// CHECK: adds     w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x2b]
// CHECK: adds     w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x2b]

        adds w21, w22, w23, lsr #0
        adds w24, w25, w26, lsr #18
        adds w27, w28, w29, lsr #31
// CHECK: adds     w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x2b]
// CHECK: adds     w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x2b]
// CHECK: adds     w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x2b]

        adds w2, w3, w4, asr #0
        adds w5, w6, w7, asr #21
        adds w8, w9, w10, asr #31
// CHECK: adds     w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x2b]
// CHECK: adds     w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x2b]
// CHECK: adds     w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x2b]

        adds x3, x5, x7
        adds xzr, x3, x5
        adds x20, xzr, x4
        adds x4, x6, xzr
// CHECK: adds     x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0xab]
// CHECK: {{adds xzr,|cmn}} x3, x5                // encoding: [0x7f,0x00,0x05,0xab]
// CHECK: adds     x20, xzr, x4               // encoding: [0xf4,0x03,0x04,0xab]
// CHECK: adds     x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0xab]

        adds x11, x13, x15, lsl #0
        adds x9, x3, xzr, lsl #10
        adds x17, x29, x20, lsl #63
// CHECK: adds     x11, x13, x15              // encoding: [0xab,0x01,0x0f,0xab]
// CHECK: adds     x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0xab]
// CHECK: adds     x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0xab]

        adds x21, x22, x23, lsr #0
        adds x24, x25, x26, lsr #18
        adds x27, x28, x29, lsr #63
// CHECK: adds     x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0xab]
// CHECK: adds     x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0xab]
// CHECK: adds     x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0xab]

        adds x2, x3, x4, asr #0
        adds x5, x6, x7, asr #21
        adds x8, x9, x10, asr #63
// CHECK: adds     x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0xab]
// CHECK: adds     x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0xab]
// CHECK: adds     x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0xab]

        sub w3, w5, w7
        sub wzr, w3, w5
        sub w20, wzr, w4
        sub w4, w6, wzr
// CHECK: sub      w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x4b]
// CHECK: sub      wzr, w3, w5                // encoding: [0x7f,0x00,0x05,0x4b]
// CHECK: neg      w20, w4              // encoding: [0xf4,0x03,0x04,0x4b]
// CHECK: sub      w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x4b]

        sub w11, w13, w15, lsl #0
        sub w9, w3, wzr, lsl #10
        sub w17, w29, w20, lsl #31
// CHECK: sub      w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x4b]
// CHECK: sub      w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x4b]
// CHECK: sub      w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x4b]

        sub w21, w22, w23, lsr #0
        sub w24, w25, w26, lsr #18
        sub w27, w28, w29, lsr #31
// CHECK: sub      w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x4b]
// CHECK: sub      w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x4b]
// CHECK: sub      w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x4b]

        sub w2, w3, w4, asr #0
        sub w5, w6, w7, asr #21
        sub w8, w9, w10, asr #31
// CHECK: sub      w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x4b]
// CHECK: sub      w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x4b]
// CHECK: sub      w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x4b]

        sub x3, x5, x7
        sub xzr, x3, x5
        sub x20, xzr, x4
        sub x4, x6, xzr
// CHECK: sub      x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0xcb]
// CHECK: sub      xzr, x3, x5                // encoding: [0x7f,0x00,0x05,0xcb]
// CHECK: neg      x20, x4              // encoding: [0xf4,0x03,0x04,0xcb]
// CHECK: sub      x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0xcb]

        sub x11, x13, x15, lsl #0
        sub x9, x3, xzr, lsl #10
        sub x17, x29, x20, lsl #63
// CHECK: sub      x11, x13, x15              // encoding: [0xab,0x01,0x0f,0xcb]
// CHECK: sub      x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0xcb]
// CHECK: sub      x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0xcb]

        sub x21, x22, x23, lsr #0
        sub x24, x25, x26, lsr #18
        sub x27, x28, x29, lsr #63
// CHECK: sub      x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0xcb]
// CHECK: sub      x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0xcb]
// CHECK: sub      x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0xcb]

        sub x2, x3, x4, asr #0
        sub x5, x6, x7, asr #21
        sub x8, x9, x10, asr #63
// CHECK: sub      x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0xcb]
// CHECK: sub      x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0xcb]
// CHECK: sub      x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0xcb]

        subs w3, w5, w7
        subs wzr, w3, w5
        subs w20, wzr, w4
        subs w4, w6, wzr
// CHECK: subs     w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x6b]
// CHECK: {{subs wzr,|cmp}} w3, w5            // encoding: [0x7f,0x00,0x05,0x6b]
// CHECK: negs     w20, w4              // encoding: [0xf4,0x03,0x04,0x6b]
// CHECK: subs     w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x6b]

        subs w11, w13, w15, lsl #0
        subs w9, w3, wzr, lsl #10
        subs w17, w29, w20, lsl #31
// CHECK: subs     w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x6b]
// CHECK: subs     w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x6b]
// CHECK: subs     w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x6b]

        subs w21, w22, w23, lsr #0
        subs w24, w25, w26, lsr #18
        subs w27, w28, w29, lsr #31
// CHECK: subs     w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x6b]
// CHECK: subs     w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x6b]
// CHECK: subs     w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x6b]

        subs w2, w3, w4, asr #0
        subs w5, w6, w7, asr #21
        subs w8, w9, w10, asr #31
// CHECK: subs     w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x6b]
// CHECK: subs     w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x6b]
// CHECK: subs     w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x6b]

        subs x3, x5, x7
        subs xzr, x3, x5
        subs x20, xzr, x4
        subs x4, x6, xzr
// CHECK: subs     x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0xeb]
// CHECK: {{subs xzr,|cmp}} x3, x5            // encoding: [0x7f,0x00,0x05,0xeb]
// CHECK: negs     x20, x4              // encoding: [0xf4,0x03,0x04,0xeb]
// CHECK: subs     x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0xeb]

        subs x11, x13, x15, lsl #0
        subs x9, x3, xzr, lsl #10
        subs x17, x29, x20, lsl #63
// CHECK: subs     x11, x13, x15              // encoding: [0xab,0x01,0x0f,0xeb]
// CHECK: subs     x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0xeb]
// CHECK: subs     x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0xeb]

        subs x21, x22, x23, lsr #0
        subs x24, x25, x26, lsr #18
        subs x27, x28, x29, lsr #63
// CHECK: subs     x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0xeb]
// CHECK: subs     x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0xeb]
// CHECK: subs     x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0xeb]

        subs x2, x3, x4, asr #0
        subs x5, x6, x7, asr #21
        subs x8, x9, x10, asr #63
// CHECK: subs     x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0xeb]
// CHECK: subs     x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0xeb]
// CHECK: subs     x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0xeb]

        cmn w0, w3
        cmn wzr, w4
        cmn w5, wzr
        cmn wsp, w6
// CHECK: cmn      w0, w3                     // encoding: [0x1f,0x00,0x03,0x2b]
// CHECK: cmn      wzr, w4                    // encoding: [0xff,0x03,0x04,0x2b]
// CHECK: cmn      w5, wzr                    // encoding: [0xbf,0x00,0x1f,0x2b]
// CHECK: cmn      wsp, w6                    // encoding: [0xff,0x43,0x26,0x2b]

        cmn w6, w7, lsl #0
        cmn w8, w9, lsl #15
        cmn w10, w11, lsl #31
// CHECK: cmn      w6, w7                     // encoding: [0xdf,0x00,0x07,0x2b]
// CHECK: cmn      w8, w9, lsl #15            // encoding: [0x1f,0x3d,0x09,0x2b]
// CHECK: cmn      w10, w11, lsl #31          // encoding: [0x5f,0x7d,0x0b,0x2b]

        cmn w12, w13, lsr #0
        cmn w14, w15, lsr #21
        cmn w16, w17, lsr #31
// CHECK: cmn      w12, w13, lsr #0           // encoding: [0x9f,0x01,0x4d,0x2b]
// CHECK: cmn      w14, w15, lsr #21          // encoding: [0xdf,0x55,0x4f,0x2b]
// CHECK: cmn      w16, w17, lsr #31          // encoding: [0x1f,0x7e,0x51,0x2b]

        cmn w18, w19, asr #0
        cmn w20, w21, asr #22
        cmn w22, w23, asr #31
// CHECK: cmn      w18, w19, asr #0           // encoding: [0x5f,0x02,0x93,0x2b]
// CHECK: cmn      w20, w21, asr #22          // encoding: [0x9f,0x5a,0x95,0x2b]
// CHECK: cmn      w22, w23, asr #31          // encoding: [0xdf,0x7e,0x97,0x2b]

        cmn x0, x3
        cmn xzr, x4
        cmn x5, xzr
        cmn sp, x6
// CHECK: cmn      x0, x3                     // encoding: [0x1f,0x00,0x03,0xab]
// CHECK: cmn      xzr, x4                    // encoding: [0xff,0x03,0x04,0xab]
// CHECK: cmn      x5, xzr                    // encoding: [0xbf,0x00,0x1f,0xab]
// CHECK: cmn      sp, x6                     // encoding: [0xff,0x63,0x26,0xab]

        cmn x6, x7, lsl #0
        cmn x8, x9, lsl #15
        cmn x10, x11, lsl #63
// CHECK: cmn      x6, x7                     // encoding: [0xdf,0x00,0x07,0xab]
// CHECK: cmn      x8, x9, lsl #15            // encoding: [0x1f,0x3d,0x09,0xab]
// CHECK: cmn      x10, x11, lsl #63          // encoding: [0x5f,0xfd,0x0b,0xab]

        cmn x12, x13, lsr #0
        cmn x14, x15, lsr #41
        cmn x16, x17, lsr #63
// CHECK: cmn      x12, x13, lsr #0           // encoding: [0x9f,0x01,0x4d,0xab]
// CHECK: cmn      x14, x15, lsr #41          // encoding: [0xdf,0xa5,0x4f,0xab]
// CHECK: cmn      x16, x17, lsr #63          // encoding: [0x1f,0xfe,0x51,0xab]

        cmn x18, x19, asr #0
        cmn x20, x21, asr #55
        cmn x22, x23, asr #63
// CHECK: cmn      x18, x19, asr #0           // encoding: [0x5f,0x02,0x93,0xab]
// CHECK: cmn      x20, x21, asr #55          // encoding: [0x9f,0xde,0x95,0xab]
// CHECK: cmn      x22, x23, asr #63          // encoding: [0xdf,0xfe,0x97,0xab]

        cmp w0, w3
        cmp wzr, w4
        cmp w5, wzr
        cmp wsp, w6
// CHECK: cmp      w0, w3                     // encoding: [0x1f,0x00,0x03,0x6b]
// CHECK: cmp      wzr, w4                    // encoding: [0xff,0x03,0x04,0x6b]
// CHECK: cmp      w5, wzr                    // encoding: [0xbf,0x00,0x1f,0x6b]
// CHECK: cmp      wsp, w6                    // encoding: [0xff,0x43,0x26,0x6b]

        cmp w6, w7, lsl #0
        cmp w8, w9, lsl #15
        cmp w10, w11, lsl #31
// CHECK: cmp      w6, w7                     // encoding: [0xdf,0x00,0x07,0x6b]
// CHECK: cmp      w8, w9, lsl #15            // encoding: [0x1f,0x3d,0x09,0x6b]
// CHECK: cmp      w10, w11, lsl #31          // encoding: [0x5f,0x7d,0x0b,0x6b]

        cmp w12, w13, lsr #0
        cmp w14, w15, lsr #21
        cmp w16, w17, lsr #31
// CHECK: cmp      w12, w13, lsr #0           // encoding: [0x9f,0x01,0x4d,0x6b]
// CHECK: cmp      w14, w15, lsr #21          // encoding: [0xdf,0x55,0x4f,0x6b]
// CHECK: cmp      w16, w17, lsr #31          // encoding: [0x1f,0x7e,0x51,0x6b]

        cmp w18, w19, asr #0
        cmp w20, w21, asr #22
        cmp w22, w23, asr #31
// CHECK: cmp      w18, w19, asr #0           // encoding: [0x5f,0x02,0x93,0x6b]
// CHECK: cmp      w20, w21, asr #22          // encoding: [0x9f,0x5a,0x95,0x6b]
// CHECK: cmp      w22, w23, asr #31          // encoding: [0xdf,0x7e,0x97,0x6b]

        cmp x0, x3
        cmp xzr, x4
        cmp x5, xzr
        cmp sp, x6
// CHECK: cmp      x0, x3                     // encoding: [0x1f,0x00,0x03,0xeb]
// CHECK: cmp      xzr, x4                    // encoding: [0xff,0x03,0x04,0xeb]
// CHECK: cmp      x5, xzr                    // encoding: [0xbf,0x00,0x1f,0xeb]
// CHECK: cmp      sp, x6                     // encoding: [0xff,0x63,0x26,0xeb]

        cmp x6, x7, lsl #0
        cmp x8, x9, lsl #15
        cmp x10, x11, lsl #63
// CHECK: cmp      x6, x7                     // encoding: [0xdf,0x00,0x07,0xeb]
// CHECK: cmp      x8, x9, lsl #15            // encoding: [0x1f,0x3d,0x09,0xeb]
// CHECK: cmp      x10, x11, lsl #63          // encoding: [0x5f,0xfd,0x0b,0xeb]

        cmp x12, x13, lsr #0
        cmp x14, x15, lsr #41
        cmp x16, x17, lsr #63
// CHECK: cmp      x12, x13, lsr #0           // encoding: [0x9f,0x01,0x4d,0xeb]
// CHECK: cmp      x14, x15, lsr #41          // encoding: [0xdf,0xa5,0x4f,0xeb]
// CHECK: cmp      x16, x17, lsr #63          // encoding: [0x1f,0xfe,0x51,0xeb]

        cmp x18, x19, asr #0
        cmp x20, x21, asr #55
        cmp x22, x23, asr #63
// CHECK: cmp      x18, x19, asr #0           // encoding: [0x5f,0x02,0x93,0xeb]
// CHECK: cmp      x20, x21, asr #55          // encoding: [0x9f,0xde,0x95,0xeb]
// CHECK: cmp      x22, x23, asr #63          // encoding: [0xdf,0xfe,0x97,0xeb]

        neg w29, w30
        neg w30, wzr
        neg wzr, w0
// CHECK: neg      w29, w30              // encoding: [0xfd,0x03,0x1e,0x4b]
// CHECK: neg      w30, wzr              // encoding: [0xfe,0x03,0x1f,0x4b]
// CHECK: neg      wzr, w0               // encoding: [0xff,0x03,0x00,0x4b]

        neg w28, w27, lsl #0
        neg w26, w25, lsl #29
        neg w24, w23, lsl #31

// CHECK: neg      w28, w27              // encoding: [0xfc,0x03,0x1b,0x4b]
// CHECK: neg      w26, w25, lsl #29     // encoding: [0xfa,0x77,0x19,0x4b]
// CHECK: neg      w24, w23, lsl #31     // encoding: [0xf8,0x7f,0x17,0x4b]

        neg w22, w21, lsr #0
        neg w20, w19, lsr #1
        neg w18, w17, lsr #31
// CHECK: neg      w22, w21, lsr #0      // encoding: [0xf6,0x03,0x55,0x4b]
// CHECK: neg      w20, w19, lsr #1      // encoding: [0xf4,0x07,0x53,0x4b]
// CHECK: neg      w18, w17, lsr #31     // encoding: [0xf2,0x7f,0x51,0x4b]

        neg w16, w15, asr #0
        neg w14, w13, asr #12
        neg w12, w11, asr #31
// CHECK: neg      w16, w15, asr #0      // encoding: [0xf0,0x03,0x8f,0x4b]
// CHECK: neg      w14, w13, asr #12     // encoding: [0xee,0x33,0x8d,0x4b]
// CHECK: neg      w12, w11, asr #31     // encoding: [0xec,0x7f,0x8b,0x4b]

        neg x29, x30
        neg x30, xzr
        neg xzr, x0
// CHECK: neg      x29, x30              // encoding: [0xfd,0x03,0x1e,0xcb]
// CHECK: neg      x30, xzr              // encoding: [0xfe,0x03,0x1f,0xcb]
// CHECK: neg      xzr, x0               // encoding: [0xff,0x03,0x00,0xcb]

        neg x28, x27, lsl #0
        neg x26, x25, lsl #29
        neg x24, x23, lsl #31

// CHECK: neg      x28, x27              // encoding: [0xfc,0x03,0x1b,0xcb]
// CHECK: neg      x26, x25, lsl #29     // encoding: [0xfa,0x77,0x19,0xcb]
// CHECK: neg      x24, x23, lsl #31     // encoding: [0xf8,0x7f,0x17,0xcb]

        neg x22, x21, lsr #0
        neg x20, x19, lsr #1
        neg x18, x17, lsr #31
// CHECK: neg      x22, x21, lsr #0      // encoding: [0xf6,0x03,0x55,0xcb]
// CHECK: neg      x20, x19, lsr #1      // encoding: [0xf4,0x07,0x53,0xcb]
// CHECK: neg      x18, x17, lsr #31     // encoding: [0xf2,0x7f,0x51,0xcb]

        neg x16, x15, asr #0
        neg x14, x13, asr #12
        neg x12, x11, asr #31
// CHECK: neg      x16, x15, asr #0      // encoding: [0xf0,0x03,0x8f,0xcb]
// CHECK: neg      x14, x13, asr #12     // encoding: [0xee,0x33,0x8d,0xcb]
// CHECK: neg      x12, x11, asr #31     // encoding: [0xec,0x7f,0x8b,0xcb]

        negs w29, w30
        negs w30, wzr
        negs wzr, w0
// CHECK: negs     w29, w30              // encoding: [0xfd,0x03,0x1e,0x6b]
// CHECK: negs     w30, wzr              // encoding: [0xfe,0x03,0x1f,0x6b]
// CHECK: cmp      wzr, w0               // encoding: [0xff,0x03,0x00,0x6b]

        negs w28, w27, lsl #0
        negs w26, w25, lsl #29
        negs w24, w23, lsl #31

// CHECK: negs     w28, w27             // encoding: [0xfc,0x03,0x1b,0x6b]
// CHECK: negs     w26, w25, lsl #29     // encoding: [0xfa,0x77,0x19,0x6b]
// CHECK: negs     w24, w23, lsl #31     // encoding: [0xf8,0x7f,0x17,0x6b]

        negs w22, w21, lsr #0
        negs w20, w19, lsr #1
        negs w18, w17, lsr #31
// CHECK: negs     w22, w21, lsr #0      // encoding: [0xf6,0x03,0x55,0x6b]
// CHECK: negs     w20, w19, lsr #1      // encoding: [0xf4,0x07,0x53,0x6b]
// CHECK: negs     w18, w17, lsr #31     // encoding: [0xf2,0x7f,0x51,0x6b]

        negs w16, w15, asr #0
        negs w14, w13, asr #12
        negs w12, w11, asr #31
// CHECK: negs     w16, w15, asr #0      // encoding: [0xf0,0x03,0x8f,0x6b]
// CHECK: negs     w14, w13, asr #12     // encoding: [0xee,0x33,0x8d,0x6b]
// CHECK: negs     w12, w11, asr #31     // encoding: [0xec,0x7f,0x8b,0x6b]

        negs x29, x30
        negs x30, xzr
        negs xzr, x0
// CHECK: negs     x29, x30              // encoding: [0xfd,0x03,0x1e,0xeb]
// CHECK: negs     x30, xzr              // encoding: [0xfe,0x03,0x1f,0xeb]
// CHECK: cmp     xzr, x0                // encoding: [0xff,0x03,0x00,0xeb]

        negs x28, x27, lsl #0
        negs x26, x25, lsl #29
        negs x24, x23, lsl #31

// CHECK: negs     x28, x27              // encoding: [0xfc,0x03,0x1b,0xeb]
// CHECK: negs     x26, x25, lsl #29     // encoding: [0xfa,0x77,0x19,0xeb]
// CHECK: negs     x24, x23, lsl #31     // encoding: [0xf8,0x7f,0x17,0xeb]

        negs x22, x21, lsr #0
        negs x20, x19, lsr #1
        negs x18, x17, lsr #31
// CHECK: negs     x22, x21, lsr #0      // encoding: [0xf6,0x03,0x55,0xeb]
// CHECK: negs     x20, x19, lsr #1      // encoding: [0xf4,0x07,0x53,0xeb]
// CHECK: negs     x18, x17, lsr #31     // encoding: [0xf2,0x7f,0x51,0xeb]

        negs x16, x15, asr #0
        negs x14, x13, asr #12
        negs x12, x11, asr #31
// CHECK: negs     x16, x15, asr #0      // encoding: [0xf0,0x03,0x8f,0xeb]
// CHECK: negs     x14, x13, asr #12     // encoding: [0xee,0x33,0x8d,0xeb]
// CHECK: negs     x12, x11, asr #31     // encoding: [0xec,0x7f,0x8b,0xeb]

//------------------------------------------------------------------------------
// Add-sub (shifted register)
//------------------------------------------------------------------------------
        adc w29, w27, w25
        adc wzr, w3, w4
        adc w9, wzr, w10
        adc w20, w0, wzr
// CHECK: adc      w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x1a]
// CHECK: adc      wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x1a]
// CHECK: adc      w9, wzr, w10               // encoding: [0xe9,0x03,0x0a,0x1a]
// CHECK: adc      w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x1a]

        adc x29, x27, x25
        adc xzr, x3, x4
        adc x9, xzr, x10
        adc x20, x0, xzr
// CHECK: adc      x29, x27, x25              // encoding: [0x7d,0x03,0x19,0x9a]
// CHECK: adc      xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0x9a]
// CHECK: adc      x9, xzr, x10               // encoding: [0xe9,0x03,0x0a,0x9a]
// CHECK: adc      x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0x9a]

        adcs w29, w27, w25
        adcs wzr, w3, w4
        adcs w9, wzr, w10
        adcs w20, w0, wzr
// CHECK: adcs     w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x3a]
// CHECK: adcs     wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x3a]
// CHECK: adcs     w9, wzr, w10               // encoding: [0xe9,0x03,0x0a,0x3a]
// CHECK: adcs     w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x3a]

        adcs x29, x27, x25
        adcs xzr, x3, x4
        adcs x9, xzr, x10
        adcs x20, x0, xzr
// CHECK: adcs     x29, x27, x25              // encoding: [0x7d,0x03,0x19,0xba]
// CHECK: adcs     xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0xba]
// CHECK: adcs     x9, xzr, x10               // encoding: [0xe9,0x03,0x0a,0xba]
// CHECK: adcs     x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0xba]

        sbc w29, w27, w25
        sbc wzr, w3, w4
        sbc w9, wzr, w10
        sbc w20, w0, wzr
// CHECK: sbc      w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x5a]
// CHECK: sbc      wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x5a]
// CHECK: ngc      w9, w10                    // encoding: [0xe9,0x03,0x0a,0x5a]
// CHECK: sbc      w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x5a]

        sbc x29, x27, x25
        sbc xzr, x3, x4
        sbc x9, xzr, x10
        sbc x20, x0, xzr
// CHECK: sbc      x29, x27, x25              // encoding: [0x7d,0x03,0x19,0xda]
// CHECK: sbc      xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0xda]
// CHECK: ngc      x9, x10                    // encoding: [0xe9,0x03,0x0a,0xda]
// CHECK: sbc      x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0xda]

        sbcs w29, w27, w25
        sbcs wzr, w3, w4
        sbcs w9, wzr, w10
        sbcs w20, w0, wzr
// CHECK: sbcs     w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x7a]
// CHECK: sbcs     wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x7a]
// CHECK: ngcs     w9, w10                    // encoding: [0xe9,0x03,0x0a,0x7a]
// CHECK: sbcs     w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x7a]

        sbcs x29, x27, x25
        sbcs xzr, x3, x4
        sbcs x9, xzr, x10
        sbcs x20, x0, xzr
// CHECK: sbcs     x29, x27, x25              // encoding: [0x7d,0x03,0x19,0xfa]
// CHECK: sbcs     xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0xfa]
// CHECK: ngcs     x9, x10                    // encoding: [0xe9,0x03,0x0a,0xfa]
// CHECK: sbcs     x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0xfa]

        ngc w3, w12
        ngc wzr, w9
        ngc w23, wzr
// CHECK: ngc      w3, w12                    // encoding: [0xe3,0x03,0x0c,0x5a]
// CHECK: ngc      wzr, w9                    // encoding: [0xff,0x03,0x09,0x5a]
// CHECK: ngc      w23, wzr                   // encoding: [0xf7,0x03,0x1f,0x5a]

        ngc x29, x30
        ngc xzr, x0
        ngc x0, xzr
// CHECK: ngc      x29, x30                   // encoding: [0xfd,0x03,0x1e,0xda]
// CHECK: ngc      xzr, x0                    // encoding: [0xff,0x03,0x00,0xda]
// CHECK: ngc      x0, xzr                    // encoding: [0xe0,0x03,0x1f,0xda]

        ngcs w3, w12
        ngcs wzr, w9
        ngcs w23, wzr
// CHECK: ngcs     w3, w12                    // encoding: [0xe3,0x03,0x0c,0x7a]
// CHECK: ngcs     wzr, w9                    // encoding: [0xff,0x03,0x09,0x7a]
// CHECK: ngcs     w23, wzr                   // encoding: [0xf7,0x03,0x1f,0x7a]

        ngcs x29, x30
        ngcs xzr, x0
        ngcs x0, xzr
// CHECK: ngcs     x29, x30                   // encoding: [0xfd,0x03,0x1e,0xfa]
// CHECK: ngcs     xzr, x0                    // encoding: [0xff,0x03,0x00,0xfa]
// CHECK: ngcs     x0, xzr                    // encoding: [0xe0,0x03,0x1f,0xfa]

//------------------------------------------------------------------------------
// Bitfield
//------------------------------------------------------------------------------

        sbfm x1, x2, #3, #4
        sbfm x3, x4, #63, #63
        sbfm wzr, wzr, #31, #31
        sbfm w12, w9, #0, #0

// CHECK: sbfx     x1, x2, #3, #2       // encoding: [0x41,0x10,0x43,0x93]
// CHECK: asr      x3, x4, #63          // encoding: [0x83,0xfc,0x7f,0x93]
// CHECK: asr      wzr, wzr, #31        // encoding: [0xff,0x7f,0x1f,0x13]
// CHECK: sbfx     w12, w9, #0, #1      // encoding: [0x2c,0x01,0x00,0x13]

        ubfm x4, x5, #12, #10
        ubfm xzr, x4, #0, #0
        ubfm x4, xzr, #63, #5
        ubfm x5, x6, #12, #63
// CHECK: ubfiz    x4, x5, #52, #11        // encoding: [0xa4,0x28,0x4c,0xd3]
// CHECK: ubfx     xzr, x4, #0, #1         // encoding: [0x9f,0x00,0x40,0xd3]
// CHECK: ubfiz    x4, xzr, #1, #6         // encoding: [0xe4,0x17,0x7f,0xd3]
// CHECK: lsr      x5, x6, #12             // encoding: [0xc5,0xfc,0x4c,0xd3]

        bfm x4, x5, #12, #10
        bfm xzr, x4, #0, #0
        bfm x4, xzr, #63, #5
        bfm x5, x6, #12, #63
// CHECK: bfi      x4, x5, #52, #11           // encoding: [0xa4,0x28,0x4c,0xb3]
// CHECK: bfxil    xzr, x4, #0, #1            // encoding: [0x9f,0x00,0x40,0xb3]
// CHECK: bfi      x4, xzr, #1, #6            // encoding: [0xe4,0x17,0x7f,0xb3]
// CHECK: bfxil    x5, x6, #12, #52           // encoding: [0xc5,0xfc,0x4c,0xb3]

        sxtb w1, w2
        sxtb xzr, w3
        sxth w9, w10
        sxth x0, w1
        sxtw x3, w30
// CHECK: sxtb     w1, w2                     // encoding: [0x41,0x1c,0x00,0x13]
// CHECK: sxtb     xzr, w3                    // encoding: [0x7f,0x1c,0x40,0x93]
// CHECK: sxth     w9, w10                    // encoding: [0x49,0x3d,0x00,0x13]
// CHECK: sxth     x0, w1                     // encoding: [0x20,0x3c,0x40,0x93]
// CHECK: sxtw     x3, w30                    // encoding: [0xc3,0x7f,0x40,0x93]

        uxtb w1, w2
        uxtb xzr, w3
        uxth w9, w10
        uxth x0, w1
// CHECK: uxtb     w1, w2                     // encoding: [0x41,0x1c,0x00,0x53]
// CHECK: uxtb     {{[wx]}}zr, w3             // encoding: [0x7f,0x1c,0x00,0x53]
// CHECK: uxth     w9, w10                    // encoding: [0x49,0x3d,0x00,0x53]
// CHECK: uxth     {{[wx]}}0, w1              // encoding: [0x20,0x3c,0x00,0x53]

        asr w3, w2, #0
        asr w9, w10, #31
        asr x20, x21, #63
        asr w1, wzr, #3
// CHECK: asr      w3, w2, #0                 // encoding: [0x43,0x7c,0x00,0x13]
// CHECK: asr      w9, w10, #31               // encoding: [0x49,0x7d,0x1f,0x13]
// CHECK: asr      x20, x21, #63              // encoding: [0xb4,0xfe,0x7f,0x93]
// CHECK: asr      w1, wzr, #3                // encoding: [0xe1,0x7f,0x03,0x13]

        lsr w3, w2, #0
        lsr w9, w10, #31
        lsr x20, x21, #63
        lsr wzr, wzr, #3
// CHECK: lsr      w3, w2, #0                 // encoding: [0x43,0x7c,0x00,0x53]
// CHECK: lsr      w9, w10, #31               // encoding: [0x49,0x7d,0x1f,0x53]
// CHECK: lsr      x20, x21, #63              // encoding: [0xb4,0xfe,0x7f,0xd3]
// CHECK: lsr      wzr, wzr, #3               // encoding: [0xff,0x7f,0x03,0x53]

        lsl w3, w2, #0
        lsl w9, w10, #31
        lsl x20, x21, #63
        lsl w1, wzr, #3
// CHECK: {{lsl|lsr}}      w3, w2, #0         // encoding: [0x43,0x7c,0x00,0x53]
// CHECK: lsl      w9, w10, #31               // encoding: [0x49,0x01,0x01,0x53]
// CHECK: lsl      x20, x21, #63              // encoding: [0xb4,0x02,0x41,0xd3]
// CHECK: lsl      w1, wzr, #3                // encoding: [0xe1,0x73,0x1d,0x53]

        sbfiz w9, w10, #0, #1
        sbfiz x2, x3, #63, #1
        sbfiz x19, x20, #0, #64
        sbfiz x9, x10, #5, #59
        sbfiz w9, w10, #0, #32
        sbfiz w11, w12, #31, #1
        sbfiz w13, w14, #29, #3
        sbfiz xzr, xzr, #10, #11
// CHECK: {{sbfiz|sbfx}}    w9, w10, #0, #1   // encoding: [0x49,0x01,0x00,0x13]
// CHECK: sbfiz    x2, x3, #63, #1            // encoding: [0x62,0x00,0x41,0x93]
// CHECK: asr    x19, x20, #0           // encoding: [0x93,0xfe,0x40,0x93]
// CHECK: sbfiz    x9, x10, #5, #59           // encoding: [0x49,0xe9,0x7b,0x93]
// CHECK: asr    w9, w10, #0            // encoding: [0x49,0x7d,0x00,0x13]
// CHECK: sbfiz    w11, w12, #31, #1          // encoding: [0x8b,0x01,0x01,0x13]
// CHECK: sbfiz    w13, w14, #29, #3          // encoding: [0xcd,0x09,0x03,0x13]
// CHECK: sbfiz    xzr, xzr, #10, #11         // encoding: [0xff,0x2b,0x76,0x93]

        sbfx w9, w10, #0, #1
        sbfx x2, x3, #63, #1
        sbfx x19, x20, #0, #64
        sbfx x9, x10, #5, #59
        sbfx w9, w10, #0, #32
        sbfx w11, w12, #31, #1
        sbfx w13, w14, #29, #3
        sbfx xzr, xzr, #10, #11
// CHECK: sbfx     w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x13]
// CHECK: asr     x2, x3, #63           // encoding: [0x62,0xfc,0x7f,0x93]
// CHECK: asr     x19, x20, #0          // encoding: [0x93,0xfe,0x40,0x93]
// CHECK: asr     x9, x10, #5           // encoding: [0x49,0xfd,0x45,0x93]
// CHECK: asr     w9, w10, #0           // encoding: [0x49,0x7d,0x00,0x13]
// CHECK: asr     w11, w12, #31         // encoding: [0x8b,0x7d,0x1f,0x13]
// CHECK: asr     w13, w14, #29         // encoding: [0xcd,0x7d,0x1d,0x13]
// CHECK: sbfx     xzr, xzr, #10, #11         // encoding: [0xff,0x53,0x4a,0x93]

        bfi w9, w10, #0, #1
        bfi x2, x3, #63, #1
        bfi x19, x20, #0, #64
        bfi x9, x10, #5, #59
        bfi w9, w10, #0, #32
        bfi w11, w12, #31, #1
        bfi w13, w14, #29, #3
        bfi xzr, xzr, #10, #11

// CHECK: bfxil    w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x33]
// CHECK: bfi      x2, x3, #63, #1            // encoding: [0x62,0x00,0x41,0xb3]
// CHECK: bfxil    x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0xb3]
// CHECK: bfi      x9, x10, #5, #59           // encoding: [0x49,0xe9,0x7b,0xb3]
// CHECK: bfxil    w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x33]
// CHECK: bfi      w11, w12, #31, #1          // encoding: [0x8b,0x01,0x01,0x33]
// CHECK: bfi      w13, w14, #29, #3          // encoding: [0xcd,0x09,0x03,0x33]
// CHECK: bfi      xzr, xzr, #10, #11         // encoding: [0xff,0x2b,0x76,0xb3]

        bfxil w9, w10, #0, #1
        bfxil x2, x3, #63, #1
        bfxil x19, x20, #0, #64
        bfxil x9, x10, #5, #59
        bfxil w9, w10, #0, #32
        bfxil w11, w12, #31, #1
        bfxil w13, w14, #29, #3
        bfxil xzr, xzr, #10, #11
// CHECK: bfxil    w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x33]
// CHECK: bfxil    x2, x3, #63, #1            // encoding: [0x62,0xfc,0x7f,0xb3]
// CHECK: bfxil    x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0xb3]
// CHECK: bfxil    x9, x10, #5, #59           // encoding: [0x49,0xfd,0x45,0xb3]
// CHECK: bfxil    w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x33]
// CHECK: bfxil    w11, w12, #31, #1          // encoding: [0x8b,0x7d,0x1f,0x33]
// CHECK: bfxil    w13, w14, #29, #3          // encoding: [0xcd,0x7d,0x1d,0x33]
// CHECK: bfxil    xzr, xzr, #10, #11         // encoding: [0xff,0x53,0x4a,0xb3]

        ubfiz w9, w10, #0, #1
        ubfiz x2, x3, #63, #1
        ubfiz x19, x20, #0, #64
        ubfiz x9, x10, #5, #59
        ubfiz w9, w10, #0, #32
        ubfiz w11, w12, #31, #1
        ubfiz w13, w14, #29, #3
        ubfiz xzr, xzr, #10, #11

// CHECK: ubfx     w9, w10, #0, #1         // encoding: [0x49,0x01,0x00,0x53]
// CHECK: lsl      x2, x3, #63             // encoding: [0x62,0x00,0x41,0xd3]
// CHECK: lsr      x19, x20, #0            // encoding: [0x93,0xfe,0x40,0xd3]
// CHECK: lsl      x9, x10, #5             // encoding: [0x49,0xe9,0x7b,0xd3]
// CHECK: lsr      w9, w10, #0             // encoding: [0x49,0x7d,0x00,0x53]
// CHECK: lsl      w11, w12, #31           // encoding: [0x8b,0x01,0x01,0x53]
// CHECK: lsl      w13, w14, #29           // encoding: [0xcd,0x09,0x03,0x53]
// CHECK: ubfiz    xzr, xzr, #10, #11      // encoding: [0xff,0x2b,0x76,0xd3]

        ubfx w9, w10, #0, #1
        ubfx x2, x3, #63, #1
        ubfx x19, x20, #0, #64
        ubfx x9, x10, #5, #59
        ubfx w9, w10, #0, #32
        ubfx w11, w12, #31, #1
        ubfx w13, w14, #29, #3
        ubfx xzr, xzr, #10, #11

// CHECK: ubfx    w9, w10, #0, #1         // encoding: [0x49,0x01,0x00,0x53]
// CHECK: lsr     x2, x3, #63             // encoding: [0x62,0xfc,0x7f,0xd3]
// CHECK: lsr     x19, x20, #0            // encoding: [0x93,0xfe,0x40,0xd3]
// CHECK: lsr     x9, x10, #5             // encoding: [0x49,0xfd,0x45,0xd3]
// CHECK: lsr     w9, w10, #0             // encoding: [0x49,0x7d,0x00,0x53]
// CHECK: lsr     w11, w12, #31           // encoding: [0x8b,0x7d,0x1f,0x53]
// CHECK: lsr     w13, w14, #29           // encoding: [0xcd,0x7d,0x1d,0x53]
// CHECK: ubfx    xzr, xzr, #10, #11      // encoding: [0xff,0x53,0x4a,0xd3]

        bfc w3, #0, #32
        bfc wzr, #31, #1
        bfc x0, #5, #9
        bfc xzr, #63, #1
// CHECK: bfxil w3, wzr, #0, #32      // encoding: [0xe3,0x7f,0x00,0x33]
// CHECK: bfi wzr, wzr, #31, #1       // encoding: [0xff,0x03,0x01,0x33]
// CHECK: bfi x0, xzr, #5, #9         // encoding: [0xe0,0x23,0x7b,0xb3]
// CHECK: bfi xzr, xzr, #63, #1       // encoding: [0xff,0x03,0x41,0xb3]

//------------------------------------------------------------------------------
// Compare & branch (immediate)
//------------------------------------------------------------------------------

        cbz w5, lbl
        cbz x5, lbl
        cbnz x2, lbl
        cbnz x26, lbl
// CHECK: cbz    w5, lbl                 // encoding: [0bAAA00101,A,A,0x34]
// CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: cbz    x5, lbl                 // encoding: [0bAAA00101,A,A,0xb4]
// CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: cbnz    x2, lbl                 // encoding: [0bAAA00010,A,A,0xb5]
// CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: cbnz    x26, lbl                // encoding: [0bAAA11010,A,A,0xb5]
// CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19

        cbz wzr, lbl
        cbnz xzr, lbl

// CHECK: cbz    wzr, lbl                // encoding: [0bAAA11111,A,A,0x34]
// CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: cbnz    xzr, lbl                // encoding: [0bAAA11111,A,A,0xb5]
// CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19

        cbz w5, #0
        cbnz x3, #-4
        cbz w20, #1048572
        cbnz xzr, #-1048576
// CHECK: cbz     w5, #0                  // encoding: [0x05,0x00,0x00,0x34]
// CHECK: cbnz    x3, #-4                 // encoding: [0xe3,0xff,0xff,0xb5]
// CHECK: cbz     w20, #1048572           // encoding: [0xf4,0xff,0x7f,0x34]
// CHECK: cbnz    xzr, #-1048576          // encoding: [0x1f,0x00,0x80,0xb5]

//------------------------------------------------------------------------------
// Conditional branch (immediate)
//------------------------------------------------------------------------------

        b.eq lbl
        b.ne lbl
        b.cs lbl
        b.hs lbl
        b.lo lbl
        b.cc lbl
        b.mi lbl
        b.pl lbl
        b.vs lbl
        b.vc lbl
        b.hi lbl
        b.ls lbl
        b.ge lbl
        b.lt lbl
        b.gt lbl
        b.le lbl
        b.al lbl

// CHECK: b.eq lbl                     // encoding: [0bAAA00000,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.ne lbl                     // encoding: [0bAAA00001,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.hs lbl                     // encoding: [0bAAA00010,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.hs lbl                     // encoding: [0bAAA00010,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.lo lbl                     // encoding: [0bAAA00011,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.lo lbl                     // encoding: [0bAAA00011,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.mi lbl                     // encoding: [0bAAA00100,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.pl lbl                     // encoding: [0bAAA00101,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.vs lbl                     // encoding: [0bAAA00110,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.vc lbl                     // encoding: [0bAAA00111,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.hi lbl                     // encoding: [0bAAA01000,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.ls lbl                     // encoding: [0bAAA01001,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.ge lbl                     // encoding: [0bAAA01010,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.lt lbl                     // encoding: [0bAAA01011,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.gt lbl                     // encoding: [0bAAA01100,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.le lbl                     // encoding: [0bAAA01101,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19
// CHECK: b.al lbl                     // encoding: [0bAAA01110,A,A,0x54]
// CHECK:                              //   fixup A - offset: 0, value: lbl, kind: fixup_aarch64_pcrel_branch19

        //  ARM64 has these in a separate file
        beq lbl
        bne lbl
        bcs lbl
        bhs lbl
        blo lbl
        bcc lbl
        bmi lbl
        bpl lbl
        bvs lbl
        bvc lbl
        bhi lbl
        bls lbl
        bge lbl
        blt lbl
        bgt lbl
        ble lbl
        bal lbl

        b.eq #0
        b.lt #-4
        b.cc #1048572
// CHECK: b.eq #0                         // encoding: [0x00,0x00,0x00,0x54]
// CHECK: b.lt #-4                        // encoding: [0xeb,0xff,0xff,0x54]
// CHECK: b.lo #1048572                   // encoding: [0xe3,0xff,0x7f,0x54]

//------------------------------------------------------------------------------
// Conditional compare (immediate)
//------------------------------------------------------------------------------

        ccmp w1, #31, #0, eq
        ccmp w3, #0, #15, hs
        ccmp wzr, #15, #13, cs
// CHECK: ccmp    w1, #31, #0, eq         // encoding: [0x20,0x08,0x5f,0x7a]
// CHECK: ccmp    w3, #0, #15, hs         // encoding: [0x6f,0x28,0x40,0x7a]
// CHECK: ccmp    wzr, #15, #13, hs       // encoding: [0xed,0x2b,0x4f,0x7a]

        ccmp x9, #31, #0, le
        ccmp x3, #0, #15, gt
        ccmp xzr, #5, #7, ne
// CHECK: ccmp    x9, #31, #0, le         // encoding: [0x20,0xd9,0x5f,0xfa]
// CHECK: ccmp    x3, #0, #15, gt         // encoding: [0x6f,0xc8,0x40,0xfa]
// CHECK: ccmp    xzr, #5, #7, ne         // encoding: [0xe7,0x1b,0x45,0xfa]

        ccmn w1, #31, #0, eq
        ccmn w3, #0, #15, hs
        ccmn wzr, #15, #13, cs
// CHECK: ccmn    w1, #31, #0, eq         // encoding: [0x20,0x08,0x5f,0x3a]
// CHECK: ccmn    w3, #0, #15, hs         // encoding: [0x6f,0x28,0x40,0x3a]
// CHECK: ccmn    wzr, #15, #13, hs       // encoding: [0xed,0x2b,0x4f,0x3a]

        ccmn x9, #31, #0, le
        ccmn x3, #0, #15, gt
        ccmn xzr, #5, #7, ne
// CHECK: ccmn    x9, #31, #0, le         // encoding: [0x20,0xd9,0x5f,0xba]
// CHECK: ccmn    x3, #0, #15, gt         // encoding: [0x6f,0xc8,0x40,0xba]
// CHECK: ccmn    xzr, #5, #7, ne         // encoding: [0xe7,0x1b,0x45,0xba]

//------------------------------------------------------------------------------
// Conditional compare (register)
//------------------------------------------------------------------------------

        ccmp w1, wzr, #0, eq
        ccmp w3, w0, #15, hs
        ccmp wzr, w15, #13, cs
// CHECK: ccmp    w1, wzr, #0, eq         // encoding: [0x20,0x00,0x5f,0x7a]
// CHECK: ccmp    w3, w0, #15, hs         // encoding: [0x6f,0x20,0x40,0x7a]
// CHECK: ccmp    wzr, w15, #13, hs       // encoding: [0xed,0x23,0x4f,0x7a]

        ccmp x9, xzr, #0, le
        ccmp x3, x0, #15, gt
        ccmp xzr, x5, #7, ne
// CHECK: ccmp    x9, xzr, #0, le         // encoding: [0x20,0xd1,0x5f,0xfa]
// CHECK: ccmp    x3, x0, #15, gt         // encoding: [0x6f,0xc0,0x40,0xfa]
// CHECK: ccmp    xzr, x5, #7, ne         // encoding: [0xe7,0x13,0x45,0xfa]

        ccmn w1, wzr, #0, eq
        ccmn w3, w0, #15, hs
        ccmn wzr, w15, #13, cs
// CHECK: ccmn    w1, wzr, #0, eq         // encoding: [0x20,0x00,0x5f,0x3a]
// CHECK: ccmn    w3, w0, #15, hs         // encoding: [0x6f,0x20,0x40,0x3a]
// CHECK: ccmn    wzr, w15, #13, hs       // encoding: [0xed,0x23,0x4f,0x3a]

        ccmn x9, xzr, #0, le
        ccmn x3, x0, #15, gt
        ccmn xzr, x5, #7, ne
// CHECK: ccmn    x9, xzr, #0, le         // encoding: [0x20,0xd1,0x5f,0xba]
// CHECK: ccmn    x3, x0, #15, gt         // encoding: [0x6f,0xc0,0x40,0xba]
// CHECK: ccmn    xzr, x5, #7, ne         // encoding: [0xe7,0x13,0x45,0xba]

//------------------------------------------------------------------------------
// Conditional select
//------------------------------------------------------------------------------
        csel w1, w0, w19, ne
        csel wzr, w5, w9, eq
        csel w9, wzr, w30, gt
        csel w1, w28, wzr, mi
// CHECK: csel     w1, w0, w19, ne            // encoding: [0x01,0x10,0x93,0x1a]
// CHECK: csel     wzr, w5, w9, eq            // encoding: [0xbf,0x00,0x89,0x1a]
// CHECK: csel     w9, wzr, w30, gt           // encoding: [0xe9,0xc3,0x9e,0x1a]
// CHECK: csel     w1, w28, wzr, mi           // encoding: [0x81,0x43,0x9f,0x1a]

        csel x19, x23, x29, lt
        csel xzr, x3, x4, ge
        csel x5, xzr, x6, cs
        csel x7, x8, xzr, cc
// CHECK: csel     x19, x23, x29, lt          // encoding: [0xf3,0xb2,0x9d,0x9a]
// CHECK: csel     xzr, x3, x4, ge            // encoding: [0x7f,0xa0,0x84,0x9a]
// CHECK: csel     x5, xzr, x6, hs            // encoding: [0xe5,0x23,0x86,0x9a]
// CHECK: csel     x7, x8, xzr, lo            // encoding: [0x07,0x31,0x9f,0x9a]

        csinc w1, w0, w19, ne
        csinc wzr, w5, w9, eq
        csinc w9, wzr, w30, gt
        csinc w1, w28, wzr, mi
// CHECK: csinc    w1, w0, w19, ne            // encoding: [0x01,0x14,0x93,0x1a]
// CHECK: csinc    wzr, w5, w9, eq            // encoding: [0xbf,0x04,0x89,0x1a]
// CHECK: csinc    w9, wzr, w30, gt           // encoding: [0xe9,0xc7,0x9e,0x1a]
// CHECK: csinc    w1, w28, wzr, mi           // encoding: [0x81,0x47,0x9f,0x1a]

        csinc x19, x23, x29, lt
        csinc xzr, x3, x4, ge
        csinc x5, xzr, x6, cs
        csinc x7, x8, xzr, cc
// CHECK: csinc    x19, x23, x29, lt          // encoding: [0xf3,0xb6,0x9d,0x9a]
// CHECK: csinc    xzr, x3, x4, ge            // encoding: [0x7f,0xa4,0x84,0x9a]
// CHECK: csinc    x5, xzr, x6, hs            // encoding: [0xe5,0x27,0x86,0x9a]
// CHECK: csinc    x7, x8, xzr, lo            // encoding: [0x07,0x35,0x9f,0x9a]

        csinv w1, w0, w19, ne
        csinv wzr, w5, w9, eq
        csinv w9, wzr, w30, gt
        csinv w1, w28, wzr, mi
// CHECK: csinv    w1, w0, w19, ne            // encoding: [0x01,0x10,0x93,0x5a]
// CHECK: csinv    wzr, w5, w9, eq            // encoding: [0xbf,0x00,0x89,0x5a]
// CHECK: csinv    w9, wzr, w30, gt           // encoding: [0xe9,0xc3,0x9e,0x5a]
// CHECK: csinv    w1, w28, wzr, mi           // encoding: [0x81,0x43,0x9f,0x5a]

        csinv x19, x23, x29, lt
        csinv xzr, x3, x4, ge
        csinv x5, xzr, x6, cs
        csinv x7, x8, xzr, cc
// CHECK: csinv    x19, x23, x29, lt          // encoding: [0xf3,0xb2,0x9d,0xda]
// CHECK: csinv    xzr, x3, x4, ge            // encoding: [0x7f,0xa0,0x84,0xda]
// CHECK: csinv    x5, xzr, x6, hs            // encoding: [0xe5,0x23,0x86,0xda]
// CHECK: csinv    x7, x8, xzr, lo            // encoding: [0x07,0x31,0x9f,0xda]

        csneg w1, w0, w19, ne
        csneg wzr, w5, w9, eq
        csneg w9, wzr, w30, gt
        csneg w1, w28, wzr, mi
// CHECK: csneg    w1, w0, w19, ne            // encoding: [0x01,0x14,0x93,0x5a]
// CHECK: csneg    wzr, w5, w9, eq            // encoding: [0xbf,0x04,0x89,0x5a]
// CHECK: csneg    w9, wzr, w30, gt           // encoding: [0xe9,0xc7,0x9e,0x5a]
// CHECK: csneg    w1, w28, wzr, mi           // encoding: [0x81,0x47,0x9f,0x5a]

        csneg x19, x23, x29, lt
        csneg xzr, x3, x4, ge
        csneg x5, xzr, x6, cs
        csneg x7, x8, xzr, cc
// CHECK: csneg    x19, x23, x29, lt          // encoding: [0xf3,0xb6,0x9d,0xda]
// CHECK: csneg    xzr, x3, x4, ge            // encoding: [0x7f,0xa4,0x84,0xda]
// CHECK: csneg    x5, xzr, x6, hs            // encoding: [0xe5,0x27,0x86,0xda]
// CHECK: csneg    x7, x8, xzr, lo            // encoding: [0x07,0x35,0x9f,0xda]

        cset w3, eq
        cset x9, pl
// CHECK: cset    w3, eq           // encoding: [0xe3,0x17,0x9f,0x1a]
// CHECK: cset    x9, pl           // encoding: [0xe9,0x47,0x9f,0x9a]

        csetm w20, ne
        csetm x30, ge
// CHECK: csetm    w20, ne          // encoding: [0xf4,0x03,0x9f,0x5a]
// CHECK: csetm    x30, ge          // encoding: [0xfe,0xb3,0x9f,0xda]

        cinc w3, w5, gt
        cinc wzr, w4, le
        cinc w9, wzr, lt
// CHECK: cinc    w3, w5, gt             // encoding: [0xa3,0xd4,0x85,0x1a]
// CHECK: cinc    wzr, w4, le            // encoding: [0x9f,0xc4,0x84,0x1a]
// CHECK: cset    w9, lt           // encoding: [0xe9,0xa7,0x9f,0x1a]

        cinc x3, x5, gt
        cinc xzr, x4, le
        cinc x9, xzr, lt
// CHECK: cinc     x3, x5, gt             // encoding: [0xa3,0xd4,0x85,0x9a]
// CHECK: cinc     xzr, x4, le            // encoding: [0x9f,0xc4,0x84,0x9a]
// CHECK: cset     x9, lt           // encoding: [0xe9,0xa7,0x9f,0x9a]

        cinv w3, w5, gt
        cinv wzr, w4, le
        cinv w9, wzr, lt
// CHECK: cinv    w3, w5, gt             // encoding: [0xa3,0xd0,0x85,0x5a]
// CHECK: cinv    wzr, w4, le            // encoding: [0x9f,0xc0,0x84,0x5a]
// CHECK: csetm    w9, lt           // encoding: [0xe9,0xa3,0x9f,0x5a]

        cinv x3, x5, gt
        cinv xzr, x4, le
        cinv x9, xzr, lt
// CHECK: cinv    x3, x5, gt             // encoding: [0xa3,0xd0,0x85,0xda]
// CHECK: cinv    xzr, x4, le            // encoding: [0x9f,0xc0,0x84,0xda]
// CHECK: csetm    x9, lt           // encoding: [0xe9,0xa3,0x9f,0xda]

        cneg w3, w5, gt
        cneg wzr, w4, le
        cneg w9, wzr, lt
// CHECK: cneg    w3, w5, gt            // encoding: [0xa3,0xd4,0x85,0x5a]
// CHECK: cneg    wzr, w4, le            // encoding: [0x9f,0xc4,0x84,0x5a]
// CHECK: cneg    w9, wzr, lt           // encoding: [0xe9,0xa7,0x9f,0x5a]

        cneg x3, x5, gt
        cneg xzr, x4, le
        cneg x9, xzr, lt
// CHECK: cneg    x3, x5, gt             // encoding: [0xa3,0xd4,0x85,0xda]
// CHECK: cneg    xzr, x4, le            // encoding: [0x9f,0xc4,0x84,0xda]
// CHECK: cneg    x9, xzr, lt           // encoding: [0xe9,0xa7,0x9f,0xda]

//------------------------------------------------------------------------------
// Data-processing (1 source)
//------------------------------------------------------------------------------

	rbit	w0, w7
	rbit	x18, x3
	rev16	w17, w1
	rev16	x5, x2
	rev	w18, w0
	rev32	x20, x1
	rev32	x20, xzr
// CHECK: rbit	w0, w7                       // encoding: [0xe0,0x00,0xc0,0x5a]
// CHECK: rbit	x18, x3                      // encoding: [0x72,0x00,0xc0,0xda]
// CHECK: rev16 w17, w1                      // encoding: [0x31,0x04,0xc0,0x5a]
// CHECK: rev16	x5, x2                       // encoding: [0x45,0x04,0xc0,0xda]
// CHECK: rev	w18, w0                      // encoding: [0x12,0x08,0xc0,0x5a]
// CHECK: rev32	x20, x1                      // encoding: [0x34,0x08,0xc0,0xda]
// CHECK: rev32	x20, xzr                     // encoding: [0xf4,0x0b,0xc0,0xda]

	rev	x22, x2
	rev	x18, xzr
	rev	w7, wzr
	clz	w24, w3
	clz	x26, x4
	cls	w3, w5
	cls	x20, x5
// CHECK: rev	x22, x2                      // encoding: [0x56,0x0c,0xc0,0xda]
// CHECK: rev	x18, xzr                     // encoding: [0xf2,0x0f,0xc0,0xda]
// CHECK: rev	w7, wzr                      // encoding: [0xe7,0x0b,0xc0,0x5a]
// CHECK: clz	w24, w3                      // encoding: [0x78,0x10,0xc0,0x5a]
// CHECK: clz	x26, x4                      // encoding: [0x9a,0x10,0xc0,0xda]
// CHECK: cls	w3, w5                       // encoding: [0xa3,0x14,0xc0,0x5a]
// CHECK: cls	x20, x5                      // encoding: [0xb4,0x14,0xc0,0xda]

	clz	w24, wzr
	rev	x22, xzr
// CHECK: clz	w24, wzr                     // encoding: [0xf8,0x13,0xc0,0x5a]
// CHECK: rev	x22, xzr                     // encoding: [0xf6,0x0f,0xc0,0xda]

	rev64	x13, x12
// CHECK: rev	x13, x12                     // encoding: [0x8d,0x0d,0xc0,0xda]

//------------------------------------------------------------------------------
// Data-processing (2 source)
//------------------------------------------------------------------------------

        udiv	w0, w7, w10
        udiv	x9, x22, x4
        sdiv	w12, w21, w0
        sdiv	x13, x2, x1
        lslv	w11, w12, w13
        lslv	x14, x15, x16
        lsrv	w17, w18, w19
        lsrv	x20, x21, x22
        asrv	w23, w24, w25
        asrv	x26, x27, x28
        rorv	w0, w1, w2
        rorv    x3, x4, x5


// CHECK: udiv	w0, w7, w10                   // encoding: [0xe0,0x08,0xca,0x1a]
// CHECK: udiv	x9, x22, x4                   // encoding: [0xc9,0x0a,0xc4,0x9a]
// CHECK: sdiv	w12, w21, w0                  // encoding: [0xac,0x0e,0xc0,0x1a]
// CHECK: sdiv	x13, x2, x1                   // encoding: [0x4d,0x0c,0xc1,0x9a]
// CHECK: lsl	w11, w12, w13                 // encoding: [0x8b,0x21,0xcd,0x1a]
// CHECK: lsl	x14, x15, x16                 // encoding: [0xee,0x21,0xd0,0x9a]
// CHECK: lsr	w17, w18, w19                 // encoding: [0x51,0x26,0xd3,0x1a]
// CHECK: lsr	x20, x21, x22                 // encoding: [0xb4,0x26,0xd6,0x9a]
// CHECK: asr	w23, w24, w25                 // encoding: [0x17,0x2b,0xd9,0x1a]
// CHECK: asr	x26, x27, x28                 // encoding: [0x7a,0x2b,0xdc,0x9a]
// CHECK: ror	w0, w1, w2                    // encoding: [0x20,0x2c,0xc2,0x1a]
// CHECK: ror  x3, x4, x5                     // encoding: [0x83,0x2c,0xc5,0x9a]


        lsl	w6, w7, w8
        lsl	x9, x10, x11
        lsr	w12, w13, w14
        lsr	x15, x16, x17
        asr	w18, w19, w20
        asr	x21, x22, x23
        ror	w24, w25, w26
        ror	x27, x28, x29
// CHECK: lsl	w6, w7, w8                    // encoding: [0xe6,0x20,0xc8,0x1a]
// CHECK: lsl	x9, x10, x11                  // encoding: [0x49,0x21,0xcb,0x9a]
// CHECK: lsr	w12, w13, w14                 // encoding: [0xac,0x25,0xce,0x1a]
// CHECK: lsr	x15, x16, x17                 // encoding: [0x0f,0x26,0xd1,0x9a]
// CHECK: asr	w18, w19, w20                 // encoding: [0x72,0x2a,0xd4,0x1a]
// CHECK: asr	x21, x22, x23                 // encoding: [0xd5,0x2a,0xd7,0x9a]
// CHECK: ror	w24, w25, w26                 // encoding: [0x38,0x2f,0xda,0x1a]
// CHECK: ror	x27, x28, x29                 // encoding: [0x9b,0x2f,0xdd,0x9a]

        madd w1, w3, w7, w4
        madd wzr, w0, w9, w11
        madd w13, wzr, w4, w4
        madd w19, w30, wzr, w29
        madd w4, w5, w6, wzr
// CHECK: madd     w1, w3, w7, w4             // encoding: [0x61,0x10,0x07,0x1b]
// CHECK: madd     wzr, w0, w9, w11           // encoding: [0x1f,0x2c,0x09,0x1b]
// CHECK: madd     w13, wzr, w4, w4           // encoding: [0xed,0x13,0x04,0x1b]
// CHECK: madd     w19, w30, wzr, w29         // encoding: [0xd3,0x77,0x1f,0x1b]
// CHECK: mul      w4, w5, w6                 // encoding: [0xa4,0x7c,0x06,0x1b]

        madd x1, x3, x7, x4
        madd xzr, x0, x9, x11
        madd x13, xzr, x4, x4
        madd x19, x30, xzr, x29
        madd x4, x5, x6, xzr
// CHECK: madd     x1, x3, x7, x4             // encoding: [0x61,0x10,0x07,0x9b]
// CHECK: madd     xzr, x0, x9, x11           // encoding: [0x1f,0x2c,0x09,0x9b]
// CHECK: madd     x13, xzr, x4, x4           // encoding: [0xed,0x13,0x04,0x9b]
// CHECK: madd     x19, x30, xzr, x29         // encoding: [0xd3,0x77,0x1f,0x9b]
// CHECK: mul      x4, x5, x6                 // encoding: [0xa4,0x7c,0x06,0x9b]

        msub w1, w3, w7, w4
        msub wzr, w0, w9, w11
        msub w13, wzr, w4, w4
        msub w19, w30, wzr, w29
        msub w4, w5, w6, wzr
// CHECK: msub     w1, w3, w7, w4             // encoding: [0x61,0x90,0x07,0x1b]
// CHECK: msub     wzr, w0, w9, w11           // encoding: [0x1f,0xac,0x09,0x1b]
// CHECK: msub     w13, wzr, w4, w4           // encoding: [0xed,0x93,0x04,0x1b]
// CHECK: msub     w19, w30, wzr, w29         // encoding: [0xd3,0xf7,0x1f,0x1b]
// CHECK: mneg     w4, w5, w6                 // encoding: [0xa4,0xfc,0x06,0x1b]

        msub x1, x3, x7, x4
        msub xzr, x0, x9, x11
        msub x13, xzr, x4, x4
        msub x19, x30, xzr, x29
        msub x4, x5, x6, xzr
// CHECK: msub     x1, x3, x7, x4             // encoding: [0x61,0x90,0x07,0x9b]
// CHECK: msub     xzr, x0, x9, x11           // encoding: [0x1f,0xac,0x09,0x9b]
// CHECK: msub     x13, xzr, x4, x4           // encoding: [0xed,0x93,0x04,0x9b]
// CHECK: msub     x19, x30, xzr, x29         // encoding: [0xd3,0xf7,0x1f,0x9b]
// CHECK: mneg     x4, x5, x6                 // encoding: [0xa4,0xfc,0x06,0x9b]

        smaddl x3, w5, w2, x9
        smaddl xzr, w10, w11, x12
        smaddl x13, wzr, w14, x15
        smaddl x16, w17, wzr, x18
        smaddl x19, w20, w21, xzr
// CHECK: smaddl   x3, w5, w2, x9             // encoding: [0xa3,0x24,0x22,0x9b]
// CHECK: smaddl   xzr, w10, w11, x12         // encoding: [0x5f,0x31,0x2b,0x9b]
// CHECK: smaddl   x13, wzr, w14, x15         // encoding: [0xed,0x3f,0x2e,0x9b]
// CHECK: smaddl   x16, w17, wzr, x18         // encoding: [0x30,0x4a,0x3f,0x9b]
// CHECK: smull    x19, w20, w21              // encoding: [0x93,0x7e,0x35,0x9b]

        smsubl x3, w5, w2, x9
        smsubl xzr, w10, w11, x12
        smsubl x13, wzr, w14, x15
        smsubl x16, w17, wzr, x18
        smsubl x19, w20, w21, xzr
// CHECK: smsubl   x3, w5, w2, x9             // encoding: [0xa3,0xa4,0x22,0x9b]
// CHECK: smsubl   xzr, w10, w11, x12         // encoding: [0x5f,0xb1,0x2b,0x9b]
// CHECK: smsubl   x13, wzr, w14, x15         // encoding: [0xed,0xbf,0x2e,0x9b]
// CHECK: smsubl   x16, w17, wzr, x18         // encoding: [0x30,0xca,0x3f,0x9b]
// CHECK: smnegl   x19, w20, w21              // encoding: [0x93,0xfe,0x35,0x9b]

        umaddl x3, w5, w2, x9
        umaddl xzr, w10, w11, x12
        umaddl x13, wzr, w14, x15
        umaddl x16, w17, wzr, x18
        umaddl x19, w20, w21, xzr
// CHECK: umaddl   x3, w5, w2, x9             // encoding: [0xa3,0x24,0xa2,0x9b]
// CHECK: umaddl   xzr, w10, w11, x12         // encoding: [0x5f,0x31,0xab,0x9b]
// CHECK: umaddl   x13, wzr, w14, x15         // encoding: [0xed,0x3f,0xae,0x9b]
// CHECK: umaddl   x16, w17, wzr, x18         // encoding: [0x30,0x4a,0xbf,0x9b]
// CHECK: umull    x19, w20, w21              // encoding: [0x93,0x7e,0xb5,0x9b]



        umsubl x3, w5, w2, x9
        umsubl xzr, w10, w11, x12
        umsubl x13, wzr, w14, x15
        umsubl x16, w17, wzr, x18
        umsubl x19, w20, w21, xzr
// CHECK: umsubl   x3, w5, w2, x9             // encoding: [0xa3,0xa4,0xa2,0x9b]
// CHECK: umsubl   xzr, w10, w11, x12         // encoding: [0x5f,0xb1,0xab,0x9b]
// CHECK: umsubl   x13, wzr, w14, x15         // encoding: [0xed,0xbf,0xae,0x9b]
// CHECK: umsubl   x16, w17, wzr, x18         // encoding: [0x30,0xca,0xbf,0x9b]
// CHECK: umnegl   x19, w20, w21              // encoding: [0x93,0xfe,0xb5,0x9b]

        smulh x30, x29, x28
        smulh xzr, x27, x26
        smulh x25, xzr, x24
        smulh x23, x22, xzr
// CHECK: smulh    x30, x29, x28              // encoding: [0xbe,0x7f,0x5c,0x9b]
// CHECK: smulh    xzr, x27, x26              // encoding: [0x7f,0x7f,0x5a,0x9b]
// CHECK: smulh    x25, xzr, x24              // encoding: [0xf9,0x7f,0x58,0x9b]
// CHECK: smulh    x23, x22, xzr              // encoding: [0xd7,0x7e,0x5f,0x9b]

        umulh x30, x29, x28
        umulh xzr, x27, x26
        umulh x25, xzr, x24
        umulh x23, x22, xzr
// CHECK: umulh    x30, x29, x28              // encoding: [0xbe,0x7f,0xdc,0x9b]
// CHECK: umulh    xzr, x27, x26              // encoding: [0x7f,0x7f,0xda,0x9b]
// CHECK: umulh    x25, xzr, x24              // encoding: [0xf9,0x7f,0xd8,0x9b]
// CHECK: umulh    x23, x22, xzr              // encoding: [0xd7,0x7e,0xdf,0x9b]

        mul w3, w4, w5
        mul wzr, w6, w7
        mul w8, wzr, w9
        mul w10, w11, wzr

        mul x12, x13, x14
        mul xzr, x15, x16
        mul x17, xzr, x18
        mul x19, x20, xzr

        mneg w21, w22, w23
        mneg wzr, w24, w25
        mneg w26, wzr, w27
        mneg w28, w29, wzr

        smull x11, w13, w17
        umull x11, w13, w17
        smnegl x11, w13, w17
        umnegl x11, w13, w17
// CHECK: mul      w3, w4, w5                 // encoding: [0x83,0x7c,0x05,0x1b]
// CHECK: mul      wzr, w6, w7                // encoding: [0xdf,0x7c,0x07,0x1b]
// CHECK: mul      w8, wzr, w9                // encoding: [0xe8,0x7f,0x09,0x1b]
// CHECK: mul      w10, w11, wzr              // encoding: [0x6a,0x7d,0x1f,0x1b]
// CHECK: mul      x12, x13, x14              // encoding: [0xac,0x7d,0x0e,0x9b]
// CHECK: mul      xzr, x15, x16              // encoding: [0xff,0x7d,0x10,0x9b]
// CHECK: mul      x17, xzr, x18              // encoding: [0xf1,0x7f,0x12,0x9b]
// CHECK: mul      x19, x20, xzr              // encoding: [0x93,0x7e,0x1f,0x9b]
// CHECK: mneg     w21, w22, w23              // encoding: [0xd5,0xfe,0x17,0x1b]
// CHECK: mneg     wzr, w24, w25              // encoding: [0x1f,0xff,0x19,0x1b]
// CHECK: mneg     w26, wzr, w27              // encoding: [0xfa,0xff,0x1b,0x1b]
// CHECK: mneg     w28, w29, wzr              // encoding: [0xbc,0xff,0x1f,0x1b]
// CHECK: smull    x11, w13, w17              // encoding: [0xab,0x7d,0x31,0x9b]
// CHECK: umull    x11, w13, w17              // encoding: [0xab,0x7d,0xb1,0x9b]
// CHECK: smnegl   x11, w13, w17              // encoding: [0xab,0xfd,0x31,0x9b]
// CHECK: umnegl   x11, w13, w17              // encoding: [0xab,0xfd,0xb1,0x9b]

//------------------------------------------------------------------------------
// Exception generation
//------------------------------------------------------------------------------
        svc #0
        svc #65535
// CHECK: svc      #0                         // encoding: [0x01,0x00,0x00,0xd4]
// CHECK: svc      #{{65535|0xffff}}          // encoding: [0xe1,0xff,0x1f,0xd4]

        hvc #1
        smc #12000
        brk #12
        hlt #123
// CHECK: hvc      #{{1|0x1}}                 // encoding: [0x22,0x00,0x00,0xd4]
// CHECK: smc      #{{12000|0x2ee0}}          // encoding: [0x03,0xdc,0x05,0xd4]
// CHECK: brk      #{{12|0xc}}                // encoding: [0x80,0x01,0x20,0xd4]
// CHECK: hlt      #{{123|0x7b}}              // encoding: [0x60,0x0f,0x40,0xd4]

        dcps1 #42
        dcps2 #9
        dcps3 #1000
// CHECK: dcps1    #{{42|0x2a}}               // encoding: [0x41,0x05,0xa0,0xd4]
// CHECK: dcps2    #{{9|0x9}}                 // encoding: [0x22,0x01,0xa0,0xd4]
// CHECK: dcps3    #{{1000|0x3e8}}            // encoding: [0x03,0x7d,0xa0,0xd4]

        dcps1
        dcps2
        dcps3
// CHECK: dcps1                               // encoding: [0x01,0x00,0xa0,0xd4]
// CHECK: dcps2                               // encoding: [0x02,0x00,0xa0,0xd4]
// CHECK: dcps3                               // encoding: [0x03,0x00,0xa0,0xd4]

//------------------------------------------------------------------------------
// Extract (immediate)
//------------------------------------------------------------------------------

        extr w3, w5, w7, #0
        extr w11, w13, w17, #31
// CHECK: extr     w3, w5, w7, #0             // encoding: [0xa3,0x00,0x87,0x13]
// CHECK: extr     w11, w13, w17, #31         // encoding: [0xab,0x7d,0x91,0x13]

        extr x3, x5, x7, #15
        extr x11, x13, x17, #63
// CHECK: extr     x3, x5, x7, #15            // encoding: [0xa3,0x3c,0xc7,0x93]
// CHECK: extr     x11, x13, x17, #63         // encoding: [0xab,0xfd,0xd1,0x93]

        ror x19, x23, #24
        ror x29, xzr, #63
// CHECK: ror     x19, x23, #24         // encoding: [0xf3,0x62,0xd7,0x93]
// CHECK: ror     x29, xzr, #63         // encoding: [0xfd,0xff,0xdf,0x93]

        ror w9, w13, #31
// CHECK: ror     w9, w13, #31          // encoding: [0xa9,0x7d,0x8d,0x13]

//------------------------------------------------------------------------------
// Floating-point compare
//------------------------------------------------------------------------------

        fcmp s3, s5
        fcmp s31, #0.0
// CHECK: fcmp    s3, s5                  // encoding: [0x60,0x20,0x25,0x1e]
// CHECK: fcmp    s31, #0.0               // encoding: [0xe8,0x23,0x20,0x1e]

        fcmpe s29, s30
        fcmpe s15, #0.0
// CHECK: fcmpe   s29, s30                // encoding: [0xb0,0x23,0x3e,0x1e]
// CHECK: fcmpe   s15, #0.0               // encoding: [0xf8,0x21,0x20,0x1e]

        fcmp d4, d12
        fcmp d23, #0.0
// CHECK: fcmp    d4, d12                 // encoding: [0x80,0x20,0x6c,0x1e]
// CHECK: fcmp    d23, #0.0               // encoding: [0xe8,0x22,0x60,0x1e]

        fcmpe d26, d22
        fcmpe d29, #0.0
// CHECK: fcmpe   d26, d22                // encoding: [0x50,0x23,0x76,0x1e]
// CHECK: fcmpe   d29, #0.0               // encoding: [0xb8,0x23,0x60,0x1e]

//------------------------------------------------------------------------------
// Floating-point conditional compare
//------------------------------------------------------------------------------

        fccmp s1, s31, #0, eq
        fccmp s3, s0, #15, hs
        fccmp s31, s15, #13, cs
// CHECK: fccmp    s1, s31, #0, eq         // encoding: [0x20,0x04,0x3f,0x1e]
// CHECK: fccmp    s3, s0, #15, hs         // encoding: [0x6f,0x24,0x20,0x1e]
// CHECK: fccmp    s31, s15, #13, hs       // encoding: [0xed,0x27,0x2f,0x1e]

        fccmp d9, d31, #0, le
        fccmp d3, d0, #15, gt
        fccmp d31, d5, #7, ne
// CHECK: fccmp    d9, d31, #0, le         // encoding: [0x20,0xd5,0x7f,0x1e]
// CHECK: fccmp    d3, d0, #15, gt         // encoding: [0x6f,0xc4,0x60,0x1e]
// CHECK: fccmp    d31, d5, #7, ne         // encoding: [0xe7,0x17,0x65,0x1e]

        fccmpe s1, s31, #0, eq
        fccmpe s3, s0, #15, hs
        fccmpe s31, s15, #13, cs
// CHECK: fccmpe    s1, s31, #0, eq         // encoding: [0x30,0x04,0x3f,0x1e]
// CHECK: fccmpe    s3, s0, #15, hs         // encoding: [0x7f,0x24,0x20,0x1e]
// CHECK: fccmpe    s31, s15, #13, hs       // encoding: [0xfd,0x27,0x2f,0x1e]

        fccmpe d9, d31, #0, le
        fccmpe d3, d0, #15, gt
        fccmpe d31, d5, #7, ne
// CHECK: fccmpe    d9, d31, #0, le         // encoding: [0x30,0xd5,0x7f,0x1e]
// CHECK: fccmpe    d3, d0, #15, gt         // encoding: [0x7f,0xc4,0x60,0x1e]
// CHECK: fccmpe    d31, d5, #7, ne         // encoding: [0xf7,0x17,0x65,0x1e]

//------------------------------------------------------------------------------
// Floating-point conditional compare
//------------------------------------------------------------------------------

        fcsel s3, s20, s9, pl
        fcsel d9, d10, d11, mi
// CHECK: fcsel   s3, s20, s9, pl         // encoding: [0x83,0x5e,0x29,0x1e]
// CHECK: fcsel   d9, d10, d11, mi        // encoding: [0x49,0x4d,0x6b,0x1e]

//------------------------------------------------------------------------------
// Floating-point data-processing (1 source)
//------------------------------------------------------------------------------

        fmov s0, s1
        fabs s2, s3
        fneg s4, s5
        fsqrt s6, s7
        fcvt d8, s9
        fcvt h10, s11
        frintn s12, s13
        frintp s14, s15
        frintm s16, s17
        frintz s18, s19
        frinta s20, s21
        frintx s22, s23
        frinti s24, s25
// CHECK: fmov     s0, s1                // encoding: [0x20,0x40,0x20,0x1e]
// CHECK: fabs     s2, s3                // encoding: [0x62,0xc0,0x20,0x1e]
// CHECK: fneg     s4, s5                     // encoding: [0xa4,0x40,0x21,0x1e]
// CHECK: fsqrt    s6, s7                     // encoding: [0xe6,0xc0,0x21,0x1e]
// CHECK: fcvt     d8, s9                     // encoding: [0x28,0xc1,0x22,0x1e]
// CHECK: fcvt     h10, s11                   // encoding: [0x6a,0xc1,0x23,0x1e]
// CHECK: frintn   s12, s13                   // encoding: [0xac,0x41,0x24,0x1e]
// CHECK: frintp   s14, s15                   // encoding: [0xee,0xc1,0x24,0x1e]
// CHECK: frintm   s16, s17                   // encoding: [0x30,0x42,0x25,0x1e]
// CHECK: frintz   s18, s19                   // encoding: [0x72,0xc2,0x25,0x1e]
// CHECK: frinta   s20, s21                   // encoding: [0xb4,0x42,0x26,0x1e]
// CHECK: frintx   s22, s23                   // encoding: [0xf6,0x42,0x27,0x1e]
// CHECK: frinti   s24, s25                   // encoding: [0x38,0xc3,0x27,0x1e]

        fmov d0, d1
        fabs d2, d3
        fneg d4, d5
        fsqrt d6, d7
        fcvt s8, d9
        fcvt h10, d11
        frintn d12, d13
        frintp d14, d15
        frintm d16, d17
        frintz d18, d19
        frinta d20, d21
        frintx d22, d23
        frinti d24, d25
// CHECK: fmov     d0, d1                     // encoding: [0x20,0x40,0x60,0x1e]
// CHECK: fabs     d2, d3                     // encoding: [0x62,0xc0,0x60,0x1e]
// CHECK: fneg     d4, d5                     // encoding: [0xa4,0x40,0x61,0x1e]
// CHECK: fsqrt    d6, d7                     // encoding: [0xe6,0xc0,0x61,0x1e]
// CHECK: fcvt     s8, d9                     // encoding: [0x28,0x41,0x62,0x1e]
// CHECK: fcvt     h10, d11                   // encoding: [0x6a,0xc1,0x63,0x1e]
// CHECK: frintn   d12, d13                   // encoding: [0xac,0x41,0x64,0x1e]
// CHECK: frintp   d14, d15                   // encoding: [0xee,0xc1,0x64,0x1e]
// CHECK: frintm   d16, d17                   // encoding: [0x30,0x42,0x65,0x1e]
// CHECK: frintz   d18, d19                   // encoding: [0x72,0xc2,0x65,0x1e]
// CHECK: frinta   d20, d21                   // encoding: [0xb4,0x42,0x66,0x1e]
// CHECK: frintx   d22, d23                   // encoding: [0xf6,0x42,0x67,0x1e]
// CHECK: frinti   d24, d25                   // encoding: [0x38,0xc3,0x67,0x1e]

        fcvt s26, h27
        fcvt d28, h29
// CHECK: fcvt     s26, h27                   // encoding: [0x7a,0x43,0xe2,0x1e]
// CHECK: fcvt     d28, h29                   // encoding: [0xbc,0xc3,0xe2,0x1e]

//------------------------------------------------------------------------------
// Floating-point data-processing (2 sources)
//------------------------------------------------------------------------------

        fmul s20, s19, s17
        fdiv s1, s2, s3
        fadd s4, s5, s6
        fsub s7, s8, s9
        fmax s10, s11, s12
        fmin s13, s14, s15
        fmaxnm s16, s17, s18
        fminnm s19, s20, s21
        fnmul s22, s23, s24
// CHECK: fmul     s20, s19, s17              // encoding: [0x74,0x0a,0x31,0x1e]
// CHECK: fdiv     s1, s2, s3                 // encoding: [0x41,0x18,0x23,0x1e]
// CHECK: fadd     s4, s5, s6                 // encoding: [0xa4,0x28,0x26,0x1e]
// CHECK: fsub     s7, s8, s9                 // encoding: [0x07,0x39,0x29,0x1e]
// CHECK: fmax     s10, s11, s12              // encoding: [0x6a,0x49,0x2c,0x1e]
// CHECK: fmin     s13, s14, s15              // encoding: [0xcd,0x59,0x2f,0x1e]
// CHECK: fmaxnm   s16, s17, s18              // encoding: [0x30,0x6a,0x32,0x1e]
// CHECK: fminnm   s19, s20, s21              // encoding: [0x93,0x7a,0x35,0x1e]
// CHECK: fnmul    s22, s23, s24              // encoding: [0xf6,0x8a,0x38,0x1e]

        fmul d20, d19, d17
        fdiv d1, d2, d3
        fadd d4, d5, d6
        fsub d7, d8, d9
        fmax d10, d11, d12
        fmin d13, d14, d15
        fmaxnm d16, d17, d18
        fminnm d19, d20, d21
        fnmul d22, d23, d24
// CHECK: fmul     d20, d19, d17              // encoding: [0x74,0x0a,0x71,0x1e]
// CHECK: fdiv     d1, d2, d3                 // encoding: [0x41,0x18,0x63,0x1e]
// CHECK: fadd     d4, d5, d6                 // encoding: [0xa4,0x28,0x66,0x1e]
// CHECK: fsub     d7, d8, d9                 // encoding: [0x07,0x39,0x69,0x1e]
// CHECK: fmax     d10, d11, d12              // encoding: [0x6a,0x49,0x6c,0x1e]
// CHECK: fmin     d13, d14, d15              // encoding: [0xcd,0x59,0x6f,0x1e]
// CHECK: fmaxnm   d16, d17, d18              // encoding: [0x30,0x6a,0x72,0x1e]
// CHECK: fminnm   d19, d20, d21              // encoding: [0x93,0x7a,0x75,0x1e]
// CHECK: fnmul    d22, d23, d24              // encoding: [0xf6,0x8a,0x78,0x1e]

//------------------------------------------------------------------------------
// Floating-point data-processing (3 sources)
//------------------------------------------------------------------------------

        fmadd s3, s5, s6, s31
        fmadd d3, d13, d0, d23
        fmsub s3, s5, s6, s31
        fmsub d3, d13, d0, d23
        fnmadd s3, s5, s6, s31
        fnmadd d3, d13, d0, d23
        fnmsub s3, s5, s6, s31
        fnmsub d3, d13, d0, d23
// CHECK: fmadd   s3, s5, s6, s31         // encoding: [0xa3,0x7c,0x06,0x1f]
// CHECK: fmadd   d3, d13, d0, d23        // encoding: [0xa3,0x5d,0x40,0x1f]
// CHECK: fmsub   s3, s5, s6, s31         // encoding: [0xa3,0xfc,0x06,0x1f]
// CHECK: fmsub   d3, d13, d0, d23        // encoding: [0xa3,0xdd,0x40,0x1f]
// CHECK: fnmadd  s3, s5, s6, s31         // encoding: [0xa3,0x7c,0x26,0x1f]
// CHECK: fnmadd  d3, d13, d0, d23        // encoding: [0xa3,0x5d,0x60,0x1f]
// CHECK: fnmsub  s3, s5, s6, s31         // encoding: [0xa3,0xfc,0x26,0x1f]
// CHECK: fnmsub  d3, d13, d0, d23        // encoding: [0xa3,0xdd,0x60,0x1f]

//------------------------------------------------------------------------------
// Floating-point <-> fixed-point conversion
//------------------------------------------------------------------------------

        fcvtzs w3, s5, #1
        fcvtzs wzr, s20, #13
        fcvtzs w19, s0, #32
// CHECK: fcvtzs  w3, s5, #1              // encoding: [0xa3,0xfc,0x18,0x1e]
// CHECK: fcvtzs  wzr, s20, #13           // encoding: [0x9f,0xce,0x18,0x1e]
// CHECK: fcvtzs  w19, s0, #32            // encoding: [0x13,0x80,0x18,0x1e]

        fcvtzs x3, s5, #1
        fcvtzs x12, s30, #45
        fcvtzs x19, s0, #64
// CHECK: fcvtzs  x3, s5, #1              // encoding: [0xa3,0xfc,0x18,0x9e]
// CHECK: fcvtzs  x12, s30, #45           // encoding: [0xcc,0x4f,0x18,0x9e]
// CHECK: fcvtzs  x19, s0, #64            // encoding: [0x13,0x00,0x18,0x9e]

        fcvtzs w3, d5, #1
        fcvtzs wzr, d20, #13
        fcvtzs w19, d0, #32
// CHECK: fcvtzs  w3, d5, #1              // encoding: [0xa3,0xfc,0x58,0x1e]
// CHECK: fcvtzs  wzr, d20, #13           // encoding: [0x9f,0xce,0x58,0x1e]
// CHECK: fcvtzs  w19, d0, #32            // encoding: [0x13,0x80,0x58,0x1e]

        fcvtzs x3, d5, #1
        fcvtzs x12, d30, #45
        fcvtzs x19, d0, #64
// CHECK: fcvtzs  x3, d5, #1              // encoding: [0xa3,0xfc,0x58,0x9e]
// CHECK: fcvtzs  x12, d30, #45           // encoding: [0xcc,0x4f,0x58,0x9e]
// CHECK: fcvtzs  x19, d0, #64            // encoding: [0x13,0x00,0x58,0x9e]

        fcvtzu w3, s5, #1
        fcvtzu wzr, s20, #13
        fcvtzu w19, s0, #32
// CHECK: fcvtzu  w3, s5, #1              // encoding: [0xa3,0xfc,0x19,0x1e]
// CHECK: fcvtzu  wzr, s20, #13           // encoding: [0x9f,0xce,0x19,0x1e]
// CHECK: fcvtzu  w19, s0, #32            // encoding: [0x13,0x80,0x19,0x1e]

        fcvtzu x3, s5, #1
        fcvtzu x12, s30, #45
        fcvtzu x19, s0, #64
// CHECK: fcvtzu  x3, s5, #1              // encoding: [0xa3,0xfc,0x19,0x9e]
// CHECK: fcvtzu  x12, s30, #45           // encoding: [0xcc,0x4f,0x19,0x9e]
// CHECK: fcvtzu  x19, s0, #64            // encoding: [0x13,0x00,0x19,0x9e]

        fcvtzu w3, d5, #1
        fcvtzu wzr, d20, #13
        fcvtzu w19, d0, #32
// CHECK: fcvtzu  w3, d5, #1              // encoding: [0xa3,0xfc,0x59,0x1e]
// CHECK: fcvtzu  wzr, d20, #13           // encoding: [0x9f,0xce,0x59,0x1e]
// CHECK: fcvtzu  w19, d0, #32            // encoding: [0x13,0x80,0x59,0x1e]

        fcvtzu x3, d5, #1
        fcvtzu x12, d30, #45
        fcvtzu x19, d0, #64
// CHECK: fcvtzu  x3, d5, #1              // encoding: [0xa3,0xfc,0x59,0x9e]
// CHECK: fcvtzu  x12, d30, #45           // encoding: [0xcc,0x4f,0x59,0x9e]
// CHECK: fcvtzu  x19, d0, #64            // encoding: [0x13,0x00,0x59,0x9e]

        scvtf s23, w19, #1
        scvtf s31, wzr, #20
        scvtf s14, w0, #32
// CHECK: scvtf   s23, w19, #1            // encoding: [0x77,0xfe,0x02,0x1e]
// CHECK: scvtf   s31, wzr, #20           // encoding: [0xff,0xb3,0x02,0x1e]
// CHECK: scvtf   s14, w0, #32            // encoding: [0x0e,0x80,0x02,0x1e]

        scvtf s23, x19, #1
        scvtf s31, xzr, #20
        scvtf s14, x0, #64
// CHECK: scvtf   s23, x19, #1            // encoding: [0x77,0xfe,0x02,0x9e]
// CHECK: scvtf   s31, xzr, #20           // encoding: [0xff,0xb3,0x02,0x9e]
// CHECK: scvtf   s14, x0, #64            // encoding: [0x0e,0x00,0x02,0x9e]

        scvtf d23, w19, #1
        scvtf d31, wzr, #20
        scvtf d14, w0, #32
// CHECK: scvtf   d23, w19, #1            // encoding: [0x77,0xfe,0x42,0x1e]
// CHECK: scvtf   d31, wzr, #20           // encoding: [0xff,0xb3,0x42,0x1e]
// CHECK: scvtf   d14, w0, #32            // encoding: [0x0e,0x80,0x42,0x1e]

        scvtf d23, x19, #1
        scvtf d31, xzr, #20
        scvtf d14, x0, #64
// CHECK: scvtf   d23, x19, #1            // encoding: [0x77,0xfe,0x42,0x9e]
// CHECK: scvtf   d31, xzr, #20           // encoding: [0xff,0xb3,0x42,0x9e]
// CHECK: scvtf   d14, x0, #64            // encoding: [0x0e,0x00,0x42,0x9e]

        ucvtf s23, w19, #1
        ucvtf s31, wzr, #20
        ucvtf s14, w0, #32
// CHECK: ucvtf   s23, w19, #1            // encoding: [0x77,0xfe,0x03,0x1e]
// CHECK: ucvtf   s31, wzr, #20           // encoding: [0xff,0xb3,0x03,0x1e]
// CHECK: ucvtf   s14, w0, #32            // encoding: [0x0e,0x80,0x03,0x1e]

        ucvtf s23, x19, #1
        ucvtf s31, xzr, #20
        ucvtf s14, x0, #64
// CHECK: ucvtf   s23, x19, #1            // encoding: [0x77,0xfe,0x03,0x9e]
// CHECK: ucvtf   s31, xzr, #20           // encoding: [0xff,0xb3,0x03,0x9e]
// CHECK: ucvtf   s14, x0, #64            // encoding: [0x0e,0x00,0x03,0x9e]

        ucvtf d23, w19, #1
        ucvtf d31, wzr, #20
        ucvtf d14, w0, #32
// CHECK: ucvtf   d23, w19, #1            // encoding: [0x77,0xfe,0x43,0x1e]
// CHECK: ucvtf   d31, wzr, #20           // encoding: [0xff,0xb3,0x43,0x1e]
// CHECK: ucvtf   d14, w0, #32            // encoding: [0x0e,0x80,0x43,0x1e]

        ucvtf d23, x19, #1
        ucvtf d31, xzr, #20
        ucvtf d14, x0, #64
// CHECK: ucvtf   d23, x19, #1            // encoding: [0x77,0xfe,0x43,0x9e]
// CHECK: ucvtf   d31, xzr, #20           // encoding: [0xff,0xb3,0x43,0x9e]
// CHECK: ucvtf   d14, x0, #64            // encoding: [0x0e,0x00,0x43,0x9e]

//------------------------------------------------------------------------------
// Floating-point <-> integer conversion
//------------------------------------------------------------------------------
        fcvtns w3, s31
        fcvtns xzr, s12
        fcvtnu wzr, s12
        fcvtnu x0, s0
// CHECK: fcvtns   w3, s31                    // encoding: [0xe3,0x03,0x20,0x1e]
// CHECK: fcvtns   xzr, s12                   // encoding: [0x9f,0x01,0x20,0x9e]
// CHECK: fcvtnu   wzr, s12                   // encoding: [0x9f,0x01,0x21,0x1e]
// CHECK: fcvtnu   x0, s0                     // encoding: [0x00,0x00,0x21,0x9e]

        fcvtps wzr, s9
        fcvtps x12, s20
        fcvtpu w30, s23
        fcvtpu x29, s3
// CHECK: fcvtps   wzr, s9                    // encoding: [0x3f,0x01,0x28,0x1e]
// CHECK: fcvtps   x12, s20                   // encoding: [0x8c,0x02,0x28,0x9e]
// CHECK: fcvtpu   w30, s23                   // encoding: [0xfe,0x02,0x29,0x1e]
// CHECK: fcvtpu   x29, s3                    // encoding: [0x7d,0x00,0x29,0x9e]

        fcvtms w2, s3
        fcvtms x4, s5
        fcvtmu w6, s7
        fcvtmu x8, s9
// CHECK: fcvtms   w2, s3                     // encoding: [0x62,0x00,0x30,0x1e]
// CHECK: fcvtms   x4, s5                     // encoding: [0xa4,0x00,0x30,0x9e]
// CHECK: fcvtmu   w6, s7                     // encoding: [0xe6,0x00,0x31,0x1e]
// CHECK: fcvtmu   x8, s9                     // encoding: [0x28,0x01,0x31,0x9e]

        fcvtzs w10, s11
        fcvtzs x12, s13
        fcvtzu w14, s15
        fcvtzu x15, s16
// CHECK: fcvtzs   w10, s11                   // encoding: [0x6a,0x01,0x38,0x1e]
// CHECK: fcvtzs   x12, s13                   // encoding: [0xac,0x01,0x38,0x9e]
// CHECK: fcvtzu   w14, s15                   // encoding: [0xee,0x01,0x39,0x1e]
// CHECK: fcvtzu   x15, s16                   // encoding: [0x0f,0x02,0x39,0x9e]

        scvtf s17, w18
        scvtf s19, x20
        ucvtf s21, w22
        scvtf s23, x24
// CHECK: scvtf    s17, w18                   // encoding: [0x51,0x02,0x22,0x1e]
// CHECK: scvtf    s19, x20                   // encoding: [0x93,0x02,0x22,0x9e]
// CHECK: ucvtf    s21, w22                   // encoding: [0xd5,0x02,0x23,0x1e]
// CHECK: scvtf    s23, x24                   // encoding: [0x17,0x03,0x22,0x9e]

        fcvtas w25, s26
        fcvtas x27, s28
        fcvtau w29, s30
        fcvtau xzr, s0
// CHECK: fcvtas   w25, s26                   // encoding: [0x59,0x03,0x24,0x1e]
// CHECK: fcvtas   x27, s28                   // encoding: [0x9b,0x03,0x24,0x9e]
// CHECK: fcvtau   w29, s30                   // encoding: [0xdd,0x03,0x25,0x1e]
// CHECK: fcvtau   xzr, s0                    // encoding: [0x1f,0x00,0x25,0x9e]

        fcvtns w3, d31
        fcvtns xzr, d12
        fcvtnu wzr, d12
        fcvtnu x0, d0
// CHECK: fcvtns   w3, d31                    // encoding: [0xe3,0x03,0x60,0x1e]
// CHECK: fcvtns   xzr, d12                   // encoding: [0x9f,0x01,0x60,0x9e]
// CHECK: fcvtnu   wzr, d12                   // encoding: [0x9f,0x01,0x61,0x1e]
// CHECK: fcvtnu   x0, d0                     // encoding: [0x00,0x00,0x61,0x9e]

        fcvtps wzr, d9
        fcvtps x12, d20
        fcvtpu w30, d23
        fcvtpu x29, d3
// CHECK: fcvtps   wzr, d9                    // encoding: [0x3f,0x01,0x68,0x1e]
// CHECK: fcvtps   x12, d20                   // encoding: [0x8c,0x02,0x68,0x9e]
// CHECK: fcvtpu   w30, d23                   // encoding: [0xfe,0x02,0x69,0x1e]
// CHECK: fcvtpu   x29, d3                    // encoding: [0x7d,0x00,0x69,0x9e]

        fcvtms w2, d3
        fcvtms x4, d5
        fcvtmu w6, d7
        fcvtmu x8, d9
// CHECK: fcvtms   w2, d3                     // encoding: [0x62,0x00,0x70,0x1e]
// CHECK: fcvtms   x4, d5                     // encoding: [0xa4,0x00,0x70,0x9e]
// CHECK: fcvtmu   w6, d7                     // encoding: [0xe6,0x00,0x71,0x1e]
// CHECK: fcvtmu   x8, d9                     // encoding: [0x28,0x01,0x71,0x9e]

        fcvtzs w10, d11
        fcvtzs x12, d13
        fcvtzu w14, d15
        fcvtzu x15, d16
// CHECK: fcvtzs   w10, d11                   // encoding: [0x6a,0x01,0x78,0x1e]
// CHECK: fcvtzs   x12, d13                   // encoding: [0xac,0x01,0x78,0x9e]
// CHECK: fcvtzu   w14, d15                   // encoding: [0xee,0x01,0x79,0x1e]
// CHECK: fcvtzu   x15, d16                   // encoding: [0x0f,0x02,0x79,0x9e]

        scvtf d17, w18
        scvtf d19, x20
        ucvtf d21, w22
        ucvtf d23, x24
// CHECK: scvtf    d17, w18                   // encoding: [0x51,0x02,0x62,0x1e]
// CHECK: scvtf    d19, x20                   // encoding: [0x93,0x02,0x62,0x9e]
// CHECK: ucvtf    d21, w22                   // encoding: [0xd5,0x02,0x63,0x1e]
// CHECK: ucvtf    d23, x24                   // encoding: [0x17,0x03,0x63,0x9e]

        fcvtas w25, d26
        fcvtas x27, d28
        fcvtau w29, d30
        fcvtau xzr, d0
// CHECK: fcvtas   w25, d26                   // encoding: [0x59,0x03,0x64,0x1e]
// CHECK: fcvtas   x27, d28                   // encoding: [0x9b,0x03,0x64,0x9e]
// CHECK: fcvtau   w29, d30                   // encoding: [0xdd,0x03,0x65,0x1e]
// CHECK: fcvtau   xzr, d0                    // encoding: [0x1f,0x00,0x65,0x9e]

        fmov w3, s9
        fmov s9, w3
// CHECK: fmov     w3, s9                     // encoding: [0x23,0x01,0x26,0x1e]
// CHECK: fmov     s9, w3                     // encoding: [0x69,0x00,0x27,0x1e]

        fmov x20, d31
        fmov d1, x15
// CHECK: fmov     x20, d31                   // encoding: [0xf4,0x03,0x66,0x9e]
// CHECK: fmov     d1, x15                    // encoding: [0xe1,0x01,0x67,0x9e]

        fmov x3, v12.d[1]
        fmov v1.d[1], x19
        fmov v3.d[1], xzr
// CHECK: fmov     x3, v12.d[1]               // encoding: [0x83,0x01,0xae,0x9e]
// CHECK: fmov     v1.d[1], x19               // encoding: [0x61,0x02,0xaf,0x9e]
// CHECK: fmov     v3.d[1], xzr               // encoding: [0xe3,0x03,0xaf,0x9e]

//------------------------------------------------------------------------------
// Floating-point immediate
//------------------------------------------------------------------------------

        fmov s2, #0.125
        fmov s3, #1.0
        fmov d30, #16.0
// CHECK: fmov     s2, #{{0.12500000|1.250*e-01}}            // encoding: [0x02,0x10,0x28,0x1e]
// CHECK: fmov     s3, #{{1.00000000|1.0*e\+00}}            // encoding: [0x03,0x10,0x2e,0x1e]
// CHECK: fmov     d30, #{{16.00000000|1.60*e\+01}}          // encoding: [0x1e,0x10,0x66,0x1e]

        fmov s4, #1.0625
        fmov d10, #1.9375
// CHECK: fmov     s4, #{{1.06250*(e\+00)?}}            // encoding: [0x04,0x30,0x2e,0x1e]
// CHECK: fmov     d10, #{{1.93750*(e\+00)?}}           // encoding: [0x0a,0xf0,0x6f,0x1e]

        fmov s12, #-1.0
// CHECK: fmov     s12, #{{-1.0*(e\+00)?}}          // encoding: [0x0c,0x10,0x3e,0x1e]

        fmov d16, #8.5
// CHECK: fmov     d16, #{{8.50*(e\+00)?}}          // encoding: [0x10,0x30,0x64,0x1e]

//------------------------------------------------------------------------------
// Load-register (literal)
//------------------------------------------------------------------------------
        ldr w3, here
        ldr x29, there
        ldrsw xzr, everywhere

// CHECK: ldr    w3, here                // encoding: [0bAAA00011,A,A,0x18]
// CHECK:                                 //   fixup A - offset: 0, value: here, kind: fixup_aarch64_ldr_pcrel_imm19
// CHECK: ldr    x29, there              // encoding: [0bAAA11101,A,A,0x58]
// CHECK:                                 //   fixup A - offset: 0, value: there, kind: fixup_aarch64_ldr_pcrel_imm19
// CHECK: ldrsw    xzr, everywhere         // encoding: [0bAAA11111,A,A,0x98]
// CHECK:                                 //   fixup A - offset: 0, value: everywhere, kind: fixup_aarch64_ldr_pcrel_imm19

        ldr s0, who_knows
        ldr d0, i_dont
        ldr q0, there_must_be_a_better_way

// CHECK: ldr    s0, who_knows           // encoding: [0bAAA00000,A,A,0x1c]
// CHECK:                                 //   fixup A - offset: 0, value: who_knows, kind: fixup_aarch64_ldr_pcrel_imm19
// CHECK: ldr    d0, i_dont              // encoding: [0bAAA00000,A,A,0x5c]
// CHECK:                                 //   fixup A - offset: 0, value: i_dont, kind: fixup_aarch64_ldr_pcrel_imm19
// CHECK: ldr    q0, there_must_be_a_better_way // encoding: [0bAAA00000,A,A,0x9c]
// CHECK:                                 //   fixup A - offset: 0, value: there_must_be_a_better_way, kind: fixup_aarch64_ldr_pcrel_imm19

        ldr w0, #1048572
        ldr x10, #-1048576
// CHECK: ldr     w0, #1048572            // encoding: [0xe0,0xff,0x7f,0x18]
// CHECK: ldr     x10, #-1048576          // encoding: [0x0a,0x00,0x80,0x58]

        prfm pldl1strm, nowhere
        prfm #22, somewhere

// CHECK: prfm    pldl1strm, nowhere      // encoding: [0bAAA00001,A,A,0xd8]
// CHECK:                                 //   fixup A - offset: 0, value: nowhere, kind: fixup_aarch64_ldr_pcrel_imm19
// CHECK: prfm    #22, somewhere          // encoding: [0bAAA10110,A,A,0xd8]
// CHECK:                                 //   fixup A - offset: 0, value: somewhere, kind: fixup_aarch64_ldr_pcrel_imm19

//------------------------------------------------------------------------------
// Load/store exclusive
//------------------------------------------------------------------------------

        stxrb      w1, w2, [x3, #0]
        stxrh      w2, w3, [x4]
        stxr       wzr, w4, [sp]
        stxr       w5, x6, [x7]
// CHECK: stxrb    w1, w2, [x3]              // encoding: [0x62,0x7c,0x01,0x08]
// CHECK: stxrh    w2, w3, [x4]              // encoding: [0x83,0x7c,0x02,0x48]
// CHECK: stxr     wzr, w4, [sp]             // encoding: [0xe4,0x7f,0x1f,0x88]
// CHECK: stxr     w5, x6, [x7]              // encoding: [0xe6,0x7c,0x05,0xc8]

        ldxrb      w7, [x9]
        ldxrh      wzr, [x10]
        ldxr       w9, [sp]
        ldxr       x10, [x11]
// CHECK: ldxrb    w7, [x9]                  // encoding: [0x27,0x7d,0x5f,0x08]
// CHECK: ldxrh    wzr, [x10]                // encoding: [0x5f,0x7d,0x5f,0x48]
// CHECK: ldxr     w9, [sp]                  // encoding: [0xe9,0x7f,0x5f,0x88]
// CHECK: ldxr     x10, [x11]                // encoding: [0x6a,0x7d,0x5f,0xc8]

        stxp       w11, w12, w13, [x14]
        stxp       wzr, x23, x14, [x15]
// CHECK: stxp     w11, w12, w13, [x14]      // encoding: [0xcc,0x35,0x2b,0x88]
// CHECK: stxp     wzr, x23, x14, [x15]      // encoding: [0xf7,0x39,0x3f,0xc8]

        ldxp       w12, wzr, [sp]
        ldxp       x13, x14, [x15]
// CHECK: ldxp     w12, wzr, [sp]            // encoding: [0xec,0x7f,0x7f,0x88]
// CHECK: ldxp     x13, x14, [x15]           // encoding: [0xed,0x39,0x7f,0xc8]

        stlxrb     w14, w15, [x16]
        stlxrh     w15, w16, [x17,#0]
        stlxr      wzr, w17, [sp]
        stlxr      w18, x19, [x20]
// CHECK: stlxrb   w14, w15, [x16]           // encoding: [0x0f,0xfe,0x0e,0x08]
// CHECK: stlxrh   w15, w16, [x17]           // encoding: [0x30,0xfe,0x0f,0x48]
// CHECK: stlxr    wzr, w17, [sp]            // encoding: [0xf1,0xff,0x1f,0x88]
// CHECK: stlxr    w18, x19, [x20]           // encoding: [0x93,0xfe,0x12,0xc8]

        ldaxrb     w19, [x21]
        ldaxrh     w20, [sp]
        ldaxr      wzr, [x22]
        ldaxr      x21, [x23]
// CHECK: ldaxrb   w19, [x21]                // encoding: [0xb3,0xfe,0x5f,0x08]
// CHECK: ldaxrh   w20, [sp]                 // encoding: [0xf4,0xff,0x5f,0x48]
// CHECK: ldaxr    wzr, [x22]                // encoding: [0xdf,0xfe,0x5f,0x88]
// CHECK: ldaxr    x21, [x23]                // encoding: [0xf5,0xfe,0x5f,0xc8]

        stlxp      wzr, w22, w23, [x24]
        stlxp      w25, x26, x27, [sp]
// CHECK: stlxp    wzr, w22, w23, [x24]      // encoding: [0x16,0xdf,0x3f,0x88]
// CHECK: stlxp    w25, x26, x27, [sp]       // encoding: [0xfa,0xef,0x39,0xc8]

        ldaxp      w26, wzr, [sp]
        ldaxp      x27, x28, [x30]
// CHECK: ldaxp    w26, wzr, [sp]            // encoding: [0xfa,0xff,0x7f,0x88]
// CHECK: ldaxp    x27, x28, [x30]           // encoding: [0xdb,0xf3,0x7f,0xc8]

        stlrb      w27, [sp]
        stlrh      w28, [x0]
        stlr       wzr, [x1]
        stlr       x30, [x2]
// CHECK: stlrb    w27, [sp]                 // encoding: [0xfb,0xff,0x9f,0x08]
// CHECK: stlrh    w28, [x0]                 // encoding: [0x1c,0xfc,0x9f,0x48]
// CHECK: stlr     wzr, [x1]                 // encoding: [0x3f,0xfc,0x9f,0x88]
// CHECK: stlr     x30, [x2]                 // encoding: [0x5e,0xfc,0x9f,0xc8]

        ldarb      w29, [sp]
        ldarh      w30, [x0]
        ldar       wzr, [x1]
        ldar       x1, [x2]
// CHECK: ldarb    w29, [sp]                 // encoding: [0xfd,0xff,0xdf,0x08]
// CHECK: ldarh    w30, [x0]                 // encoding: [0x1e,0xfc,0xdf,0x48]
// CHECK: ldar     wzr, [x1]                 // encoding: [0x3f,0xfc,0xdf,0x88]
// CHECK: ldar     x1, [x2]                  // encoding: [0x41,0xfc,0xdf,0xc8]

        stlxp      wzr, w22, w23, [x24,#0]
// CHECK: stlxp    wzr, w22, w23, [x24]      // encoding: [0x16,0xdf,0x3f,0x88]

//------------------------------------------------------------------------------
// Load/store (unaligned immediate)
//------------------------------------------------------------------------------

        sturb w9, [sp, #0]
        sturh wzr, [x12, #255]
        stur w16, [x0, #-256]
        stur x28, [x14, #1]
// CHECK: sturb    w9, [sp]                   // encoding: [0xe9,0x03,0x00,0x38]
// CHECK: sturh    wzr, [x12, #255]           // encoding: [0x9f,0xf1,0x0f,0x78]
// CHECK: stur     w16, [x0, #-256]           // encoding: [0x10,0x00,0x10,0xb8]
// CHECK: stur     x28, [x14, #1]             // encoding: [0xdc,0x11,0x00,0xf8]

        ldurb w1, [x20, #255]
        ldurh w20, [x1, #255]
        ldur w12, [sp, #255]
        ldur xzr, [x12, #255]
// CHECK: ldurb    w1, [x20, #255]            // encoding: [0x81,0xf2,0x4f,0x38]
// CHECK: ldurh    w20, [x1, #255]            // encoding: [0x34,0xf0,0x4f,0x78]
// CHECK: ldur     w12, [sp, #255]            // encoding: [0xec,0xf3,0x4f,0xb8]
// CHECK: ldur     xzr, [x12, #255]           // encoding: [0x9f,0xf1,0x4f,0xf8]

        ldursb x9, [x7, #-256]
        ldursh x17, [x19, #-256]
        ldursw x20, [x15, #-256]
        ldursw x13, [x2]
        prfum pldl2keep, [sp, #-256]
        ldursb w19, [x1, #-256]
        ldursh w15, [x21, #-256]
// CHECK: ldursb   x9, [x7, #-256]            // encoding: [0xe9,0x00,0x90,0x38]
// CHECK: ldursh   x17, [x19, #-256]          // encoding: [0x71,0x02,0x90,0x78]
// CHECK: ldursw   x20, [x15, #-256]          // encoding: [0xf4,0x01,0x90,0xb8]
// CHECK: ldursw   x13, [x2]                  // encoding: [0x4d,0x00,0x80,0xb8]
// CHECK: prfum    pldl2keep, [sp, #-256]     // encoding: [0xe2,0x03,0x90,0xf8]
// CHECK: ldursb   w19, [x1, #-256]           // encoding: [0x33,0x00,0xd0,0x38]
// CHECK: ldursh   w15, [x21, #-256]          // encoding: [0xaf,0x02,0xd0,0x78]

        stur b0, [sp, #1]
        stur h12, [x12, #-1]
        stur s15, [x0, #255]
        stur d31, [x5, #25]
        stur q9, [x5]
// CHECK: stur     b0, [sp, #1]               // encoding: [0xe0,0x13,0x00,0x3c]
// CHECK: stur     h12, [x12, #-1]            // encoding: [0x8c,0xf1,0x1f,0x7c]
// CHECK: stur     s15, [x0, #255]            // encoding: [0x0f,0xf0,0x0f,0xbc]
// CHECK: stur     d31, [x5, #25]             // encoding: [0xbf,0x90,0x01,0xfc]
// CHECK: stur     q9, [x5]                   // encoding: [0xa9,0x00,0x80,0x3c]

        ldur b3, [sp]
        ldur h5, [x4, #-256]
        ldur s7, [x12, #-1]
        ldur d11, [x19, #4]
        ldur q13, [x1, #2]
// CHECK: ldur     b3, [sp]                   // encoding: [0xe3,0x03,0x40,0x3c]
// CHECK: ldur     h5, [x4, #-256]            // encoding: [0x85,0x00,0x50,0x7c]
// CHECK: ldur     s7, [x12, #-1]             // encoding: [0x87,0xf1,0x5f,0xbc]
// CHECK: ldur     d11, [x19, #4]             // encoding: [0x6b,0x42,0x40,0xfc]
// CHECK: ldur     q13, [x1, #2]              // encoding: [0x2d,0x20,0xc0,0x3c]

//------------------------------------------------------------------------------
// Load/store (unsigned immediate)
//------------------------------------------------------------------------------

//// Basic addressing mode limits: 8 byte access
        ldr x0, [x0]
        ldr x4, [x29, #0]
        ldr x30, [x12, #32760]
        ldr x20, [sp, #8]
// CHECK: ldr      x0, [x0]                   // encoding: [0x00,0x00,0x40,0xf9]
// CHECK: ldr      x4, [x29]                  // encoding: [0xa4,0x03,0x40,0xf9]
// CHECK: ldr      x30, [x12, #32760]         // encoding: [0x9e,0xfd,0x7f,0xf9]
// CHECK: ldr      x20, [sp, #8]              // encoding: [0xf4,0x07,0x40,0xf9]

//// Rt treats 31 as zero-register
        ldr xzr, [sp]
// CHECK: ldr      xzr, [sp]                  // encoding: [0xff,0x03,0x40,0xf9]

        //// 4-byte load, check still 64-bit address, limits
        ldr w2, [sp]
        ldr w17, [sp, #16380]
        ldr w13, [x2, #4]
// CHECK: ldr      w2, [sp]                   // encoding: [0xe2,0x03,0x40,0xb9]
// CHECK: ldr      w17, [sp, #16380]          // encoding: [0xf1,0xff,0x7f,0xb9]
// CHECK: ldr      w13, [x2, #4]              // encoding: [0x4d,0x04,0x40,0xb9]

//// Signed 4-byte load. Limits.
        ldrsw x2, [x5,#4]
        ldrsw x23, [sp, #16380]
// CHECK: ldrsw    x2, [x5, #4]               // encoding: [0xa2,0x04,0x80,0xb9]
// CHECK: ldrsw    x23, [sp, #16380]          // encoding: [0xf7,0xff,0xbf,0xb9]

////  2-byte loads
        ldrh w2, [x4]
        ldrsh w23, [x6, #8190]
        ldrsh wzr, [sp, #2]
        ldrsh x29, [x2, #2]
// CHECK: ldrh     w2, [x4]                   // encoding: [0x82,0x00,0x40,0x79]
// CHECK: ldrsh    w23, [x6, #8190]           // encoding: [0xd7,0xfc,0xff,0x79]
// CHECK: ldrsh    wzr, [sp, #2]              // encoding: [0xff,0x07,0xc0,0x79]
// CHECK: ldrsh    x29, [x2, #2]              // encoding: [0x5d,0x04,0x80,0x79]

//// 1-byte loads
        ldrb w26, [x3, #121]
        ldrb w12, [x2, #0]
        ldrsb w27, [sp, #4095]
        ldrsb xzr, [x15]
// CHECK: ldrb     w26, [x3, #121]            // encoding: [0x7a,0xe4,0x41,0x39]
// CHECK: ldrb     w12, [x2]                  // encoding: [0x4c,0x00,0x40,0x39]
// CHECK: ldrsb    w27, [sp, #4095]           // encoding: [0xfb,0xff,0xff,0x39]
// CHECK: ldrsb    xzr, [x15]                 // encoding: [0xff,0x01,0x80,0x39]

//// Stores
        str x30, [sp]
        str w20, [x4, #16380]
        strh w20, [x10, #14]
        strh w17, [sp, #8190]
        strb w23, [x3, #4095]
        strb wzr, [x2]
// CHECK: str      x30, [sp]                  // encoding: [0xfe,0x03,0x00,0xf9]
// CHECK: str      w20, [x4, #16380]          // encoding: [0x94,0xfc,0x3f,0xb9]
// CHECK: strh     w20, [x10, #14]            // encoding: [0x54,0x1d,0x00,0x79]
// CHECK: strh     w17, [sp, #8190]           // encoding: [0xf1,0xff,0x3f,0x79]
// CHECK: strb     w23, [x3, #4095]           // encoding: [0x77,0xfc,0x3f,0x39]
// CHECK: strb     wzr, [x2]                  // encoding: [0x5f,0x00,0x00,0x39]

//// Relocations
        str x15, [x5, #:lo12:sym]
        ldrb w15, [x5, #:lo12:sym]
        ldrsh x15, [x5, #:lo12:sym]
        ldrsw x15, [x5, #:lo12:sym]
        ldr x15, [x5, #:lo12:sym]
        ldr q3, [x2, #:lo12:sym]

// CHECK: str    x15, [x5, :lo12:sym]    // encoding: [0xaf,0bAAAAAA00,0b00AAAAAA,0xf9]
// CHECK:                                 //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale8
// CHECK: ldrb    w15, [x5, :lo12:sym]    // encoding: [0xaf,0bAAAAAA00,0b01AAAAAA,0x39]
// CHECK:                                 //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale1
// CHECK: ldrsh    x15, [x5, :lo12:sym]    // encoding: [0xaf,0bAAAAAA00,0b10AAAAAA,0x79]
// CHECK:                                 //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale2
// CHECK: ldrsw    x15, [x5, :lo12:sym]    // encoding: [0xaf,0bAAAAAA00,0b10AAAAAA,0xb9]
// CHECK:                                 //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale4
// CHECK: ldr    x15, [x5, :lo12:sym]    // encoding: [0xaf,0bAAAAAA00,0b01AAAAAA,0xf9]
// CHECK:                                 //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale8
// CHECK: ldr    q3, [x2, :lo12:sym]     // encoding: [0x43,0bAAAAAA00,0b11AAAAAA,0x3d]
// CHECK:                                 //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_aarch64_ldst_imm12_scale16

        prfm pldl1keep, [sp, #8]
        prfm pldl1strm, [x3]
        prfm pldl2keep, [x5,#16]
        prfm pldl2strm, [x2]
        prfm pldl3keep, [x5]
        prfm pldl3strm, [x6]
        prfm plil1keep, [sp, #8]
        prfm plil1strm, [x3]
        prfm plil2keep, [x5,#16]
        prfm plil2strm, [x2]
        prfm plil3keep, [x5]
        prfm plil3strm, [x6]
        prfm pstl1keep, [sp, #8]
        prfm pstl1strm, [x3]
        prfm pstl2keep, [x5,#16]
        prfm pstl2strm, [x2]
        prfm pstl3keep, [x5]
        prfm pstl3strm, [x6]
        prfm #15, [sp]
// CHECK: prfm    pldl1keep, [sp, #8]     // encoding: [0xe0,0x07,0x80,0xf9]
// CHECK: prfm    pldl1strm, [x3{{(, #0)?}}]     // encoding: [0x61,0x00,0x80,0xf9]
// CHECK: prfm    pldl2keep, [x5, #16]    // encoding: [0xa2,0x08,0x80,0xf9]
// CHECK: prfm    pldl2strm, [x2{{(, #0)?}}]     // encoding: [0x43,0x00,0x80,0xf9]
// CHECK: prfm    pldl3keep, [x5{{(, #0)?}}]     // encoding: [0xa4,0x00,0x80,0xf9]
// CHECK: prfm    pldl3strm, [x6{{(, #0)?}}]     // encoding: [0xc5,0x00,0x80,0xf9]
// CHECK: prfm    plil1keep, [sp, #8]     // encoding: [0xe8,0x07,0x80,0xf9]
// CHECK: prfm    plil1strm, [x3{{(, #0)?}}]     // encoding: [0x69,0x00,0x80,0xf9]
// CHECK: prfm    plil2keep, [x5, #16]    // encoding: [0xaa,0x08,0x80,0xf9]
// CHECK: prfm    plil2strm, [x2{{(, #0)?}}]     // encoding: [0x4b,0x00,0x80,0xf9]
// CHECK: prfm    plil3keep, [x5{{(, #0)?}}]     // encoding: [0xac,0x00,0x80,0xf9]
// CHECK: prfm    plil3strm, [x6{{(, #0)?}}]     // encoding: [0xcd,0x00,0x80,0xf9]
// CHECK: prfm    pstl1keep, [sp, #8]     // encoding: [0xf0,0x07,0x80,0xf9]
// CHECK: prfm    pstl1strm, [x3{{(, #0)?}}]     // encoding: [0x71,0x00,0x80,0xf9]
// CHECK: prfm    pstl2keep, [x5, #16]    // encoding: [0xb2,0x08,0x80,0xf9]
// CHECK: prfm    pstl2strm, [x2{{(, #0)?}}]     // encoding: [0x53,0x00,0x80,0xf9]
// CHECK: prfm    pstl3keep, [x5{{(, #0)?}}]     // encoding: [0xb4,0x00,0x80,0xf9]
// CHECK: prfm    pstl3strm, [x6{{(, #0)?}}]     // encoding: [0xd5,0x00,0x80,0xf9]
// CHECK: prfm    #15, [sp{{(, #0)?}}]           // encoding: [0xef,0x03,0x80,0xf9]

//// Floating-point versions

        ldr b31, [sp, #4095]
        ldr h20, [x2, #8190]
        ldr s10, [x19, #16380]
        ldr d3, [x10, #32760]
        str q12, [sp, #65520]
// CHECK: ldr      b31, [sp, #4095]           // encoding: [0xff,0xff,0x7f,0x3d]
// CHECK: ldr      h20, [x2, #8190]           // encoding: [0x54,0xfc,0x7f,0x7d]
// CHECK: ldr      s10, [x19, #16380]         // encoding: [0x6a,0xfe,0x7f,0xbd]
// CHECK: ldr      d3, [x10, #32760]          // encoding: [0x43,0xfd,0x7f,0xfd]
// CHECK: str      q12, [sp, #65520]          // encoding: [0xec,0xff,0xbf,0x3d]

//------------------------------------------------------------------------------
// Load/store register (register offset)
//------------------------------------------------------------------------------

        ldrb w3, [sp, x5]
        ldrb w9, [x27, x6, lsl #0]
        ldrsb w10, [x30, x7]
        ldrb w11, [x29, x3, sxtx]
        strb w12, [x28, xzr, sxtx #0]
        ldrb w14, [x26, w6, uxtw]
        ldrsb w15, [x25, w7, uxtw #0]
        ldrb w17, [x23, w9, sxtw]
        ldrsb x18, [x22, w10, sxtw #0]
// CHECK: ldrb     w3, [sp, x5]               // encoding: [0xe3,0x6b,0x65,0x38]
// CHECK: ldrb     w9, [x27, x6, lsl #0]      // encoding: [0x69,0x7b,0x66,0x38]
// CHECK: ldrsb    w10, [x30, x7]             // encoding: [0xca,0x6b,0xe7,0x38]
// CHECK: ldrb     w11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x63,0x38]
// CHECK: strb     w12, [x28, xzr, sxtx #0]   // encoding: [0x8c,0xfb,0x3f,0x38]
// CHECK: ldrb     w14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0x66,0x38]
// CHECK: ldrsb    w15, [x25, w7, uxtw #0]    // encoding: [0x2f,0x5b,0xe7,0x38]
// CHECK: ldrb     w17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0x69,0x38]
// CHECK: ldrsb    x18, [x22, w10, sxtw #0]   // encoding: [0xd2,0xda,0xaa,0x38]

        ldrsh w3, [sp, x5]
        ldrsh w9, [x27, x6, lsl #0]
        ldrh w10, [x30, x7, lsl #1]
        strh w11, [x29, x3, sxtx]
        ldrh w12, [x28, xzr, sxtx #0]
        ldrsh x13, [x27, x5, sxtx #1]
        ldrh w14, [x26, w6, uxtw]
        ldrh w15, [x25, w7, uxtw #0]
        ldrsh w16, [x24, w8, uxtw #1]
        ldrh w17, [x23, w9, sxtw]
        ldrh w18, [x22, w10, sxtw #0]
        strh w19, [x21, wzr, sxtw #1]
// CHECK: ldrsh    w3, [sp, x5]               // encoding: [0xe3,0x6b,0xe5,0x78]
// CHECK: ldrsh    w9, [x27, x6]              // encoding: [0x69,0x6b,0xe6,0x78]
// CHECK: ldrh     w10, [x30, x7, lsl #1]     // encoding: [0xca,0x7b,0x67,0x78]
// CHECK: strh     w11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x23,0x78]
// CHECK: ldrh     w12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0x7f,0x78]
// CHECK: ldrsh    x13, [x27, x5, sxtx #1]    // encoding: [0x6d,0xfb,0xa5,0x78]
// CHECK: ldrh     w14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0x66,0x78]
// CHECK: ldrh     w15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0x67,0x78]
// CHECK: ldrsh    w16, [x24, w8, uxtw #1]    // encoding: [0x10,0x5b,0xe8,0x78]
// CHECK: ldrh     w17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0x69,0x78]
// CHECK: ldrh     w18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0x6a,0x78]
// CHECK: strh     w19, [x21, wzr, sxtw #1]   // encoding: [0xb3,0xda,0x3f,0x78]

        ldr w3, [sp, x5]
        ldr s9, [x27, x6, lsl #0]
        ldr w10, [x30, x7, lsl #2]
        ldr w11, [x29, x3, sxtx]
        str s12, [x28, xzr, sxtx #0]
        str w13, [x27, x5, sxtx #2]
        str w14, [x26, w6, uxtw]
        ldr w15, [x25, w7, uxtw #0]
        ldr w16, [x24, w8, uxtw #2]
        ldrsw x17, [x23, w9, sxtw]
        ldr w18, [x22, w10, sxtw #0]
        ldrsw x19, [x21, wzr, sxtw #2]
// CHECK: ldr      w3, [sp, x5]               // encoding: [0xe3,0x6b,0x65,0xb8]
// CHECK: ldr      s9, [x27, x6]              // encoding: [0x69,0x6b,0x66,0xbc]
// CHECK: ldr      w10, [x30, x7, lsl #2]     // encoding: [0xca,0x7b,0x67,0xb8]
// CHECK: ldr      w11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x63,0xb8]
// CHECK: str      s12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0x3f,0xbc]
// CHECK: str      w13, [x27, x5, sxtx #2]    // encoding: [0x6d,0xfb,0x25,0xb8]
// CHECK: str      w14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0x26,0xb8]
// CHECK: ldr      w15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0x67,0xb8]
// CHECK: ldr      w16, [x24, w8, uxtw #2]    // encoding: [0x10,0x5b,0x68,0xb8]
// CHECK: ldrsw    x17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0xa9,0xb8]
// CHECK: ldr      w18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0x6a,0xb8]
// CHECK: ldrsw    x19, [x21, wzr, sxtw #2]   // encoding: [0xb3,0xda,0xbf,0xb8]

        ldr x3, [sp, x5]
        str x9, [x27, x6, lsl #0]
        ldr d10, [x30, x7, lsl #3]
        str x11, [x29, x3, sxtx]
        ldr x12, [x28, xzr, sxtx #0]
        ldr x13, [x27, x5, sxtx #3]
        prfm pldl1keep, [x26, w6, uxtw]
        ldr x15, [x25, w7, uxtw #0]
        ldr x16, [x24, w8, uxtw #3]
        ldr x17, [x23, w9, sxtw]
        ldr x18, [x22, w10, sxtw #0]
        str d19, [x21, wzr, sxtw #3]
        prfm #6, [x0, x5]
// CHECK: ldr      x3, [sp, x5]               // encoding: [0xe3,0x6b,0x65,0xf8]
// CHECK: str      x9, [x27, x6]              // encoding: [0x69,0x6b,0x26,0xf8]
// CHECK: ldr      d10, [x30, x7, lsl #3]     // encoding: [0xca,0x7b,0x67,0xfc]
// CHECK: str      x11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x23,0xf8]
// CHECK: ldr      x12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0x7f,0xf8]
// CHECK: ldr      x13, [x27, x5, sxtx #3]    // encoding: [0x6d,0xfb,0x65,0xf8]
// CHECK: prfm     pldl1keep, [x26, w6, uxtw] // encoding: [0x40,0x4b,0xa6,0xf8]
// CHECK: ldr      x15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0x67,0xf8]
// CHECK: ldr      x16, [x24, w8, uxtw #3]    // encoding: [0x10,0x5b,0x68,0xf8]
// CHECK: ldr      x17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0x69,0xf8]
// CHECK: ldr      x18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0x6a,0xf8]
// CHECK: str      d19, [x21, wzr, sxtw #3]   // encoding: [0xb3,0xda,0x3f,0xfc]
// CHECK: prfm     #6, [x0, x5{{(, lsl #0)?}}]       // encoding: [0x06,0x68,0xa5,0xf8]

        ldr q3, [sp, x5]
        ldr q9, [x27, x6, lsl #0]
        ldr q10, [x30, x7, lsl #4]
        str q11, [x29, x3, sxtx]
        str q12, [x28, xzr, sxtx #0]
        str q13, [x27, x5, sxtx #4]
        ldr q14, [x26, w6, uxtw]
        ldr q15, [x25, w7, uxtw #0]
        ldr q16, [x24, w8, uxtw #4]
        ldr q17, [x23, w9, sxtw]
        str q18, [x22, w10, sxtw #0]
        ldr q19, [x21, wzr, sxtw #4]
// CHECK: ldr      q3, [sp, x5]               // encoding: [0xe3,0x6b,0xe5,0x3c]
// CHECK: ldr      q9, [x27, x6]              // encoding: [0x69,0x6b,0xe6,0x3c]
// CHECK: ldr      q10, [x30, x7, lsl #4]     // encoding: [0xca,0x7b,0xe7,0x3c]
// CHECK: str      q11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0xa3,0x3c]
// CHECK: str      q12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0xbf,0x3c]
// CHECK: str      q13, [x27, x5, sxtx #4]    // encoding: [0x6d,0xfb,0xa5,0x3c]
// CHECK: ldr      q14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0xe6,0x3c]
// CHECK: ldr      q15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0xe7,0x3c]
// CHECK: ldr      q16, [x24, w8, uxtw #4]    // encoding: [0x10,0x5b,0xe8,0x3c]
// CHECK: ldr      q17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0xe9,0x3c]
// CHECK: str      q18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0xaa,0x3c]
// CHECK: ldr      q19, [x21, wzr, sxtw #4]   // encoding: [0xb3,0xda,0xff,0x3c]

//------------------------------------------------------------------------------
// Load/store register (immediate post-indexed)
//------------------------------------------------------------------------------

        strb w9, [x2], #255
        strb w10, [x3], #1
        strb w10, [x3], #-256
        strh w9, [x2], #255
        strh w9, [x2], #1
        strh w10, [x3], #-256
// CHECK: strb     w9, [x2], #255             // encoding: [0x49,0xf4,0x0f,0x38]
// CHECK: strb     w10, [x3], #1              // encoding: [0x6a,0x14,0x00,0x38]
// CHECK: strb     w10, [x3], #-256           // encoding: [0x6a,0x04,0x10,0x38]
// CHECK: strh     w9, [x2], #255             // encoding: [0x49,0xf4,0x0f,0x78]
// CHECK: strh     w9, [x2], #1               // encoding: [0x49,0x14,0x00,0x78]
// CHECK: strh     w10, [x3], #-256           // encoding: [0x6a,0x04,0x10,0x78]

        str w19, [sp], #255
        str w20, [x30], #1
        str w21, [x12], #-256
        str xzr, [x9], #255
        str x2, [x3], #1
        str x19, [x12], #-256
// CHECK: str      w19, [sp], #255            // encoding: [0xf3,0xf7,0x0f,0xb8]
// CHECK: str      w20, [x30], #1             // encoding: [0xd4,0x17,0x00,0xb8]
// CHECK: str      w21, [x12], #-256          // encoding: [0x95,0x05,0x10,0xb8]
// CHECK: str      xzr, [x9], #255            // encoding: [0x3f,0xf5,0x0f,0xf8]
// CHECK: str      x2, [x3], #1               // encoding: [0x62,0x14,0x00,0xf8]
// CHECK: str      x19, [x12], #-256          // encoding: [0x93,0x05,0x10,0xf8]

        ldrb w9, [x2], #255
        ldrb w10, [x3], #1
        ldrb w10, [x3], #-256
        ldrh w9, [x2], #255
        ldrh w9, [x2], #1
        ldrh w10, [x3], #-256
// CHECK: ldrb     w9, [x2], #255             // encoding: [0x49,0xf4,0x4f,0x38]
// CHECK: ldrb     w10, [x3], #1              // encoding: [0x6a,0x14,0x40,0x38]
// CHECK: ldrb     w10, [x3], #-256           // encoding: [0x6a,0x04,0x50,0x38]
// CHECK: ldrh     w9, [x2], #255             // encoding: [0x49,0xf4,0x4f,0x78]
// CHECK: ldrh     w9, [x2], #1               // encoding: [0x49,0x14,0x40,0x78]
// CHECK: ldrh     w10, [x3], #-256           // encoding: [0x6a,0x04,0x50,0x78]

        ldr w19, [sp], #255
        ldr w20, [x30], #1
        ldr w21, [x12], #-256
        ldr xzr, [x9], #255
        ldr x2, [x3], #1
        ldr x19, [x12], #-256
// CHECK: ldr      w19, [sp], #255            // encoding: [0xf3,0xf7,0x4f,0xb8]
// CHECK: ldr      w20, [x30], #1             // encoding: [0xd4,0x17,0x40,0xb8]
// CHECK: ldr      w21, [x12], #-256          // encoding: [0x95,0x05,0x50,0xb8]
// CHECK: ldr      xzr, [x9], #255            // encoding: [0x3f,0xf5,0x4f,0xf8]
// CHECK: ldr      x2, [x3], #1               // encoding: [0x62,0x14,0x40,0xf8]
// CHECK: ldr      x19, [x12], #-256          // encoding: [0x93,0x05,0x50,0xf8]

        ldrsb xzr, [x9], #255
        ldrsb x2, [x3], #1
        ldrsb x19, [x12], #-256
        ldrsh xzr, [x9], #255
        ldrsh x2, [x3], #1
        ldrsh x19, [x12], #-256
        ldrsw xzr, [x9], #255
        ldrsw x2, [x3], #1
        ldrsw x19, [x12], #-256
// CHECK: ldrsb    xzr, [x9], #255            // encoding: [0x3f,0xf5,0x8f,0x38]
// CHECK: ldrsb    x2, [x3], #1               // encoding: [0x62,0x14,0x80,0x38]
// CHECK: ldrsb    x19, [x12], #-256          // encoding: [0x93,0x05,0x90,0x38]
// CHECK: ldrsh    xzr, [x9], #255            // encoding: [0x3f,0xf5,0x8f,0x78]
// CHECK: ldrsh    x2, [x3], #1               // encoding: [0x62,0x14,0x80,0x78]
// CHECK: ldrsh    x19, [x12], #-256          // encoding: [0x93,0x05,0x90,0x78]
// CHECK: ldrsw    xzr, [x9], #255            // encoding: [0x3f,0xf5,0x8f,0xb8]
// CHECK: ldrsw    x2, [x3], #1               // encoding: [0x62,0x14,0x80,0xb8]
// CHECK: ldrsw    x19, [x12], #-256          // encoding: [0x93,0x05,0x90,0xb8]

        ldrsb wzr, [x9], #255
        ldrsb w2, [x3], #1
        ldrsb w19, [x12], #-256
        ldrsh wzr, [x9], #255
        ldrsh w2, [x3], #1
        ldrsh w19, [x12], #-256
// CHECK: ldrsb    wzr, [x9], #255            // encoding: [0x3f,0xf5,0xcf,0x38]
// CHECK: ldrsb    w2, [x3], #1               // encoding: [0x62,0x14,0xc0,0x38]
// CHECK: ldrsb    w19, [x12], #-256          // encoding: [0x93,0x05,0xd0,0x38]
// CHECK: ldrsh    wzr, [x9], #255            // encoding: [0x3f,0xf5,0xcf,0x78]
// CHECK: ldrsh    w2, [x3], #1               // encoding: [0x62,0x14,0xc0,0x78]
// CHECK: ldrsh    w19, [x12], #-256          // encoding: [0x93,0x05,0xd0,0x78]

        str b0, [x0], #255
        str b3, [x3], #1
        str b5, [sp], #-256
        str h10, [x10], #255
        str h13, [x23], #1
        str h15, [sp], #-256
        str s20, [x20], #255
        str s23, [x23], #1
        str s25, [x0], #-256
        str d20, [x20], #255
        str d23, [x23], #1
        str d25, [x0], #-256
// CHECK: str      b0, [x0], #255             // encoding: [0x00,0xf4,0x0f,0x3c]
// CHECK: str      b3, [x3], #1               // encoding: [0x63,0x14,0x00,0x3c]
// CHECK: str      b5, [sp], #-256            // encoding: [0xe5,0x07,0x10,0x3c]
// CHECK: str      h10, [x10], #255           // encoding: [0x4a,0xf5,0x0f,0x7c]
// CHECK: str      h13, [x23], #1             // encoding: [0xed,0x16,0x00,0x7c]
// CHECK: str      h15, [sp], #-256           // encoding: [0xef,0x07,0x10,0x7c]
// CHECK: str      s20, [x20], #255           // encoding: [0x94,0xf6,0x0f,0xbc]
// CHECK: str      s23, [x23], #1             // encoding: [0xf7,0x16,0x00,0xbc]
// CHECK: str      s25, [x0], #-256           // encoding: [0x19,0x04,0x10,0xbc]
// CHECK: str      d20, [x20], #255           // encoding: [0x94,0xf6,0x0f,0xfc]
// CHECK: str      d23, [x23], #1             // encoding: [0xf7,0x16,0x00,0xfc]
// CHECK: str      d25, [x0], #-256           // encoding: [0x19,0x04,0x10,0xfc]

        ldr b0, [x0], #255
        ldr b3, [x3], #1
        ldr b5, [sp], #-256
        ldr h10, [x10], #255
        ldr h13, [x23], #1
        ldr h15, [sp], #-256
        ldr s20, [x20], #255
        ldr s23, [x23], #1
        ldr s25, [x0], #-256
        ldr d20, [x20], #255
        ldr d23, [x23], #1
        ldr d25, [x0], #-256
// CHECK: ldr      b0, [x0], #255             // encoding: [0x00,0xf4,0x4f,0x3c]
// CHECK: ldr      b3, [x3], #1               // encoding: [0x63,0x14,0x40,0x3c]
// CHECK: ldr      b5, [sp], #-256            // encoding: [0xe5,0x07,0x50,0x3c]
// CHECK: ldr      h10, [x10], #255           // encoding: [0x4a,0xf5,0x4f,0x7c]
// CHECK: ldr      h13, [x23], #1             // encoding: [0xed,0x16,0x40,0x7c]
// CHECK: ldr      h15, [sp], #-256           // encoding: [0xef,0x07,0x50,0x7c]
// CHECK: ldr      s20, [x20], #255           // encoding: [0x94,0xf6,0x4f,0xbc]
// CHECK: ldr      s23, [x23], #1             // encoding: [0xf7,0x16,0x40,0xbc]
// CHECK: ldr      s25, [x0], #-256           // encoding: [0x19,0x04,0x50,0xbc]
// CHECK: ldr      d20, [x20], #255           // encoding: [0x94,0xf6,0x4f,0xfc]
// CHECK: ldr      d23, [x23], #1             // encoding: [0xf7,0x16,0x40,0xfc]
// CHECK: ldr      d25, [x0], #-256           // encoding: [0x19,0x04,0x50,0xfc]

        ldr q20, [x1], #255
        ldr q23, [x9], #1
        ldr q25, [x20], #-256
        str q10, [x1], #255
        str q22, [sp], #1
        str q21, [x20], #-256
// CHECK: ldr      q20, [x1], #255            // encoding: [0x34,0xf4,0xcf,0x3c]
// CHECK: ldr      q23, [x9], #1              // encoding: [0x37,0x15,0xc0,0x3c]
// CHECK: ldr      q25, [x20], #-256          // encoding: [0x99,0x06,0xd0,0x3c]
// CHECK: str      q10, [x1], #255            // encoding: [0x2a,0xf4,0x8f,0x3c]
// CHECK: str      q22, [sp], #1              // encoding: [0xf6,0x17,0x80,0x3c]
// CHECK: str      q21, [x20], #-256          // encoding: [0x95,0x06,0x90,0x3c]

//------------------------------------------------------------------------------
// Load/store register (immediate pre-indexed)
//------------------------------------------------------------------------------

        ldr x3, [x4, #0]!
        ldr xzr, [sp, #0]!
// CHECK: ldr      x3, [x4, #0]!              // encoding: [0x83,0x0c,0x40,0xf8]
// CHECK: ldr      xzr, [sp, #0]!              // encoding: [0xff,0x0f,0x40,0xf8]

        strb w9, [x2, #255]!
        strb w10, [x3, #1]!
        strb w10, [x3, #-256]!
        strh w9, [x2, #255]!
        strh w9, [x2, #1]!
        strh w10, [x3, #-256]!
// CHECK: strb     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x0f,0x38]
// CHECK: strb     w10, [x3, #1]!             // encoding: [0x6a,0x1c,0x00,0x38]
// CHECK: strb     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x10,0x38]
// CHECK: strh     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x0f,0x78]
// CHECK: strh     w9, [x2, #1]!              // encoding: [0x49,0x1c,0x00,0x78]
// CHECK: strh     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x10,0x78]

        str w19, [sp, #255]!
        str w20, [x30, #1]!
        str w21, [x12, #-256]!
        str xzr, [x9, #255]!
        str x2, [x3, #1]!
        str x19, [x12, #-256]!
// CHECK: str      w19, [sp, #255]!           // encoding: [0xf3,0xff,0x0f,0xb8]
// CHECK: str      w20, [x30, #1]!            // encoding: [0xd4,0x1f,0x00,0xb8]
// CHECK: str      w21, [x12, #-256]!         // encoding: [0x95,0x0d,0x10,0xb8]
// CHECK: str      xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x0f,0xf8]
// CHECK: str      x2, [x3, #1]!              // encoding: [0x62,0x1c,0x00,0xf8]
// CHECK: str      x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x10,0xf8]

        ldrb w9, [x2, #255]!
        ldrb w10, [x3, #1]!
        ldrb w10, [x3, #-256]!
        ldrh w9, [x2, #255]!
        ldrh w9, [x2, #1]!
        ldrh w10, [x3, #-256]!
// CHECK: ldrb     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x4f,0x38]
// CHECK: ldrb     w10, [x3, #1]!             // encoding: [0x6a,0x1c,0x40,0x38]
// CHECK: ldrb     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x50,0x38]
// CHECK: ldrh     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x4f,0x78]
// CHECK: ldrh     w9, [x2, #1]!              // encoding: [0x49,0x1c,0x40,0x78]
// CHECK: ldrh     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x50,0x78]

        ldr w19, [sp, #255]!
        ldr w20, [x30, #1]!
        ldr w21, [x12, #-256]!
        ldr xzr, [x9, #255]!
        ldr x2, [x3, #1]!
        ldr x19, [x12, #-256]!
// CHECK: ldr      w19, [sp, #255]!           // encoding: [0xf3,0xff,0x4f,0xb8]
// CHECK: ldr      w20, [x30, #1]!            // encoding: [0xd4,0x1f,0x40,0xb8]
// CHECK: ldr      w21, [x12, #-256]!         // encoding: [0x95,0x0d,0x50,0xb8]
// CHECK: ldr      xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x4f,0xf8]
// CHECK: ldr      x2, [x3, #1]!              // encoding: [0x62,0x1c,0x40,0xf8]
// CHECK: ldr      x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x50,0xf8]

        ldrsb xzr, [x9, #255]!
        ldrsb x2, [x3, #1]!
        ldrsb x19, [x12, #-256]!
        ldrsh xzr, [x9, #255]!
        ldrsh x2, [x3, #1]!
        ldrsh x19, [x12, #-256]!
        ldrsw xzr, [x9, #255]!
        ldrsw x2, [x3, #1]!
        ldrsw x19, [x12, #-256]!
// CHECK: ldrsb    xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x8f,0x38]
// CHECK: ldrsb    x2, [x3, #1]!              // encoding: [0x62,0x1c,0x80,0x38]
// CHECK: ldrsb    x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x90,0x38]
// CHECK: ldrsh    xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x8f,0x78]
// CHECK: ldrsh    x2, [x3, #1]!              // encoding: [0x62,0x1c,0x80,0x78]
// CHECK: ldrsh    x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x90,0x78]
// CHECK: ldrsw    xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x8f,0xb8]
// CHECK: ldrsw    x2, [x3, #1]!              // encoding: [0x62,0x1c,0x80,0xb8]
// CHECK: ldrsw    x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x90,0xb8]

        ldrsb wzr, [x9, #255]!
        ldrsb w2, [x3, #1]!
        ldrsb w19, [x12, #-256]!
        ldrsh wzr, [x9, #255]!
        ldrsh w2, [x3, #1]!
        ldrsh w19, [x12, #-256]!
// CHECK: ldrsb    wzr, [x9, #255]!           // encoding: [0x3f,0xfd,0xcf,0x38]
// CHECK: ldrsb    w2, [x3, #1]!              // encoding: [0x62,0x1c,0xc0,0x38]
// CHECK: ldrsb    w19, [x12, #-256]!         // encoding: [0x93,0x0d,0xd0,0x38]
// CHECK: ldrsh    wzr, [x9, #255]!           // encoding: [0x3f,0xfd,0xcf,0x78]
// CHECK: ldrsh    w2, [x3, #1]!              // encoding: [0x62,0x1c,0xc0,0x78]
// CHECK: ldrsh    w19, [x12, #-256]!         // encoding: [0x93,0x0d,0xd0,0x78]

        str b0, [x0, #255]!
        str b3, [x3, #1]!
        str b5, [sp, #-256]!
        str h10, [x10, #255]!
        str h13, [x23, #1]!
        str h15, [sp, #-256]!
        str s20, [x20, #255]!
        str s23, [x23, #1]!
        str s25, [x0, #-256]!
        str d20, [x20, #255]!
        str d23, [x23, #1]!
        str d25, [x0, #-256]!
// CHECK: str      b0, [x0, #255]!            // encoding: [0x00,0xfc,0x0f,0x3c]
// CHECK: str      b3, [x3, #1]!              // encoding: [0x63,0x1c,0x00,0x3c]
// CHECK: str      b5, [sp, #-256]!           // encoding: [0xe5,0x0f,0x10,0x3c]
// CHECK: str      h10, [x10, #255]!          // encoding: [0x4a,0xfd,0x0f,0x7c]
// CHECK: str      h13, [x23, #1]!            // encoding: [0xed,0x1e,0x00,0x7c]
// CHECK: str      h15, [sp, #-256]!          // encoding: [0xef,0x0f,0x10,0x7c]
// CHECK: str      s20, [x20, #255]!          // encoding: [0x94,0xfe,0x0f,0xbc]
// CHECK: str      s23, [x23, #1]!            // encoding: [0xf7,0x1e,0x00,0xbc]
// CHECK: str      s25, [x0, #-256]!          // encoding: [0x19,0x0c,0x10,0xbc]
// CHECK: str      d20, [x20, #255]!          // encoding: [0x94,0xfe,0x0f,0xfc]
// CHECK: str      d23, [x23, #1]!            // encoding: [0xf7,0x1e,0x00,0xfc]
// CHECK: str      d25, [x0, #-256]!          // encoding: [0x19,0x0c,0x10,0xfc]

        ldr b0, [x0, #255]!
        ldr b3, [x3, #1]!
        ldr b5, [sp, #-256]!
        ldr h10, [x10, #255]!
        ldr h13, [x23, #1]!
        ldr h15, [sp, #-256]!
        ldr s20, [x20, #255]!
        ldr s23, [x23, #1]!
        ldr s25, [x0, #-256]!
        ldr d20, [x20, #255]!
        ldr d23, [x23, #1]!
        ldr d25, [x0, #-256]!
// CHECK: ldr      b0, [x0, #255]!            // encoding: [0x00,0xfc,0x4f,0x3c]
// CHECK: ldr      b3, [x3, #1]!              // encoding: [0x63,0x1c,0x40,0x3c]
// CHECK: ldr      b5, [sp, #-256]!           // encoding: [0xe5,0x0f,0x50,0x3c]
// CHECK: ldr      h10, [x10, #255]!          // encoding: [0x4a,0xfd,0x4f,0x7c]
// CHECK: ldr      h13, [x23, #1]!            // encoding: [0xed,0x1e,0x40,0x7c]
// CHECK: ldr      h15, [sp, #-256]!          // encoding: [0xef,0x0f,0x50,0x7c]
// CHECK: ldr      s20, [x20, #255]!          // encoding: [0x94,0xfe,0x4f,0xbc]
// CHECK: ldr      s23, [x23, #1]!            // encoding: [0xf7,0x1e,0x40,0xbc]
// CHECK: ldr      s25, [x0, #-256]!          // encoding: [0x19,0x0c,0x50,0xbc]
// CHECK: ldr      d20, [x20, #255]!          // encoding: [0x94,0xfe,0x4f,0xfc]
// CHECK: ldr      d23, [x23, #1]!            // encoding: [0xf7,0x1e,0x40,0xfc]
// CHECK: ldr      d25, [x0, #-256]!          // encoding: [0x19,0x0c,0x50,0xfc]

        ldr q20, [x1, #255]!
        ldr q23, [x9, #1]!
        ldr q25, [x20, #-256]!
        str q10, [x1, #255]!
        str q22, [sp, #1]!
        str q21, [x20, #-256]!
// CHECK: ldr      q20, [x1, #255]!           // encoding: [0x34,0xfc,0xcf,0x3c]
// CHECK: ldr      q23, [x9, #1]!             // encoding: [0x37,0x1d,0xc0,0x3c]
// CHECK: ldr      q25, [x20, #-256]!         // encoding: [0x99,0x0e,0xd0,0x3c]
// CHECK: str      q10, [x1, #255]!           // encoding: [0x2a,0xfc,0x8f,0x3c]
// CHECK: str      q22, [sp, #1]!             // encoding: [0xf6,0x1f,0x80,0x3c]
// CHECK: str      q21, [x20, #-256]!         // encoding: [0x95,0x0e,0x90,0x3c]

//------------------------------------------------------------------------------
// Load/store (unprivileged)
//------------------------------------------------------------------------------

        sttrb w9, [sp, #0]
        sttrh wzr, [x12, #255]
        sttr w16, [x0, #-256]
        sttr x28, [x14, #1]
// CHECK: sttrb    w9, [sp]                   // encoding: [0xe9,0x0b,0x00,0x38]
// CHECK: sttrh    wzr, [x12, #255]           // encoding: [0x9f,0xf9,0x0f,0x78]
// CHECK: sttr     w16, [x0, #-256]           // encoding: [0x10,0x08,0x10,0xb8]
// CHECK: sttr     x28, [x14, #1]             // encoding: [0xdc,0x19,0x00,0xf8]

        ldtrb w1, [x20, #255]
        ldtrh w20, [x1, #255]
        ldtr w12, [sp, #255]
        ldtr xzr, [x12, #255]
// CHECK: ldtrb    w1, [x20, #255]            // encoding: [0x81,0xfa,0x4f,0x38]
// CHECK: ldtrh    w20, [x1, #255]            // encoding: [0x34,0xf8,0x4f,0x78]
// CHECK: ldtr     w12, [sp, #255]            // encoding: [0xec,0xfb,0x4f,0xb8]
// CHECK: ldtr     xzr, [x12, #255]           // encoding: [0x9f,0xf9,0x4f,0xf8]

        ldtrsb x9, [x7, #-256]
        ldtrsh x17, [x19, #-256]
        ldtrsw x20, [x15, #-256]
        ldtrsb w19, [x1, #-256]
        ldtrsh w15, [x21, #-256]
// CHECK: ldtrsb   x9, [x7, #-256]            // encoding: [0xe9,0x08,0x90,0x38]
// CHECK: ldtrsh   x17, [x19, #-256]          // encoding: [0x71,0x0a,0x90,0x78]
// CHECK: ldtrsw   x20, [x15, #-256]          // encoding: [0xf4,0x09,0x90,0xb8]
// CHECK: ldtrsb   w19, [x1, #-256]           // encoding: [0x33,0x08,0xd0,0x38]
// CHECK: ldtrsh   w15, [x21, #-256]          // encoding: [0xaf,0x0a,0xd0,0x78]

//------------------------------------------------------------------------------
// Load/store register pair (offset)
//------------------------------------------------------------------------------

        ldp w3, w5, [sp]
        stp wzr, w9, [sp, #252]
        ldp w2, wzr, [sp, #-256]
        ldp w9, w10, [sp, #4]
// CHECK: ldp      w3, w5, [sp]               // encoding: [0xe3,0x17,0x40,0x29]
// CHECK: stp      wzr, w9, [sp, #252]        // encoding: [0xff,0xa7,0x1f,0x29]
// CHECK: ldp      w2, wzr, [sp, #-256]       // encoding: [0xe2,0x7f,0x60,0x29]
// CHECK: ldp      w9, w10, [sp, #4]          // encoding: [0xe9,0xab,0x40,0x29]

        ldpsw x9, x10, [sp, #4]
        ldpsw x9, x10, [x2, #-256]
        ldpsw x20, x30, [sp, #252]
// CHECK: ldpsw    x9, x10, [sp, #4]          // encoding: [0xe9,0xab,0x40,0x69]
// CHECK: ldpsw    x9, x10, [x2, #-256]       // encoding: [0x49,0x28,0x60,0x69]
// CHECK: ldpsw    x20, x30, [sp, #252]       // encoding: [0xf4,0xfb,0x5f,0x69]

        ldp x21, x29, [x2, #504]
        ldp x22, x23, [x3, #-512]
        ldp x24, x25, [x4, #8]
// CHECK: ldp      x21, x29, [x2, #504]       // encoding: [0x55,0xf4,0x5f,0xa9]
// CHECK: ldp      x22, x23, [x3, #-512]      // encoding: [0x76,0x5c,0x60,0xa9]
// CHECK: ldp      x24, x25, [x4, #8]         // encoding: [0x98,0xe4,0x40,0xa9]

        ldp s29, s28, [sp, #252]
        stp s27, s26, [sp, #-256]
        ldp s1, s2, [x3, #44]
// CHECK: ldp      s29, s28, [sp, #252]       // encoding: [0xfd,0xf3,0x5f,0x2d]
// CHECK: stp      s27, s26, [sp, #-256]      // encoding: [0xfb,0x6b,0x20,0x2d]
// CHECK: ldp      s1, s2, [x3, #44]          // encoding: [0x61,0x88,0x45,0x2d]

        stp d3, d5, [x9, #504]
        stp d7, d11, [x10, #-512]
        ldp d2, d3, [x30, #-8]
// CHECK: stp      d3, d5, [x9, #504]         // encoding: [0x23,0x95,0x1f,0x6d]
// CHECK: stp      d7, d11, [x10, #-512]      // encoding: [0x47,0x2d,0x20,0x6d]
// CHECK: ldp      d2, d3, [x30, #-8]         // encoding: [0xc2,0x8f,0x7f,0x6d]

        stp q3, q5, [sp]
        stp q17, q19, [sp, #1008]
        ldp q23, q29, [x1, #-1024]
// CHECK: stp      q3, q5, [sp]               // encoding: [0xe3,0x17,0x00,0xad]
// CHECK: stp      q17, q19, [sp, #1008]      // encoding: [0xf1,0xcf,0x1f,0xad]
// CHECK: ldp      q23, q29, [x1, #-1024]     // encoding: [0x37,0x74,0x60,0xad]

//------------------------------------------------------------------------------
// Load/store register pair (post-indexed)
//------------------------------------------------------------------------------

        ldp w3, w5, [sp], #0
        stp wzr, w9, [sp], #252
        ldp w2, wzr, [sp], #-256
        ldp w9, w10, [sp], #4
// CHECK: ldp      w3, w5, [sp], #0           // encoding: [0xe3,0x17,0xc0,0x28]
// CHECK: stp      wzr, w9, [sp], #252        // encoding: [0xff,0xa7,0x9f,0x28]
// CHECK: ldp      w2, wzr, [sp], #-256       // encoding: [0xe2,0x7f,0xe0,0x28]
// CHECK: ldp      w9, w10, [sp], #4          // encoding: [0xe9,0xab,0xc0,0x28]

        ldpsw x9, x10, [sp], #4
        ldpsw x9, x10, [x2], #-256
        ldpsw x20, x30, [sp], #252
// CHECK: ldpsw    x9, x10, [sp], #4          // encoding: [0xe9,0xab,0xc0,0x68]
// CHECK: ldpsw    x9, x10, [x2], #-256       // encoding: [0x49,0x28,0xe0,0x68]
// CHECK: ldpsw    x20, x30, [sp], #252       // encoding: [0xf4,0xfb,0xdf,0x68]

        ldp x21, x29, [x2], #504
        ldp x22, x23, [x3], #-512
        ldp x24, x25, [x4], #8
// CHECK: ldp      x21, x29, [x2], #504       // encoding: [0x55,0xf4,0xdf,0xa8]
// CHECK: ldp      x22, x23, [x3], #-512      // encoding: [0x76,0x5c,0xe0,0xa8]
// CHECK: ldp      x24, x25, [x4], #8         // encoding: [0x98,0xe4,0xc0,0xa8]

        ldp s29, s28, [sp], #252
        stp s27, s26, [sp], #-256
        ldp s1, s2, [x3], #44
// CHECK: ldp      s29, s28, [sp], #252       // encoding: [0xfd,0xf3,0xdf,0x2c]
// CHECK: stp      s27, s26, [sp], #-256      // encoding: [0xfb,0x6b,0xa0,0x2c]
// CHECK: ldp      s1, s2, [x3], #44          // encoding: [0x61,0x88,0xc5,0x2c]

        stp d3, d5, [x9], #504
        stp d7, d11, [x10], #-512
        ldp d2, d3, [x30], #-8
// CHECK: stp      d3, d5, [x9], #504         // encoding: [0x23,0x95,0x9f,0x6c]
// CHECK: stp      d7, d11, [x10], #-512      // encoding: [0x47,0x2d,0xa0,0x6c]
// CHECK: ldp      d2, d3, [x30], #-8         // encoding: [0xc2,0x8f,0xff,0x6c]

        stp q3, q5, [sp], #0
        stp q17, q19, [sp], #1008
        ldp q23, q29, [x1], #-1024
// CHECK: stp      q3, q5, [sp], #0           // encoding: [0xe3,0x17,0x80,0xac]
// CHECK: stp      q17, q19, [sp], #1008      // encoding: [0xf1,0xcf,0x9f,0xac]
// CHECK: ldp      q23, q29, [x1], #-1024     // encoding: [0x37,0x74,0xe0,0xac]

//------------------------------------------------------------------------------
// Load/store register pair (pre-indexed)
//------------------------------------------------------------------------------
        ldp w3, w5, [sp, #0]!
        stp wzr, w9, [sp, #252]!
        ldp w2, wzr, [sp, #-256]!
        ldp w9, w10, [sp, #4]!
// CHECK: ldp      w3, w5, [sp, #0]!          // encoding: [0xe3,0x17,0xc0,0x29]
// CHECK: stp      wzr, w9, [sp, #252]!       // encoding: [0xff,0xa7,0x9f,0x29]
// CHECK: ldp      w2, wzr, [sp, #-256]!      // encoding: [0xe2,0x7f,0xe0,0x29]
// CHECK: ldp      w9, w10, [sp, #4]!         // encoding: [0xe9,0xab,0xc0,0x29]

        ldpsw x9, x10, [sp, #4]!
        ldpsw x9, x10, [x2, #-256]!
        ldpsw x20, x30, [sp, #252]!
// CHECK: ldpsw    x9, x10, [sp, #4]!         // encoding: [0xe9,0xab,0xc0,0x69]
// CHECK: ldpsw    x9, x10, [x2, #-256]!      // encoding: [0x49,0x28,0xe0,0x69]
// CHECK: ldpsw    x20, x30, [sp, #252]!      // encoding: [0xf4,0xfb,0xdf,0x69]

        ldp x21, x29, [x2, #504]!
        ldp x22, x23, [x3, #-512]!
        ldp x24, x25, [x4, #8]!
// CHECK: ldp      x21, x29, [x2, #504]!      // encoding: [0x55,0xf4,0xdf,0xa9]
// CHECK: ldp      x22, x23, [x3, #-512]!     // encoding: [0x76,0x5c,0xe0,0xa9]
// CHECK: ldp      x24, x25, [x4, #8]!        // encoding: [0x98,0xe4,0xc0,0xa9]

        ldp s29, s28, [sp, #252]!
        stp s27, s26, [sp, #-256]!
        ldp s1, s2, [x3, #44]!
// CHECK: ldp      s29, s28, [sp, #252]!      // encoding: [0xfd,0xf3,0xdf,0x2d]
// CHECK: stp      s27, s26, [sp, #-256]!     // encoding: [0xfb,0x6b,0xa0,0x2d]
// CHECK: ldp      s1, s2, [x3, #44]!         // encoding: [0x61,0x88,0xc5,0x2d]

        stp d3, d5, [x9, #504]!
        stp d7, d11, [x10, #-512]!
        ldp d2, d3, [x30, #-8]!
// CHECK: stp      d3, d5, [x9, #504]!        // encoding: [0x23,0x95,0x9f,0x6d]
// CHECK: stp      d7, d11, [x10, #-512]!     // encoding: [0x47,0x2d,0xa0,0x6d]
// CHECK: ldp      d2, d3, [x30, #-8]!        // encoding: [0xc2,0x8f,0xff,0x6d]

        stp q3, q5, [sp, #0]!
        stp q17, q19, [sp, #1008]!
        ldp q23, q29, [x1, #-1024]!
// CHECK: stp      q3, q5, [sp, #0]!          // encoding: [0xe3,0x17,0x80,0xad]
// CHECK: stp      q17, q19, [sp, #1008]!     // encoding: [0xf1,0xcf,0x9f,0xad]
// CHECK: ldp      q23, q29, [x1, #-1024]!    // encoding: [0x37,0x74,0xe0,0xad]

//------------------------------------------------------------------------------
// Load/store non-temporal register pair (offset)
//------------------------------------------------------------------------------

        ldnp w3, w5, [sp]
        stnp wzr, w9, [sp, #252]
        ldnp w2, wzr, [sp, #-256]
        ldnp w9, w10, [sp, #4]
// CHECK: ldnp      w3, w5, [sp]               // encoding: [0xe3,0x17,0x40,0x28]
// CHECK: stnp      wzr, w9, [sp, #252]        // encoding: [0xff,0xa7,0x1f,0x28]
// CHECK: ldnp      w2, wzr, [sp, #-256]       // encoding: [0xe2,0x7f,0x60,0x28]
// CHECK: ldnp      w9, w10, [sp, #4]          // encoding: [0xe9,0xab,0x40,0x28]

        ldnp x21, x29, [x2, #504]
        ldnp x22, x23, [x3, #-512]
        ldnp x24, x25, [x4, #8]
// CHECK: ldnp      x21, x29, [x2, #504]       // encoding: [0x55,0xf4,0x5f,0xa8]
// CHECK: ldnp      x22, x23, [x3, #-512]      // encoding: [0x76,0x5c,0x60,0xa8]
// CHECK: ldnp      x24, x25, [x4, #8]         // encoding: [0x98,0xe4,0x40,0xa8]

        ldnp s29, s28, [sp, #252]
        stnp s27, s26, [sp, #-256]
        ldnp s1, s2, [x3, #44]
// CHECK: ldnp      s29, s28, [sp, #252]       // encoding: [0xfd,0xf3,0x5f,0x2c]
// CHECK: stnp      s27, s26, [sp, #-256]      // encoding: [0xfb,0x6b,0x20,0x2c]
// CHECK: ldnp      s1, s2, [x3, #44]          // encoding: [0x61,0x88,0x45,0x2c]

        stnp d3, d5, [x9, #504]
        stnp d7, d11, [x10, #-512]
        ldnp d2, d3, [x30, #-8]
// CHECK: stnp      d3, d5, [x9, #504]         // encoding: [0x23,0x95,0x1f,0x6c]
// CHECK: stnp      d7, d11, [x10, #-512]      // encoding: [0x47,0x2d,0x20,0x6c]
// CHECK: ldnp      d2, d3, [x30, #-8]         // encoding: [0xc2,0x8f,0x7f,0x6c]

        stnp q3, q5, [sp]
        stnp q17, q19, [sp, #1008]
        ldnp q23, q29, [x1, #-1024]
// CHECK: stnp      q3, q5, [sp]               // encoding: [0xe3,0x17,0x00,0xac]
// CHECK: stnp      q17, q19, [sp, #1008]      // encoding: [0xf1,0xcf,0x1f,0xac]
// CHECK: ldnp      q23, q29, [x1, #-1024]     // encoding: [0x37,0x74,0x60,0xac]

//------------------------------------------------------------------------------
// Logical (immediate)
//------------------------------------------------------------------------------
        // 32 bit replication-width
        orr w3, w9, #0xffff0000
        orr wsp, w10, #0xe00000ff
        orr w9, w10, #0x000003ff
// CHECK: orr      w3, w9, #0xffff0000        // encoding: [0x23,0x3d,0x10,0x32]
// CHECK: orr      wsp, w10, #0xe00000ff      // encoding: [0x5f,0x29,0x03,0x32]
// CHECK: orr      w9, w10, #0x3ff            // encoding: [0x49,0x25,0x00,0x32]

        // 16 bit replication width
        and w14, w15, #0x80008000
        and w12, w13, #0xffc3ffc3
        and w11, wzr, #0x00030003
// CHECK: and      w14, w15, #0x80008000      // encoding: [0xee,0x81,0x01,0x12]
// CHECK: and      w12, w13, #0xffc3ffc3      // encoding: [0xac,0xad,0x0a,0x12]
// CHECK: and      w11, wzr, #0x30003         // encoding: [0xeb,0x87,0x00,0x12]

        // 8 bit replication width
        eor w3, w6, #0xe0e0e0e0
        eor wsp, wzr, #0x03030303
        eor w16, w17, #0x81818181
// CHECK: eor      w3, w6, #0xe0e0e0e0        // encoding: [0xc3,0xc8,0x03,0x52]
// CHECK: eor      wsp, wzr, #0x3030303       // encoding: [0xff,0xc7,0x00,0x52]
// CHECK: eor      w16, w17, #0x81818181      // encoding: [0x30,0xc6,0x01,0x52]

        // 4 bit replication width
        ands wzr, w18, #0xcccccccc
        ands w19, w20, #0x33333333
        ands w21, w22, #0x99999999
// CHECK: {{ands wzr,|tst}} w18, #0xcccccccc      // encoding: [0x5f,0xe6,0x02,0x72]
// CHECK: ands     w19, w20, #0x33333333      // encoding: [0x93,0xe6,0x00,0x72]
// CHECK: ands     w21, w22, #0x99999999      // encoding: [0xd5,0xe6,0x01,0x72]

        // 2 bit replication width
        tst w3, #0xaaaaaaaa
        tst wzr, #0x55555555
// CHECK: {{ands wzr,|tst}} w3, #0xaaaaaaaa       // encoding: [0x7f,0xf0,0x01,0x72]
// CHECK: {{ands wzr,|tst}} wzr, #0x55555555      // encoding: [0xff,0xf3,0x00,0x72]

        // 64 bit replication-width
        eor x3, x5, #0xffffffffc000000
        and x9, x10, #0x00007fffffffffff
        orr x11, x12, #0x8000000000000fff
// CHECK: eor      x3, x5, #0xffffffffc000000 // encoding: [0xa3,0x84,0x66,0xd2]
// CHECK: and      x9, x10, #0x7fffffffffff   // encoding: [0x49,0xb9,0x40,0x92]
// CHECK: orr      x11, x12, #0x8000000000000fff // encoding: [0x8b,0x31,0x41,0xb2]

        // 32 bit replication-width
        orr x3, x9, #0xffff0000ffff0000
        orr sp, x10, #0xe00000ffe00000ff
        orr x9, x10, #0x000003ff000003ff
// CHECK: orr      x3, x9, #0xffff0000ffff0000 // encoding: [0x23,0x3d,0x10,0xb2]
// CHECK: orr      sp, x10, #0xe00000ffe00000ff // encoding: [0x5f,0x29,0x03,0xb2]
// CHECK: orr      x9, x10, #0x3ff000003ff    // encoding: [0x49,0x25,0x00,0xb2]

        // 16 bit replication-width
        and x14, x15, #0x8000800080008000
        and x12, x13, #0xffc3ffc3ffc3ffc3
        and x11, xzr, #0x0003000300030003
// CHECK: and      x14, x15, #0x8000800080008000 // encoding: [0xee,0x81,0x01,0x92]
// CHECK: and      x12, x13, #0xffc3ffc3ffc3ffc3 // encoding: [0xac,0xad,0x0a,0x92]
// CHECK: and      x11, xzr, #0x3000300030003 // encoding: [0xeb,0x87,0x00,0x92]

        // 8 bit replication-width
        eor x3, x6, #0xe0e0e0e0e0e0e0e0
        eor sp, xzr, #0x0303030303030303
        eor x16, x17, #0x8181818181818181
// CHECK: eor      x3, x6, #0xe0e0e0e0e0e0e0e0 // encoding: [0xc3,0xc8,0x03,0xd2]
// CHECK: eor      sp, xzr, #0x303030303030303 // encoding: [0xff,0xc7,0x00,0xd2]
// CHECK: eor      x16, x17, #0x8181818181818181 // encoding: [0x30,0xc6,0x01,0xd2]

        // 4 bit replication-width
        ands xzr, x18, #0xcccccccccccccccc
        ands x19, x20, #0x3333333333333333
        ands x21, x22, #0x9999999999999999
// CHECK: {{ands xzr,|tst}} x18, #0xcccccccccccccccc // encoding: [0x5f,0xe6,0x02,0xf2]
// CHECK: ands     x19, x20, #0x3333333333333333 // encoding: [0x93,0xe6,0x00,0xf2]
// CHECK: ands     x21, x22, #0x9999999999999999 // encoding: [0xd5,0xe6,0x01,0xf2]

        // 2 bit replication-width
        tst x3, #0xaaaaaaaaaaaaaaaa
        tst xzr, #0x5555555555555555
// CHECK: {{ands xzr,|tst}} x3, #0xaaaaaaaaaaaaaaaa    // encoding: [0x7f,0xf0,0x01,0xf2]
// CHECK: {{ands xzr,|tst}} xzr, #0x5555555555555555   // encoding: [0xff,0xf3,0x00,0xf2]

        mov w3, #0xf000f
        mov x10, #0xaaaaaaaaaaaaaaaa
// CHECK: mov w3, #983055                // encoding: [0xe3,0x8f,0x00,0x32]
// CHECK: mov x10, #-6148914691236517206 // encoding: [0xea,0xf3,0x01,0xb2]

        // The Imm field of logicalImm operations has to be truncated to the
        // register width, i.e. 32 bits
        and w2, w3, #-3
        orr w0, w1, #~2
        eor w16, w17, #-7
        ands w19, w20, #~15
// CHECK: and	w2, w3, #0xfffffffd     // encoding: [0x62,0x78,0x1e,0x12]
// CHECK: orr	w0, w1, #0xfffffffd     // encoding: [0x20,0x78,0x1e,0x32]
// CHECK: eor	w16, w17, #0xfffffff9   // encoding: [0x30,0x76,0x1d,0x52]
// CHECK: ands	w19, w20, #0xfffffff0   // encoding: [0x93,0x6e,0x1c,0x72]

//------------------------------------------------------------------------------
// Logical (shifted register)
//------------------------------------------------------------------------------

        and w12, w23, w21
        and w16, w15, w1, lsl #1
        and w9, w4, w10, lsl #31
        and w3, w30, w11, lsl #0
        and x3, x5, x7, lsl #63
// CHECK: and      w12, w23, w21              // encoding: [0xec,0x02,0x15,0x0a]
// CHECK: and      w16, w15, w1, lsl #1       // encoding: [0xf0,0x05,0x01,0x0a]
// CHECK: and      w9, w4, w10, lsl #31       // encoding: [0x89,0x7c,0x0a,0x0a]
// CHECK: and      w3, w30, w11               // encoding: [0xc3,0x03,0x0b,0x0a]
// CHECK: and      x3, x5, x7, lsl #63        // encoding: [0xa3,0xfc,0x07,0x8a]

        and x5, x14, x19, asr #4
        and w3, w17, w19, ror #31
        and w0, w2, wzr, lsr #17
        and w3, w30, w11, asr #0
// CHECK: and      x5, x14, x19, asr #4       // encoding: [0xc5,0x11,0x93,0x8a]
// CHECK: and      w3, w17, w19, ror #31      // encoding: [0x23,0x7e,0xd3,0x0a]
// CHECK: and      w0, w2, wzr, lsr #17       // encoding: [0x40,0x44,0x5f,0x0a]
// CHECK: and      w3, w30, w11, asr #0       // encoding: [0xc3,0x03,0x8b,0x0a]

        and xzr, x4, x26, lsl #0
        and w3, wzr, w20, ror #0
        and x7, x20, xzr, asr #63
// CHECK: and      xzr, x4, x26               // encoding: [0x9f,0x00,0x1a,0x8a]
// CHECK: and      w3, wzr, w20, ror #0       // encoding: [0xe3,0x03,0xd4,0x0a]
// CHECK: and      x7, x20, xzr, asr #63      // encoding: [0x87,0xfe,0x9f,0x8a]

        bic x13, x20, x14, lsl #47
        bic w2, w7, w9
        orr w2, w7, w0, asr #31
        orr x8, x9, x10, lsl #12
        orn x3, x5, x7, asr #0
        orn w2, w5, w29
// CHECK: bic      x13, x20, x14, lsl #47     // encoding: [0x8d,0xbe,0x2e,0x8a]
// CHECK: bic      w2, w7, w9                 // encoding: [0xe2,0x00,0x29,0x0a]
// CHECK: orr      w2, w7, w0, asr #31        // encoding: [0xe2,0x7c,0x80,0x2a]
// CHECK: orr      x8, x9, x10, lsl #12       // encoding: [0x28,0x31,0x0a,0xaa]
// CHECK: orn      x3, x5, x7, asr #0         // encoding: [0xa3,0x00,0xa7,0xaa]
// CHECK: orn      w2, w5, w29                // encoding: [0xa2,0x00,0x3d,0x2a]

        ands w7, wzr, w9, lsl #1
        ands x3, x5, x20, ror #63
        bics w3, w5, w7, lsl #0
        bics x3, xzr, x3, lsl #1
// CHECK: ands     w7, wzr, w9, lsl #1        // encoding: [0xe7,0x07,0x09,0x6a]
// CHECK: ands     x3, x5, x20, ror #63       // encoding: [0xa3,0xfc,0xd4,0xea]
// CHECK: bics     w3, w5, w7                 // encoding: [0xa3,0x00,0x27,0x6a]
// CHECK: bics     x3, xzr, x3, lsl #1        // encoding: [0xe3,0x07,0x23,0xea]

        tst w3, w7, lsl #31
        tst x2, x20, asr #0
// CHECK: tst      w3, w7, lsl #31            // encoding: [0x7f,0x7c,0x07,0x6a]
// CHECK: tst      x2, x20, asr #0            // encoding: [0x5f,0x00,0x94,0xea]

        mov x3, x6
        mov x3, xzr
        mov wzr, w2
        mov w3, w5
// CHECK: mov      x3, x6                     // encoding: [0xe3,0x03,0x06,0xaa]
// CHECK: mov      x3, xzr                    // encoding: [0xe3,0x03,0x1f,0xaa]
// CHECK: mov      wzr, w2                    // encoding: [0xff,0x03,0x02,0x2a]
// CHECK: mov      w3, w5                     // encoding: [0xe3,0x03,0x05,0x2a]

//------------------------------------------------------------------------------
// Move wide (immediate)
//------------------------------------------------------------------------------

        movz w1, #65535, lsl #0
        movz w2, #0, lsl #16
        movn w2, #1234, lsl #0
// CHECK: mov     w1, #65535                  // encoding: [0xe1,0xff,0x9f,0x52]
// CHECK: movz     w2, #0, lsl #16            // encoding: [0x02,0x00,0xa0,0x52]
// CHECK: mov     w2, #-1235                  // encoding: [0x42,0x9a,0x80,0x12]

        movz x2, #1234, lsl #32
        movk xzr, #4321, lsl #48
// CHECK: mov      x2, #5299989643264             // encoding: [0x42,0x9a,0xc0,0xd2]
// CHECK: movk     xzr, #{{4321|0x10e1}}, lsl #48 // encoding: [0x3f,0x1c,0xe2,0xf2]

        movz x2, #:abs_g0:sym
        movk w3, #:abs_g0_nc:sym

// CHECK: movz    x2, #:abs_g0:sym        // encoding: [0bAAA00010,A,0b100AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g0:sym, kind: fixup_aarch64_movw
// CHECK: movk    w3, #:abs_g0_nc:sym     // encoding: [0bAAA00011,A,0b100AAAAA,0x72]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g0_nc:sym, kind: fixup_aarch64_movw

        movz x4, #:abs_g1:sym
        movk w5, #:abs_g1_nc:sym

// CHECK: movz    x4, #:abs_g1:sym        // encoding: [0bAAA00100,A,0b101AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g1:sym, kind: fixup_aarch64_movw
// CHECK: movk    w5, #:abs_g1_nc:sym     // encoding: [0bAAA00101,A,0b101AAAAA,0x72]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g1_nc:sym, kind: fixup_aarch64_movw

        movz x6, #:abs_g2:sym
        movk x7, #:abs_g2_nc:sym

// CHECK: movz    x6, #:abs_g2:sym        // encoding: [0bAAA00110,A,0b110AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g2:sym, kind: fixup_aarch64_movw
// CHECK: movk    x7, #:abs_g2_nc:sym     // encoding: [0bAAA00111,A,0b110AAAAA,0xf2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g2_nc:sym, kind: fixup_aarch64_movw

        movz x8, #:abs_g3:sym
        movk x9, #:abs_g3:sym

// CHECK: movz    x8, #:abs_g3:sym        // encoding: [0bAAA01000,A,0b111AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g3:sym, kind: fixup_aarch64_movw
// CHECK: movk    x9, #:abs_g3:sym        // encoding: [0bAAA01001,A,0b111AAAAA,0xf2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g3:sym, kind: fixup_aarch64_movw


        movn x30, #:abs_g0_s:sym
        movz x19, #:abs_g0_s:sym
        movn w10, #:abs_g0_s:sym
        movz w25, #:abs_g0_s:sym

// CHECK: movn    x30, #:abs_g0_s:sym     // encoding: [0bAAA11110,A,0b100AAAAA,0x92]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
// CHECK: movz    x19, #:abs_g0_s:sym     // encoding: [0bAAA10011,A,0b100AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
// CHECK: movn    w10, #:abs_g0_s:sym     // encoding: [0bAAA01010,A,0b100AAAAA,0x12]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw
// CHECK: movz    w25, #:abs_g0_s:sym     // encoding: [0bAAA11001,A,0b100AAAAA,0x52]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_aarch64_movw

        movn x30, #:abs_g1_s:sym
        movz x19, #:abs_g1_s:sym
        movn w10, #:abs_g1_s:sym
        movz w25, #:abs_g1_s:sym

// CHECK: movn    x30, #:abs_g1_s:sym     // encoding: [0bAAA11110,A,0b101AAAAA,0x92]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
// CHECK: movz    x19, #:abs_g1_s:sym     // encoding: [0bAAA10011,A,0b101AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
// CHECK: movn    w10, #:abs_g1_s:sym     // encoding: [0bAAA01010,A,0b101AAAAA,0x12]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw
// CHECK: movz    w25, #:abs_g1_s:sym     // encoding: [0bAAA11001,A,0b101AAAAA,0x52]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_aarch64_movw

        movn x30, #:abs_g2_s:sym
        movz x19, #:abs_g2_s:sym

// CHECK: movn    x30, #:abs_g2_s:sym     // encoding: [0bAAA11110,A,0b110AAAAA,0x92]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g2_s:sym, kind: fixup_aarch64_movw
// CHECK: movz    x19, #:abs_g2_s:sym     // encoding: [0bAAA10011,A,0b110AAAAA,0xd2]
// CHECK-NEXT:                                 //   fixup A - offset: 0, value: :abs_g2_s:sym, kind: fixup_aarch64_movw

//------------------------------------------------------------------------------
// PC-relative addressing
//------------------------------------------------------------------------------

        adr x2, loc
        adr xzr, loc

// CHECK: adr    x2, loc                 // encoding: [0x02'A',A,A,0x10'A']
// CHECK:                                 //   fixup A - offset: 0, value: loc, kind: fixup_aarch64_pcrel_adr_imm21
// CHECK: adr    xzr, loc                // encoding: [0x1f'A',A,A,0x10'A']
// CHECK:                                 //   fixup A - offset: 0, value: loc, kind: fixup_aarch64_pcrel_adr_imm21

        adrp x29, loc

// CHECK: adrp    x29, loc                // encoding: [0x1d'A',A,A,0x90'A']
// CHECK:                                 //   fixup A - offset: 0, value: loc, kind: fixup_aarch64_pcrel_adrp_imm21
        adrp x30, #4096
        adr x20, #0
        adr x9, #-1
        adr x5, #1048575
// CHECK: adrp    x30, #4096              // encoding: [0x1e,0x00,0x00,0xb0]
// CHECK: adr     x20, #0                 // encoding: [0x14,0x00,0x00,0x10]
// CHECK: adr     x9, #-1                 // encoding: [0xe9,0xff,0xff,0x70]
// CHECK: adr     x5, #1048575            // encoding: [0xe5,0xff,0x7f,0x70]

        adr x9, #1048575
        adr x2, #-1048576
        adrp x9, #4294963200
        adrp x20, #-4294967296
// CHECK: adr     x9, #1048575            // encoding: [0xe9,0xff,0x7f,0x70]
// CHECK: adr     x2, #-1048576           // encoding: [0x02,0x00,0x80,0x10]
// CHECK: adrp    x9, #4294963200         // encoding: [0xe9,0xff,0x7f,0xf0]
// CHECK: adrp    x20, #-4294967296       // encoding: [0x14,0x00,0x80,0x90]

//------------------------------------------------------------------------------
// System
//------------------------------------------------------------------------------

        hint #0
        hint #127
// CHECK: nop                             // encoding: [0x1f,0x20,0x03,0xd5]
// CHECK: hint    #{{127|0x7f}}           // encoding: [0xff,0x2f,0x03,0xd5]

        nop
        yield
        wfe
        wfi
        sev
        sevl
// CHECK: nop                             // encoding: [0x1f,0x20,0x03,0xd5]
// CHECK: yield                           // encoding: [0x3f,0x20,0x03,0xd5]
// CHECK: wfe                             // encoding: [0x5f,0x20,0x03,0xd5]
// CHECK: wfi                             // encoding: [0x7f,0x20,0x03,0xd5]
// CHECK: sev                             // encoding: [0x9f,0x20,0x03,0xd5]
// CHECK: sevl                            // encoding: [0xbf,0x20,0x03,0xd5]

        clrex
        clrex #0
        clrex #7
        clrex #15
// CHECK: clrex                           // encoding: [0x5f,0x3f,0x03,0xd5]
// CHECK: clrex   #0                      // encoding: [0x5f,0x30,0x03,0xd5]
// CHECK: clrex   #7                      // encoding: [0x5f,0x37,0x03,0xd5]
// CHECK: clrex                           // encoding: [0x5f,0x3f,0x03,0xd5]

        dsb #0
        dsb #4
        dsb #12
        dsb #15
        dsb oshld
        dsb oshst
        dsb osh
        dsb nshld
        dsb nshst
        dsb nsh
        dsb ishld
        dsb ishst
        dsb ish
        dsb ld
        dsb st
        dsb sy
// CHECK: ssbb                            // encoding: [0x9f,0x30,0x03,0xd5]
// CHECK: pssbb                           // encoding: [0x9f,0x34,0x03,0xd5]
// CHECK: dsb     #12                     // encoding: [0x9f,0x3c,0x03,0xd5]
// CHECK: dsb     sy                      // encoding: [0x9f,0x3f,0x03,0xd5]
// CHECK: dsb     oshld                   // encoding: [0x9f,0x31,0x03,0xd5]
// CHECK: dsb     oshst                   // encoding: [0x9f,0x32,0x03,0xd5]
// CHECK: dsb     osh                     // encoding: [0x9f,0x33,0x03,0xd5]
// CHECK: dsb     nshld                   // encoding: [0x9f,0x35,0x03,0xd5]
// CHECK: dsb     nshst                   // encoding: [0x9f,0x36,0x03,0xd5]
// CHECK: dsb     nsh                     // encoding: [0x9f,0x37,0x03,0xd5]
// CHECK: dsb     ishld                   // encoding: [0x9f,0x39,0x03,0xd5]
// CHECK: dsb     ishst                   // encoding: [0x9f,0x3a,0x03,0xd5]
// CHECK: dsb     ish                     // encoding: [0x9f,0x3b,0x03,0xd5]
// CHECK: dsb     ld                      // encoding: [0x9f,0x3d,0x03,0xd5]
// CHECK: dsb     st                      // encoding: [0x9f,0x3e,0x03,0xd5]
// CHECK: dsb     sy                      // encoding: [0x9f,0x3f,0x03,0xd5]

        dmb #0
        dmb #12
        dmb #15
        dmb oshld
        dmb oshst
        dmb osh
        dmb nshld
        dmb nshst
        dmb nsh
        dmb ishld
        dmb ishst
        dmb ish
        dmb ld
        dmb st
        dmb sy
// CHECK: dmb     #0                      // encoding: [0xbf,0x30,0x03,0xd5]
// CHECK: dmb     #12                     // encoding: [0xbf,0x3c,0x03,0xd5]
// CHECK: dmb     sy                      // encoding: [0xbf,0x3f,0x03,0xd5]
// CHECK: dmb     oshld                   // encoding: [0xbf,0x31,0x03,0xd5]
// CHECK: dmb     oshst                   // encoding: [0xbf,0x32,0x03,0xd5]
// CHECK: dmb     osh                     // encoding: [0xbf,0x33,0x03,0xd5]
// CHECK: dmb     nshld                   // encoding: [0xbf,0x35,0x03,0xd5]
// CHECK: dmb     nshst                   // encoding: [0xbf,0x36,0x03,0xd5]
// CHECK: dmb     nsh                     // encoding: [0xbf,0x37,0x03,0xd5]
// CHECK: dmb     ishld                   // encoding: [0xbf,0x39,0x03,0xd5]
// CHECK: dmb     ishst                   // encoding: [0xbf,0x3a,0x03,0xd5]
// CHECK: dmb     ish                     // encoding: [0xbf,0x3b,0x03,0xd5]
// CHECK: dmb     ld                      // encoding: [0xbf,0x3d,0x03,0xd5]
// CHECK: dmb     st                      // encoding: [0xbf,0x3e,0x03,0xd5]
// CHECK: dmb     sy                      // encoding: [0xbf,0x3f,0x03,0xd5]

        isb sy
        isb
        isb #12
// CHECK: isb                             // encoding: [0xdf,0x3f,0x03,0xd5]
// CHECK: isb                             // encoding: [0xdf,0x3f,0x03,0xd5]
// CHECK: isb     #12                     // encoding: [0xdf,0x3c,0x03,0xd5]


        msr spsel, #0
        msr daifset, #15
        msr daifclr, #12
// CHECK: msr     {{SPSel|SPSEL}}, #0               // encoding: [0xbf,0x40,0x00,0xd5]
// CHECK: msr     {{DAIFSet|DAIFSET}}, #15            // encoding: [0xdf,0x4f,0x03,0xd5]
// CHECK: msr     {{DAIFClr|DAIFCLR}}, #12            // encoding: [0xff,0x4c,0x03,0xd5]

        sys #7, c5, c9, #7, x5
        sys #0, c15, c15, #2
// CHECK: sys     #7, c5, c9, #7, x5      // encoding: [0xe5,0x59,0x0f,0xd5]
// CHECK: sys     #0, c15, c15, #2   // encoding: [0x5f,0xff,0x08,0xd5]

        sysl x9, #7, c5, c9, #7
        sysl x1, #0, c15, c15, #2
// CHECK: sysl    x9, #7, c5, c9, #7      // encoding: [0xe9,0x59,0x2f,0xd5]
// CHECK: sysl    x1, #0, c15, c15, #2    // encoding: [0x41,0xff,0x28,0xd5]

        ic ialluis
        ic iallu
        ic ivau, x9
// CHECK:         ic      ialluis                 // encoding: [0x1f,0x71,0x08,0xd5]
// CHECK:         ic      iallu                   // encoding: [0x1f,0x75,0x08,0xd5]
// CHECK:         ic      ivau, x9                // encoding: [0x29,0x75,0x0b,0xd5]

        dc zva, x12
        dc ivac, xzr
        dc isw, x2
        dc cvac, x9
        dc csw, x10
        dc cvau, x0
        dc civac, x3
        dc cisw, x30
// CHECK:         dc      zva, x12                // encoding: [0x2c,0x74,0x0b,0xd5]
// CHECK:         dc      ivac, xzr               // encoding: [0x3f,0x76,0x08,0xd5]
// CHECK:         dc      isw, x2                 // encoding: [0x42,0x76,0x08,0xd5]
// CHECK:         dc      cvac, x9                // encoding: [0x29,0x7a,0x0b,0xd5]
// CHECK:         dc      csw, x10                // encoding: [0x4a,0x7a,0x08,0xd5]
// CHECK:         dc      cvau, x0                // encoding: [0x20,0x7b,0x0b,0xd5]
// CHECK:         dc      civac, x3               // encoding: [0x23,0x7e,0x0b,0xd5]
// CHECK:         dc      cisw, x30               // encoding: [0x5e,0x7e,0x08,0xd5]

        at S1E1R, x19
        at S1E2R, x19
        at S1E3R, x19
        at S1E1W, x19
        at S1E2W, x19
        at S1E3W, x19
        at S1E0R, x19
        at S1E0W, x19
        at S12E1R, x20
        at S12E1W, x20
        at S12E0R, x20
        at S12E0W, x20
// CHECK: at      s1e1r, x19              // encoding: [0x13,0x78,0x08,0xd5]
// CHECK: at      s1e2r, x19              // encoding: [0x13,0x78,0x0c,0xd5]
// CHECK: at      s1e3r, x19              // encoding: [0x13,0x78,0x0e,0xd5]
// CHECK: at      s1e1w, x19              // encoding: [0x33,0x78,0x08,0xd5]
// CHECK: at      s1e2w, x19              // encoding: [0x33,0x78,0x0c,0xd5]
// CHECK: at      s1e3w, x19              // encoding: [0x33,0x78,0x0e,0xd5]
// CHECK: at      s1e0r, x19              // encoding: [0x53,0x78,0x08,0xd5]
// CHECK: at      s1e0w, x19              // encoding: [0x73,0x78,0x08,0xd5]
// CHECK: at      s12e1r, x20             // encoding: [0x94,0x78,0x0c,0xd5]
// CHECK: at      s12e1w, x20             // encoding: [0xb4,0x78,0x0c,0xd5]
// CHECK: at      s12e0r, x20             // encoding: [0xd4,0x78,0x0c,0xd5]
// CHECK: at      s12e0w, x20             // encoding: [0xf4,0x78,0x0c,0xd5]

        tlbi IPAS2E1IS, x4
        tlbi IPAS2LE1IS, x9
        tlbi VMALLE1IS
        tlbi ALLE2IS
        tlbi ALLE3IS
        tlbi VAE1IS, x1
        tlbi VAE2IS, x2
        tlbi VAE3IS, x3
        tlbi ASIDE1IS, x5
        tlbi VAAE1IS, x9
        tlbi ALLE1IS
        tlbi VALE1IS, x10
        tlbi VALE2IS, x11
        tlbi VALE3IS, x13
        tlbi VMALLS12E1IS
        tlbi VAALE1IS, x14
        tlbi IPAS2E1, x15
        tlbi IPAS2LE1, x16
        tlbi VMALLE1
        tlbi ALLE2
        tlbi ALLE3
        tlbi VAE1, x17
        tlbi VAE2, x18
        tlbi VAE3, x19
        tlbi ASIDE1, x20
        tlbi VAAE1, x21
        tlbi ALLE1
        tlbi VALE1, x22
        tlbi VALE2, x23
        tlbi VALE3, x24
        tlbi VMALLS12E1
        tlbi VAALE1, x25
// CHECK: tlbi    ipas2e1is, x4           // encoding: [0x24,0x80,0x0c,0xd5]
// CHECK: tlbi    ipas2le1is, x9          // encoding: [0xa9,0x80,0x0c,0xd5]
// CHECK: tlbi    vmalle1is               // encoding: [0x1f,0x83,0x08,0xd5]
// CHECK: tlbi    alle2is                 // encoding: [0x1f,0x83,0x0c,0xd5]
// CHECK: tlbi    alle3is                 // encoding: [0x1f,0x83,0x0e,0xd5]
// CHECK: tlbi    vae1is, x1              // encoding: [0x21,0x83,0x08,0xd5]
// CHECK: tlbi    vae2is, x2              // encoding: [0x22,0x83,0x0c,0xd5]
// CHECK: tlbi    vae3is, x3              // encoding: [0x23,0x83,0x0e,0xd5]
// CHECK: tlbi    aside1is, x5            // encoding: [0x45,0x83,0x08,0xd5]
// CHECK: tlbi    vaae1is, x9             // encoding: [0x69,0x83,0x08,0xd5]
// CHECK: tlbi    alle1is                 // encoding: [0x9f,0x83,0x0c,0xd5]
// CHECK: tlbi    vale1is, x10            // encoding: [0xaa,0x83,0x08,0xd5]
// CHECK: tlbi    vale2is, x11            // encoding: [0xab,0x83,0x0c,0xd5]
// CHECK: tlbi    vale3is, x13            // encoding: [0xad,0x83,0x0e,0xd5]
// CHECK: tlbi    vmalls12e1is            // encoding: [0xdf,0x83,0x0c,0xd5]
// CHECK: tlbi    vaale1is, x14           // encoding: [0xee,0x83,0x08,0xd5]
// CHECK: tlbi    ipas2e1, x15            // encoding: [0x2f,0x84,0x0c,0xd5]
// CHECK: tlbi    ipas2le1, x16           // encoding: [0xb0,0x84,0x0c,0xd5]
// CHECK: tlbi    vmalle1                 // encoding: [0x1f,0x87,0x08,0xd5]
// CHECK: tlbi    alle2                   // encoding: [0x1f,0x87,0x0c,0xd5]
// CHECK: tlbi    alle3                   // encoding: [0x1f,0x87,0x0e,0xd5]
// CHECK: tlbi    vae1, x17               // encoding: [0x31,0x87,0x08,0xd5]
// CHECK: tlbi    vae2, x18               // encoding: [0x32,0x87,0x0c,0xd5]
// CHECK: tlbi    vae3, x19               // encoding: [0x33,0x87,0x0e,0xd5]
// CHECK: tlbi    aside1, x20             // encoding: [0x54,0x87,0x08,0xd5]
// CHECK: tlbi    vaae1, x21              // encoding: [0x75,0x87,0x08,0xd5]
// CHECK: tlbi    alle1                   // encoding: [0x9f,0x87,0x0c,0xd5]
// CHECK: tlbi    vale1, x22              // encoding: [0xb6,0x87,0x08,0xd5]
// CHECK: tlbi    vale2, x23              // encoding: [0xb7,0x87,0x0c,0xd5]
// CHECK: tlbi    vale3, x24              // encoding: [0xb8,0x87,0x0e,0xd5]
// CHECK: tlbi    vmalls12e1              // encoding: [0xdf,0x87,0x0c,0xd5]
// CHECK: tlbi    vaale1, x25             // encoding: [0xf9,0x87,0x08,0xd5]

	msr TEECR32_EL1, x12
	msr OSDTRRX_EL1, x12
	msr MDCCINT_EL1, x12
	msr MDSCR_EL1, x12
	msr OSDTRTX_EL1, x12
	msr DBGDTR_EL0, x12
	msr DBGDTRTX_EL0, x12
	msr OSECCR_EL1, x12
	msr DBGVCR32_EL2, x12
	msr DBGBVR0_EL1, x12
	msr DBGBVR1_EL1, x12
	msr DBGBVR2_EL1, x12
	msr DBGBVR3_EL1, x12
	msr DBGBVR4_EL1, x12
	msr DBGBVR5_EL1, x12
	msr DBGBVR6_EL1, x12
	msr DBGBVR7_EL1, x12
	msr DBGBVR8_EL1, x12
	msr DBGBVR9_EL1, x12
	msr DBGBVR10_EL1, x12
	msr DBGBVR11_EL1, x12
	msr DBGBVR12_EL1, x12
	msr DBGBVR13_EL1, x12
	msr DBGBVR14_EL1, x12
	msr DBGBVR15_EL1, x12
	msr DBGBCR0_EL1, x12
	msr DBGBCR1_EL1, x12
	msr DBGBCR2_EL1, x12
	msr DBGBCR3_EL1, x12
	msr DBGBCR4_EL1, x12
	msr DBGBCR5_EL1, x12
	msr DBGBCR6_EL1, x12
	msr DBGBCR7_EL1, x12
	msr DBGBCR8_EL1, x12
	msr DBGBCR9_EL1, x12
	msr DBGBCR10_EL1, x12
	msr DBGBCR11_EL1, x12
	msr DBGBCR12_EL1, x12
	msr DBGBCR13_EL1, x12
	msr DBGBCR14_EL1, x12
	msr DBGBCR15_EL1, x12
	msr DBGWVR0_EL1, x12
	msr DBGWVR1_EL1, x12
	msr DBGWVR2_EL1, x12
	msr DBGWVR3_EL1, x12
	msr DBGWVR4_EL1, x12
	msr DBGWVR5_EL1, x12
	msr DBGWVR6_EL1, x12
	msr DBGWVR7_EL1, x12
	msr DBGWVR8_EL1, x12
	msr DBGWVR9_EL1, x12
	msr DBGWVR10_EL1, x12
	msr DBGWVR11_EL1, x12
	msr DBGWVR12_EL1, x12
	msr DBGWVR13_EL1, x12
	msr DBGWVR14_EL1, x12
	msr DBGWVR15_EL1, x12
	msr DBGWCR0_EL1, x12
	msr DBGWCR1_EL1, x12
	msr DBGWCR2_EL1, x12
	msr DBGWCR3_EL1, x12
	msr DBGWCR4_EL1, x12
	msr DBGWCR5_EL1, x12
	msr DBGWCR6_EL1, x12
	msr DBGWCR7_EL1, x12
	msr DBGWCR8_EL1, x12
	msr DBGWCR9_EL1, x12
	msr DBGWCR10_EL1, x12
	msr DBGWCR11_EL1, x12
	msr DBGWCR12_EL1, x12
	msr DBGWCR13_EL1, x12
	msr DBGWCR14_EL1, x12
	msr DBGWCR15_EL1, x12
	msr TEEHBR32_EL1, x12
	msr OSLAR_EL1, x12
	msr OSDLR_EL1, x12
	msr DBGPRCR_EL1, x12
	msr DBGCLAIMSET_EL1, x12
	msr DBGCLAIMCLR_EL1, x12
	msr CSSELR_EL1, x12
	msr VPIDR_EL2, x12
	msr VMPIDR_EL2, x12
	msr SCTLR_EL1, x12
	msr SCTLR_EL2, x12
	msr SCTLR_EL3, x12
	msr ACTLR_EL1, x12
	msr ACTLR_EL2, x12
	msr ACTLR_EL3, x12
	msr CPACR_EL1, x12
	msr HCR_EL2, x12
	msr SCR_EL3, x12
	msr MDCR_EL2, x12
	msr SDER32_EL3, x12
	msr CPTR_EL2, x12
	msr CPTR_EL3, x12
	msr HSTR_EL2, x12
	msr HACR_EL2, x12
	msr MDCR_EL3, x12
	msr TTBR0_EL1, x12
	msr TTBR0_EL2, x12
	msr TTBR0_EL3, x12
	msr TTBR1_EL1, x12
	msr TCR_EL1, x12
	msr TCR_EL2, x12
	msr TCR_EL3, x12
	msr VTTBR_EL2, x12
	msr VTCR_EL2, x12
	msr DACR32_EL2, x12
	msr SPSR_EL1, x12
	msr SPSR_EL2, x12
	msr SPSR_EL3, x12
	msr ELR_EL1, x12
	msr ELR_EL2, x12
	msr ELR_EL3, x12
	msr SP_EL0, x12
	msr SP_EL1, x12
	msr SP_EL2, x12
	msr SPSel, x12
	msr NZCV, x12
	msr DAIF, x12
	msr CurrentEL, x12
	msr SPSR_irq, x12
	msr SPSR_abt, x12
	msr SPSR_und, x12
	msr SPSR_fiq, x12
	msr FPCR, x12
	msr FPSR, x12
	msr DSPSR_EL0, x12
	msr DLR_EL0, x12
	msr IFSR32_EL2, x12
	msr AFSR0_EL1, x12
	msr AFSR0_EL2, x12
	msr AFSR0_EL3, x12
	msr AFSR1_EL1, x12
	msr AFSR1_EL2, x12
	msr AFSR1_EL3, x12
	msr ESR_EL1, x12
	msr ESR_EL2, x12
	msr ESR_EL3, x12
	msr FPEXC32_EL2, x12
	msr FAR_EL1, x12
	msr FAR_EL2, x12
	msr FAR_EL3, x12
	msr HPFAR_EL2, x12
	msr PAR_EL1, x12
	msr PMCR_EL0, x12
	msr PMCNTENSET_EL0, x12
	msr PMCNTENCLR_EL0, x12
	msr PMOVSCLR_EL0, x12
	msr PMSELR_EL0, x12
	msr PMCCNTR_EL0, x12
	msr PMXEVTYPER_EL0, x12
	msr PMXEVCNTR_EL0, x12
	msr PMUSERENR_EL0, x12
	msr PMINTENSET_EL1, x12
	msr PMINTENCLR_EL1, x12
	msr PMOVSSET_EL0, x12
	msr MAIR_EL1, x12
	msr MAIR_EL2, x12
	msr MAIR_EL3, x12
	msr AMAIR_EL1, x12
	msr AMAIR_EL2, x12
	msr AMAIR_EL3, x12
	msr VBAR_EL1, x12
	msr VBAR_EL2, x12
	msr VBAR_EL3, x12
	msr RMR_EL1, x12
	msr RMR_EL2, x12
	msr RMR_EL3, x12
	msr CONTEXTIDR_EL1, x12
	msr TPIDR_EL0, x12
	msr TPIDR_EL2, x12
	msr TPIDR_EL3, x12
	msr TPIDRRO_EL0, x12
	msr TPIDR_EL1, x12
	msr CNTFRQ_EL0, x12
	msr CNTVOFF_EL2, x12
	msr CNTKCTL_EL1, x12
	msr CNTHCTL_EL2, x12
	msr CNTP_TVAL_EL0, x12
	msr CNTHP_TVAL_EL2, x12
	msr CNTPS_TVAL_EL1, x12
	msr CNTP_CTL_EL0, x12
	msr CNTHP_CTL_EL2, x12
	msr CNTPS_CTL_EL1, x12
	msr CNTP_CVAL_EL0, x12
	msr CNTHP_CVAL_EL2, x12
	msr CNTPS_CVAL_EL1, x12
	msr CNTV_TVAL_EL0, x12
	msr CNTV_CTL_EL0, x12
	msr CNTV_CVAL_EL0, x12
	msr PMEVCNTR0_EL0, x12
	msr PMEVCNTR1_EL0, x12
	msr PMEVCNTR2_EL0, x12
	msr PMEVCNTR3_EL0, x12
	msr PMEVCNTR4_EL0, x12
	msr PMEVCNTR5_EL0, x12
	msr PMEVCNTR6_EL0, x12
	msr PMEVCNTR7_EL0, x12
	msr PMEVCNTR8_EL0, x12
	msr PMEVCNTR9_EL0, x12
	msr PMEVCNTR10_EL0, x12
	msr PMEVCNTR11_EL0, x12
	msr PMEVCNTR12_EL0, x12
	msr PMEVCNTR13_EL0, x12
	msr PMEVCNTR14_EL0, x12
	msr PMEVCNTR15_EL0, x12
	msr PMEVCNTR16_EL0, x12
	msr PMEVCNTR17_EL0, x12
	msr PMEVCNTR18_EL0, x12
	msr PMEVCNTR19_EL0, x12
	msr PMEVCNTR20_EL0, x12
	msr PMEVCNTR21_EL0, x12
	msr PMEVCNTR22_EL0, x12
	msr PMEVCNTR23_EL0, x12
	msr PMEVCNTR24_EL0, x12
	msr PMEVCNTR25_EL0, x12
	msr PMEVCNTR26_EL0, x12
	msr PMEVCNTR27_EL0, x12
	msr PMEVCNTR28_EL0, x12
	msr PMEVCNTR29_EL0, x12
	msr PMEVCNTR30_EL0, x12
	msr PMCCFILTR_EL0, x12
	msr PMEVTYPER0_EL0, x12
	msr PMEVTYPER1_EL0, x12
	msr PMEVTYPER2_EL0, x12
	msr PMEVTYPER3_EL0, x12
	msr PMEVTYPER4_EL0, x12
	msr PMEVTYPER5_EL0, x12
	msr PMEVTYPER6_EL0, x12
	msr PMEVTYPER7_EL0, x12
	msr PMEVTYPER8_EL0, x12
	msr PMEVTYPER9_EL0, x12
	msr PMEVTYPER10_EL0, x12
	msr PMEVTYPER11_EL0, x12
	msr PMEVTYPER12_EL0, x12
	msr PMEVTYPER13_EL0, x12
	msr PMEVTYPER14_EL0, x12
	msr PMEVTYPER15_EL0, x12
	msr PMEVTYPER16_EL0, x12
	msr PMEVTYPER17_EL0, x12
	msr PMEVTYPER18_EL0, x12
	msr PMEVTYPER19_EL0, x12
	msr PMEVTYPER20_EL0, x12
	msr PMEVTYPER21_EL0, x12
	msr PMEVTYPER22_EL0, x12
	msr PMEVTYPER23_EL0, x12
	msr PMEVTYPER24_EL0, x12
	msr PMEVTYPER25_EL0, x12
	msr PMEVTYPER26_EL0, x12
	msr PMEVTYPER27_EL0, x12
	msr PMEVTYPER28_EL0, x12
	msr PMEVTYPER29_EL0, x12
	msr PMEVTYPER30_EL0, x12
// CHECK: msr      {{teecr32_el1|TEECR32_EL1}}, x12           // encoding: [0x0c,0x00,0x12,0xd5]
// CHECK: msr      {{osdtrrx_el1|OSDTRRX_EL1}}, x12           // encoding: [0x4c,0x00,0x10,0xd5]
// CHECK: msr      {{mdccint_el1|MDCCINT_EL1}}, x12           // encoding: [0x0c,0x02,0x10,0xd5]
// CHECK: msr      {{mdscr_el1|MDSCR_EL1}}, x12             // encoding: [0x4c,0x02,0x10,0xd5]
// CHECK: msr      {{osdtrtx_el1|OSDTRTX_EL1}}, x12           // encoding: [0x4c,0x03,0x10,0xd5]
// CHECK: msr      {{dbgdtr_el0|DBGDTR_EL0}}, x12            // encoding: [0x0c,0x04,0x13,0xd5]
// CHECK: msr      {{dbgdtrtx_el0|DBGDTRTX_EL0}}, x12          // encoding: [0x0c,0x05,0x13,0xd5]
// CHECK: msr      {{oseccr_el1|OSECCR_EL1}}, x12            // encoding: [0x4c,0x06,0x10,0xd5]
// CHECK: msr      {{dbgvcr32_el2|DBGVCR32_EL2}}, x12          // encoding: [0x0c,0x07,0x14,0xd5]
// CHECK: msr      {{dbgbvr0_el1|DBGBVR0_EL1}}, x12           // encoding: [0x8c,0x00,0x10,0xd5]
// CHECK: msr      {{dbgbvr1_el1|DBGBVR1_EL1}}, x12           // encoding: [0x8c,0x01,0x10,0xd5]
// CHECK: msr      {{dbgbvr2_el1|DBGBVR2_EL1}}, x12           // encoding: [0x8c,0x02,0x10,0xd5]
// CHECK: msr      {{dbgbvr3_el1|DBGBVR3_EL1}}, x12           // encoding: [0x8c,0x03,0x10,0xd5]
// CHECK: msr      {{dbgbvr4_el1|DBGBVR4_EL1}}, x12           // encoding: [0x8c,0x04,0x10,0xd5]
// CHECK: msr      {{dbgbvr5_el1|DBGBVR5_EL1}}, x12           // encoding: [0x8c,0x05,0x10,0xd5]
// CHECK: msr      {{dbgbvr6_el1|DBGBVR6_EL1}}, x12           // encoding: [0x8c,0x06,0x10,0xd5]
// CHECK: msr      {{dbgbvr7_el1|DBGBVR7_EL1}}, x12           // encoding: [0x8c,0x07,0x10,0xd5]
// CHECK: msr      {{dbgbvr8_el1|DBGBVR8_EL1}}, x12           // encoding: [0x8c,0x08,0x10,0xd5]
// CHECK: msr      {{dbgbvr9_el1|DBGBVR9_EL1}}, x12           // encoding: [0x8c,0x09,0x10,0xd5]
// CHECK: msr      {{dbgbvr10_el1|DBGBVR10_EL1}}, x12          // encoding: [0x8c,0x0a,0x10,0xd5]
// CHECK: msr      {{dbgbvr11_el1|DBGBVR11_EL1}}, x12          // encoding: [0x8c,0x0b,0x10,0xd5]
// CHECK: msr      {{dbgbvr12_el1|DBGBVR12_EL1}}, x12          // encoding: [0x8c,0x0c,0x10,0xd5]
// CHECK: msr      {{dbgbvr13_el1|DBGBVR13_EL1}}, x12          // encoding: [0x8c,0x0d,0x10,0xd5]
// CHECK: msr      {{dbgbvr14_el1|DBGBVR14_EL1}}, x12          // encoding: [0x8c,0x0e,0x10,0xd5]
// CHECK: msr      {{dbgbvr15_el1|DBGBVR15_EL1}}, x12          // encoding: [0x8c,0x0f,0x10,0xd5]
// CHECK: msr      {{dbgbcr0_el1|DBGBCR0_EL1}}, x12           // encoding: [0xac,0x00,0x10,0xd5]
// CHECK: msr      {{dbgbcr1_el1|DBGBCR1_EL1}}, x12           // encoding: [0xac,0x01,0x10,0xd5]
// CHECK: msr      {{dbgbcr2_el1|DBGBCR2_EL1}}, x12           // encoding: [0xac,0x02,0x10,0xd5]
// CHECK: msr      {{dbgbcr3_el1|DBGBCR3_EL1}}, x12           // encoding: [0xac,0x03,0x10,0xd5]
// CHECK: msr      {{dbgbcr4_el1|DBGBCR4_EL1}}, x12           // encoding: [0xac,0x04,0x10,0xd5]
// CHECK: msr      {{dbgbcr5_el1|DBGBCR5_EL1}}, x12           // encoding: [0xac,0x05,0x10,0xd5]
// CHECK: msr      {{dbgbcr6_el1|DBGBCR6_EL1}}, x12           // encoding: [0xac,0x06,0x10,0xd5]
// CHECK: msr      {{dbgbcr7_el1|DBGBCR7_EL1}}, x12           // encoding: [0xac,0x07,0x10,0xd5]
// CHECK: msr      {{dbgbcr8_el1|DBGBCR8_EL1}}, x12           // encoding: [0xac,0x08,0x10,0xd5]
// CHECK: msr      {{dbgbcr9_el1|DBGBCR9_EL1}}, x12           // encoding: [0xac,0x09,0x10,0xd5]
// CHECK: msr      {{dbgbcr10_el1|DBGBCR10_EL1}}, x12          // encoding: [0xac,0x0a,0x10,0xd5]
// CHECK: msr      {{dbgbcr11_el1|DBGBCR11_EL1}}, x12          // encoding: [0xac,0x0b,0x10,0xd5]
// CHECK: msr      {{dbgbcr12_el1|DBGBCR12_EL1}}, x12          // encoding: [0xac,0x0c,0x10,0xd5]
// CHECK: msr      {{dbgbcr13_el1|DBGBCR13_EL1}}, x12          // encoding: [0xac,0x0d,0x10,0xd5]
// CHECK: msr      {{dbgbcr14_el1|DBGBCR14_EL1}}, x12          // encoding: [0xac,0x0e,0x10,0xd5]
// CHECK: msr      {{dbgbcr15_el1|DBGBCR15_EL1}}, x12          // encoding: [0xac,0x0f,0x10,0xd5]
// CHECK: msr      {{dbgwvr0_el1|DBGWVR0_EL1}}, x12           // encoding: [0xcc,0x00,0x10,0xd5]
// CHECK: msr      {{dbgwvr1_el1|DBGWVR1_EL1}}, x12           // encoding: [0xcc,0x01,0x10,0xd5]
// CHECK: msr      {{dbgwvr2_el1|DBGWVR2_EL1}}, x12           // encoding: [0xcc,0x02,0x10,0xd5]
// CHECK: msr      {{dbgwvr3_el1|DBGWVR3_EL1}}, x12           // encoding: [0xcc,0x03,0x10,0xd5]
// CHECK: msr      {{dbgwvr4_el1|DBGWVR4_EL1}}, x12           // encoding: [0xcc,0x04,0x10,0xd5]
// CHECK: msr      {{dbgwvr5_el1|DBGWVR5_EL1}}, x12           // encoding: [0xcc,0x05,0x10,0xd5]
// CHECK: msr      {{dbgwvr6_el1|DBGWVR6_EL1}}, x12           // encoding: [0xcc,0x06,0x10,0xd5]
// CHECK: msr      {{dbgwvr7_el1|DBGWVR7_EL1}}, x12           // encoding: [0xcc,0x07,0x10,0xd5]
// CHECK: msr      {{dbgwvr8_el1|DBGWVR8_EL1}}, x12           // encoding: [0xcc,0x08,0x10,0xd5]
// CHECK: msr      {{dbgwvr9_el1|DBGWVR9_EL1}}, x12           // encoding: [0xcc,0x09,0x10,0xd5]
// CHECK: msr      {{dbgwvr10_el1|DBGWVR10_EL1}}, x12          // encoding: [0xcc,0x0a,0x10,0xd5]
// CHECK: msr      {{dbgwvr11_el1|DBGWVR11_EL1}}, x12          // encoding: [0xcc,0x0b,0x10,0xd5]
// CHECK: msr      {{dbgwvr12_el1|DBGWVR12_EL1}}, x12          // encoding: [0xcc,0x0c,0x10,0xd5]
// CHECK: msr      {{dbgwvr13_el1|DBGWVR13_EL1}}, x12          // encoding: [0xcc,0x0d,0x10,0xd5]
// CHECK: msr      {{dbgwvr14_el1|DBGWVR14_EL1}}, x12          // encoding: [0xcc,0x0e,0x10,0xd5]
// CHECK: msr      {{dbgwvr15_el1|DBGWVR15_EL1}}, x12          // encoding: [0xcc,0x0f,0x10,0xd5]
// CHECK: msr      {{dbgwcr0_el1|DBGWCR0_EL1}}, x12           // encoding: [0xec,0x00,0x10,0xd5]
// CHECK: msr      {{dbgwcr1_el1|DBGWCR1_EL1}}, x12           // encoding: [0xec,0x01,0x10,0xd5]
// CHECK: msr      {{dbgwcr2_el1|DBGWCR2_EL1}}, x12           // encoding: [0xec,0x02,0x10,0xd5]
// CHECK: msr      {{dbgwcr3_el1|DBGWCR3_EL1}}, x12           // encoding: [0xec,0x03,0x10,0xd5]
// CHECK: msr      {{dbgwcr4_el1|DBGWCR4_EL1}}, x12           // encoding: [0xec,0x04,0x10,0xd5]
// CHECK: msr      {{dbgwcr5_el1|DBGWCR5_EL1}}, x12           // encoding: [0xec,0x05,0x10,0xd5]
// CHECK: msr      {{dbgwcr6_el1|DBGWCR6_EL1}}, x12           // encoding: [0xec,0x06,0x10,0xd5]
// CHECK: msr      {{dbgwcr7_el1|DBGWCR7_EL1}}, x12           // encoding: [0xec,0x07,0x10,0xd5]
// CHECK: msr      {{dbgwcr8_el1|DBGWCR8_EL1}}, x12           // encoding: [0xec,0x08,0x10,0xd5]
// CHECK: msr      {{dbgwcr9_el1|DBGWCR9_EL1}}, x12           // encoding: [0xec,0x09,0x10,0xd5]
// CHECK: msr      {{dbgwcr10_el1|DBGWCR10_EL1}}, x12          // encoding: [0xec,0x0a,0x10,0xd5]
// CHECK: msr      {{dbgwcr11_el1|DBGWCR11_EL1}}, x12          // encoding: [0xec,0x0b,0x10,0xd5]
// CHECK: msr      {{dbgwcr12_el1|DBGWCR12_EL1}}, x12          // encoding: [0xec,0x0c,0x10,0xd5]
// CHECK: msr      {{dbgwcr13_el1|DBGWCR13_EL1}}, x12          // encoding: [0xec,0x0d,0x10,0xd5]
// CHECK: msr      {{dbgwcr14_el1|DBGWCR14_EL1}}, x12          // encoding: [0xec,0x0e,0x10,0xd5]
// CHECK: msr      {{dbgwcr15_el1|DBGWCR15_EL1}}, x12          // encoding: [0xec,0x0f,0x10,0xd5]
// CHECK: msr      {{teehbr32_el1|TEEHBR32_EL1}}, x12          // encoding: [0x0c,0x10,0x12,0xd5]
// CHECK: msr      {{oslar_el1|OSLAR_EL1}}, x12             // encoding: [0x8c,0x10,0x10,0xd5]
// CHECK: msr      {{osdlr_el1|OSDLR_EL1}}, x12             // encoding: [0x8c,0x13,0x10,0xd5]
// CHECK: msr      {{dbgprcr_el1|DBGPRCR_EL1}}, x12           // encoding: [0x8c,0x14,0x10,0xd5]
// CHECK: msr      {{dbgclaimset_el1|DBGCLAIMSET_EL1}}, x12       // encoding: [0xcc,0x78,0x10,0xd5]
// CHECK: msr      {{dbgclaimclr_el1|DBGCLAIMCLR_EL1}}, x12       // encoding: [0xcc,0x79,0x10,0xd5]
// CHECK: msr      {{csselr_el1|CSSELR_EL1}}, x12            // encoding: [0x0c,0x00,0x1a,0xd5]
// CHECK: msr      {{vpidr_el2|VPIDR_EL2}}, x12             // encoding: [0x0c,0x00,0x1c,0xd5]
// CHECK: msr      {{vmpidr_el2|VMPIDR_EL2}}, x12            // encoding: [0xac,0x00,0x1c,0xd5]
// CHECK: msr      {{sctlr_el1|SCTLR_EL1}}, x12             // encoding: [0x0c,0x10,0x18,0xd5]
// CHECK: msr      {{sctlr_el2|SCTLR_EL2}}, x12             // encoding: [0x0c,0x10,0x1c,0xd5]
// CHECK: msr      {{sctlr_el3|SCTLR_EL3}}, x12             // encoding: [0x0c,0x10,0x1e,0xd5]
// CHECK: msr      {{actlr_el1|ACTLR_EL1}}, x12             // encoding: [0x2c,0x10,0x18,0xd5]
// CHECK: msr      {{actlr_el2|ACTLR_EL2}}, x12             // encoding: [0x2c,0x10,0x1c,0xd5]
// CHECK: msr      {{actlr_el3|ACTLR_EL3}}, x12             // encoding: [0x2c,0x10,0x1e,0xd5]
// CHECK: msr      {{cpacr_el1|CPACR_EL1}}, x12             // encoding: [0x4c,0x10,0x18,0xd5]
// CHECK: msr      {{hcr_el2|HCR_EL2}}, x12               // encoding: [0x0c,0x11,0x1c,0xd5]
// CHECK: msr      {{scr_el3|SCR_EL3}}, x12               // encoding: [0x0c,0x11,0x1e,0xd5]
// CHECK: msr      {{mdcr_el2|MDCR_EL2}}, x12              // encoding: [0x2c,0x11,0x1c,0xd5]
// CHECK: msr      {{sder32_el3|SDER32_EL3}}, x12            // encoding: [0x2c,0x11,0x1e,0xd5]
// CHECK: msr      {{cptr_el2|CPTR_EL2}}, x12              // encoding: [0x4c,0x11,0x1c,0xd5]
// CHECK: msr      {{cptr_el3|CPTR_EL3}}, x12              // encoding: [0x4c,0x11,0x1e,0xd5]
// CHECK: msr      {{hstr_el2|HSTR_EL2}}, x12              // encoding: [0x6c,0x11,0x1c,0xd5]
// CHECK: msr      {{hacr_el2|HACR_EL2}}, x12              // encoding: [0xec,0x11,0x1c,0xd5]
// CHECK: msr      {{mdcr_el3|MDCR_EL3}}, x12              // encoding: [0x2c,0x13,0x1e,0xd5]
// CHECK: msr      {{ttbr0_el1|TTBR0_EL1}}, x12             // encoding: [0x0c,0x20,0x18,0xd5]
// CHECK: msr      {{ttbr0_el2|TTBR0_EL2}}, x12             // encoding: [0x0c,0x20,0x1c,0xd5]
// CHECK: msr      {{ttbr0_el3|TTBR0_EL3}}, x12             // encoding: [0x0c,0x20,0x1e,0xd5]
// CHECK: msr      {{ttbr1_el1|TTBR1_EL1}}, x12             // encoding: [0x2c,0x20,0x18,0xd5]
// CHECK: msr      {{tcr_el1|TCR_EL1}}, x12               // encoding: [0x4c,0x20,0x18,0xd5]
// CHECK: msr      {{tcr_el2|TCR_EL2}}, x12               // encoding: [0x4c,0x20,0x1c,0xd5]
// CHECK: msr      {{tcr_el3|TCR_EL3}}, x12               // encoding: [0x4c,0x20,0x1e,0xd5]
// CHECK: msr      {{vttbr_el2|VTTBR_EL2}}, x12             // encoding: [0x0c,0x21,0x1c,0xd5]
// CHECK: msr      {{vtcr_el2|VTCR_EL2}}, x12              // encoding: [0x4c,0x21,0x1c,0xd5]
// CHECK: msr      {{dacr32_el2|DACR32_EL2}}, x12            // encoding: [0x0c,0x30,0x1c,0xd5]
// CHECK: msr      {{spsr_el1|SPSR_EL1}}, x12              // encoding: [0x0c,0x40,0x18,0xd5]
// CHECK: msr      {{spsr_el2|SPSR_EL2}}, x12              // encoding: [0x0c,0x40,0x1c,0xd5]
// CHECK: msr      {{spsr_el3|SPSR_EL3}}, x12              // encoding: [0x0c,0x40,0x1e,0xd5]
// CHECK: msr      {{elr_el1|ELR_EL1}}, x12               // encoding: [0x2c,0x40,0x18,0xd5]
// CHECK: msr      {{elr_el2|ELR_EL2}}, x12               // encoding: [0x2c,0x40,0x1c,0xd5]
// CHECK: msr      {{elr_el3|ELR_EL3}}, x12               // encoding: [0x2c,0x40,0x1e,0xd5]
// CHECK: msr      {{sp_el0|SP_EL0}}, x12                // encoding: [0x0c,0x41,0x18,0xd5]
// CHECK: msr      {{sp_el1|SP_EL1}}, x12                // encoding: [0x0c,0x41,0x1c,0xd5]
// CHECK: msr      {{sp_el2|SP_EL2}}, x12                // encoding: [0x0c,0x41,0x1e,0xd5]
// CHECK: msr      {{SPSel|SPSEL}}, x12                 // encoding: [0x0c,0x42,0x18,0xd5]
// CHECK: msr      {{nzcv|NZCV}}, x12                  // encoding: [0x0c,0x42,0x1b,0xd5]
// CHECK: msr      {{daif|DAIF}}, x12                  // encoding: [0x2c,0x42,0x1b,0xd5]
// CHECK: msr      {{CurrentEL|CURRENTEL}}, x12             // encoding: [0x4c,0x42,0x18,0xd5]
// CHECK: msr      {{SPSR_irq|SPSR_IRQ}}, x12              // encoding: [0x0c,0x43,0x1c,0xd5]
// CHECK: msr      {{SPSR_abt|SPSR_ABT}}, x12              // encoding: [0x2c,0x43,0x1c,0xd5]
// CHECK: msr      {{SPSR_und|SPSR_UND}}, x12              // encoding: [0x4c,0x43,0x1c,0xd5]
// CHECK: msr      {{SPSR_fiq|SPSR_FIQ}}, x12              // encoding: [0x6c,0x43,0x1c,0xd5]
// CHECK: msr      {{fpcr|FPCR}}, x12                  // encoding: [0x0c,0x44,0x1b,0xd5]
// CHECK: msr      {{fpsr|FPSR}}, x12                  // encoding: [0x2c,0x44,0x1b,0xd5]
// CHECK: msr      {{dspsr_el0|DSPSR_EL0}}, x12             // encoding: [0x0c,0x45,0x1b,0xd5]
// CHECK: msr      {{dlr_el0|DLR_EL0}}, x12               // encoding: [0x2c,0x45,0x1b,0xd5]
// CHECK: msr      {{ifsr32_el2|IFSR32_EL2}}, x12            // encoding: [0x2c,0x50,0x1c,0xd5]
// CHECK: msr      {{afsr0_el1|AFSR0_EL1}}, x12             // encoding: [0x0c,0x51,0x18,0xd5]
// CHECK: msr      {{afsr0_el2|AFSR0_EL2}}, x12             // encoding: [0x0c,0x51,0x1c,0xd5]
// CHECK: msr      {{afsr0_el3|AFSR0_EL3}}, x12             // encoding: [0x0c,0x51,0x1e,0xd5]
// CHECK: msr      {{afsr1_el1|AFSR1_EL1}}, x12             // encoding: [0x2c,0x51,0x18,0xd5]
// CHECK: msr      {{afsr1_el2|AFSR1_EL2}}, x12             // encoding: [0x2c,0x51,0x1c,0xd5]
// CHECK: msr      {{afsr1_el3|AFSR1_EL3}}, x12             // encoding: [0x2c,0x51,0x1e,0xd5]
// CHECK: msr      {{esr_el1|ESR_EL1}}, x12               // encoding: [0x0c,0x52,0x18,0xd5]
// CHECK: msr      {{esr_el2|ESR_EL2}}, x12               // encoding: [0x0c,0x52,0x1c,0xd5]
// CHECK: msr      {{esr_el3|ESR_EL3}}, x12               // encoding: [0x0c,0x52,0x1e,0xd5]
// CHECK: msr      {{fpexc32_el2|FPEXC32_EL2}}, x12           // encoding: [0x0c,0x53,0x1c,0xd5]
// CHECK: msr      {{far_el1|FAR_EL1}}, x12               // encoding: [0x0c,0x60,0x18,0xd5]
// CHECK: msr      {{far_el2|FAR_EL2}}, x12               // encoding: [0x0c,0x60,0x1c,0xd5]
// CHECK: msr      {{far_el3|FAR_EL3}}, x12               // encoding: [0x0c,0x60,0x1e,0xd5]
// CHECK: msr      {{hpfar_el2|HPFAR_EL2}}, x12             // encoding: [0x8c,0x60,0x1c,0xd5]
// CHECK: msr      {{par_el1|PAR_EL1}}, x12               // encoding: [0x0c,0x74,0x18,0xd5]
// CHECK: msr      {{pmcr_el0|PMCR_EL0}}, x12              // encoding: [0x0c,0x9c,0x1b,0xd5]
// CHECK: msr      {{pmcntenset_el0|PMCNTENSET_EL0}}, x12        // encoding: [0x2c,0x9c,0x1b,0xd5]
// CHECK: msr      {{pmcntenclr_el0|PMCNTENCLR_EL0}}, x12        // encoding: [0x4c,0x9c,0x1b,0xd5]
// CHECK: msr      {{pmovsclr_el0|PMOVSCLR_EL0}}, x12          // encoding: [0x6c,0x9c,0x1b,0xd5]
// CHECK: msr      {{pmselr_el0|PMSELR_EL0}}, x12            // encoding: [0xac,0x9c,0x1b,0xd5]
// CHECK: msr      {{pmccntr_el0|PMCCNTR_EL0}}, x12           // encoding: [0x0c,0x9d,0x1b,0xd5]
// CHECK: msr      {{pmxevtyper_el0|PMXEVTYPER_EL0}}, x12        // encoding: [0x2c,0x9d,0x1b,0xd5]
// CHECK: msr      {{pmxevcntr_el0|PMXEVCNTR_EL0}}, x12         // encoding: [0x4c,0x9d,0x1b,0xd5]
// CHECK: msr      {{pmuserenr_el0|PMUSERENR_EL0}}, x12         // encoding: [0x0c,0x9e,0x1b,0xd5]
// CHECK: msr      {{pmintenset_el1|PMINTENSET_EL1}}, x12        // encoding: [0x2c,0x9e,0x18,0xd5]
// CHECK: msr      {{pmintenclr_el1|PMINTENCLR_EL1}}, x12        // encoding: [0x4c,0x9e,0x18,0xd5]
// CHECK: msr      {{pmovsset_el0|PMOVSSET_EL0}}, x12          // encoding: [0x6c,0x9e,0x1b,0xd5]
// CHECK: msr      {{mair_el1|MAIR_EL1}}, x12              // encoding: [0x0c,0xa2,0x18,0xd5]
// CHECK: msr      {{mair_el2|MAIR_EL2}}, x12              // encoding: [0x0c,0xa2,0x1c,0xd5]
// CHECK: msr      {{mair_el3|MAIR_EL3}}, x12              // encoding: [0x0c,0xa2,0x1e,0xd5]
// CHECK: msr      {{amair_el1|AMAIR_EL1}}, x12             // encoding: [0x0c,0xa3,0x18,0xd5]
// CHECK: msr      {{amair_el2|AMAIR_EL2}}, x12             // encoding: [0x0c,0xa3,0x1c,0xd5]
// CHECK: msr      {{amair_el3|AMAIR_EL3}}, x12             // encoding: [0x0c,0xa3,0x1e,0xd5]
// CHECK: msr      {{vbar_el1|VBAR_EL1}}, x12              // encoding: [0x0c,0xc0,0x18,0xd5]
// CHECK: msr      {{vbar_el2|VBAR_EL2}}, x12              // encoding: [0x0c,0xc0,0x1c,0xd5]
// CHECK: msr      {{vbar_el3|VBAR_EL3}}, x12              // encoding: [0x0c,0xc0,0x1e,0xd5]
// CHECK: msr      {{rmr_el1|RMR_EL1}}, x12               // encoding: [0x4c,0xc0,0x18,0xd5]
// CHECK: msr      {{rmr_el2|RMR_EL2}}, x12               // encoding: [0x4c,0xc0,0x1c,0xd5]
// CHECK: msr      {{rmr_el3|RMR_EL3}}, x12               // encoding: [0x4c,0xc0,0x1e,0xd5]
// CHECK: msr      {{contextidr_el1|CONTEXTIDR_EL1}}, x12        // encoding: [0x2c,0xd0,0x18,0xd5]
// CHECK: msr      {{tpidr_el0|TPIDR_EL0}}, x12             // encoding: [0x4c,0xd0,0x1b,0xd5]
// CHECK: msr      {{tpidr_el2|TPIDR_EL2}}, x12             // encoding: [0x4c,0xd0,0x1c,0xd5]
// CHECK: msr      {{tpidr_el3|TPIDR_EL3}}, x12             // encoding: [0x4c,0xd0,0x1e,0xd5]
// CHECK: msr      {{tpidrro_el0|TPIDRRO_EL0}}, x12           // encoding: [0x6c,0xd0,0x1b,0xd5]
// CHECK: msr      {{tpidr_el1|TPIDR_EL1}}, x12             // encoding: [0x8c,0xd0,0x18,0xd5]
// CHECK: msr      {{cntfrq_el0|CNTFRQ_EL0}}, x12            // encoding: [0x0c,0xe0,0x1b,0xd5]
// CHECK: msr      {{cntvoff_el2|CNTVOFF_EL2}}, x12           // encoding: [0x6c,0xe0,0x1c,0xd5]
// CHECK: msr      {{cntkctl_el1|CNTKCTL_EL1}}, x12           // encoding: [0x0c,0xe1,0x18,0xd5]
// CHECK: msr      {{cnthctl_el2|CNTHCTL_EL2}}, x12           // encoding: [0x0c,0xe1,0x1c,0xd5]
// CHECK: msr      {{cntp_tval_el0|CNTP_TVAL_EL0}}, x12         // encoding: [0x0c,0xe2,0x1b,0xd5]
// CHECK: msr      {{cnthp_tval_el2|CNTHP_TVAL_EL2}}, x12        // encoding: [0x0c,0xe2,0x1c,0xd5]
// CHECK: msr      {{cntps_tval_el1|CNTPS_TVAL_EL1}}, x12        // encoding: [0x0c,0xe2,0x1f,0xd5]
// CHECK: msr      {{cntp_ctl_el0|CNTP_CTL_EL0}}, x12          // encoding: [0x2c,0xe2,0x1b,0xd5]
// CHECK: msr      {{cnthp_ctl_el2|CNTHP_CTL_EL2}}, x12         // encoding: [0x2c,0xe2,0x1c,0xd5]
// CHECK: msr      {{cntps_ctl_el1|CNTPS_CTL_EL1}}, x12         // encoding: [0x2c,0xe2,0x1f,0xd5]
// CHECK: msr      {{cntp_cval_el0|CNTP_CVAL_EL0}}, x12         // encoding: [0x4c,0xe2,0x1b,0xd5]
// CHECK: msr      {{cnthp_cval_el2|CNTHP_CVAL_EL2}}, x12        // encoding: [0x4c,0xe2,0x1c,0xd5]
// CHECK: msr      {{cntps_cval_el1|CNTPS_CVAL_EL1}}, x12        // encoding: [0x4c,0xe2,0x1f,0xd5]
// CHECK: msr      {{cntv_tval_el0|CNTV_TVAL_EL0}}, x12         // encoding: [0x0c,0xe3,0x1b,0xd5]
// CHECK: msr      {{cntv_ctl_el0|CNTV_CTL_EL0}}, x12          // encoding: [0x2c,0xe3,0x1b,0xd5]
// CHECK: msr      {{cntv_cval_el0|CNTV_CVAL_EL0}}, x12         // encoding: [0x4c,0xe3,0x1b,0xd5]
// CHECK: msr      {{pmevcntr0_el0|PMEVCNTR0_EL0}}, x12         // encoding: [0x0c,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr1_el0|PMEVCNTR1_EL0}}, x12         // encoding: [0x2c,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr2_el0|PMEVCNTR2_EL0}}, x12         // encoding: [0x4c,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr3_el0|PMEVCNTR3_EL0}}, x12         // encoding: [0x6c,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr4_el0|PMEVCNTR4_EL0}}, x12         // encoding: [0x8c,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr5_el0|PMEVCNTR5_EL0}}, x12         // encoding: [0xac,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr6_el0|PMEVCNTR6_EL0}}, x12         // encoding: [0xcc,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr7_el0|PMEVCNTR7_EL0}}, x12         // encoding: [0xec,0xe8,0x1b,0xd5]
// CHECK: msr      {{pmevcntr8_el0|PMEVCNTR8_EL0}}, x12         // encoding: [0x0c,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr9_el0|PMEVCNTR9_EL0}}, x12         // encoding: [0x2c,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr10_el0|PMEVCNTR10_EL0}}, x12        // encoding: [0x4c,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr11_el0|PMEVCNTR11_EL0}}, x12        // encoding: [0x6c,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr12_el0|PMEVCNTR12_EL0}}, x12        // encoding: [0x8c,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr13_el0|PMEVCNTR13_EL0}}, x12        // encoding: [0xac,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr14_el0|PMEVCNTR14_EL0}}, x12        // encoding: [0xcc,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr15_el0|PMEVCNTR15_EL0}}, x12        // encoding: [0xec,0xe9,0x1b,0xd5]
// CHECK: msr      {{pmevcntr16_el0|PMEVCNTR16_EL0}}, x12        // encoding: [0x0c,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr17_el0|PMEVCNTR17_EL0}}, x12        // encoding: [0x2c,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr18_el0|PMEVCNTR18_EL0}}, x12        // encoding: [0x4c,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr19_el0|PMEVCNTR19_EL0}}, x12        // encoding: [0x6c,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr20_el0|PMEVCNTR20_EL0}}, x12        // encoding: [0x8c,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr21_el0|PMEVCNTR21_EL0}}, x12        // encoding: [0xac,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr22_el0|PMEVCNTR22_EL0}}, x12        // encoding: [0xcc,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr23_el0|PMEVCNTR23_EL0}}, x12        // encoding: [0xec,0xea,0x1b,0xd5]
// CHECK: msr      {{pmevcntr24_el0|PMEVCNTR24_EL0}}, x12        // encoding: [0x0c,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmevcntr25_el0|PMEVCNTR25_EL0}}, x12        // encoding: [0x2c,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmevcntr26_el0|PMEVCNTR26_EL0}}, x12        // encoding: [0x4c,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmevcntr27_el0|PMEVCNTR27_EL0}}, x12        // encoding: [0x6c,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmevcntr28_el0|PMEVCNTR28_EL0}}, x12        // encoding: [0x8c,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmevcntr29_el0|PMEVCNTR29_EL0}}, x12        // encoding: [0xac,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmevcntr30_el0|PMEVCNTR30_EL0}}, x12        // encoding: [0xcc,0xeb,0x1b,0xd5]
// CHECK: msr      {{pmccfiltr_el0|PMCCFILTR_EL0}}, x12         // encoding: [0xec,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper0_el0|PMEVTYPER0_EL0}}, x12        // encoding: [0x0c,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper1_el0|PMEVTYPER1_EL0}}, x12        // encoding: [0x2c,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper2_el0|PMEVTYPER2_EL0}}, x12        // encoding: [0x4c,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper3_el0|PMEVTYPER3_EL0}}, x12        // encoding: [0x6c,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper4_el0|PMEVTYPER4_EL0}}, x12        // encoding: [0x8c,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper5_el0|PMEVTYPER5_EL0}}, x12        // encoding: [0xac,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper6_el0|PMEVTYPER6_EL0}}, x12        // encoding: [0xcc,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper7_el0|PMEVTYPER7_EL0}}, x12        // encoding: [0xec,0xec,0x1b,0xd5]
// CHECK: msr      {{pmevtyper8_el0|PMEVTYPER8_EL0}}, x12        // encoding: [0x0c,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper9_el0|PMEVTYPER9_EL0}}, x12        // encoding: [0x2c,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper10_el0|PMEVTYPER10_EL0}}, x12       // encoding: [0x4c,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper11_el0|PMEVTYPER11_EL0}}, x12       // encoding: [0x6c,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper12_el0|PMEVTYPER12_EL0}}, x12       // encoding: [0x8c,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper13_el0|PMEVTYPER13_EL0}}, x12       // encoding: [0xac,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper14_el0|PMEVTYPER14_EL0}}, x12       // encoding: [0xcc,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper15_el0|PMEVTYPER15_EL0}}, x12       // encoding: [0xec,0xed,0x1b,0xd5]
// CHECK: msr      {{pmevtyper16_el0|PMEVTYPER16_EL0}}, x12       // encoding: [0x0c,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper17_el0|PMEVTYPER17_EL0}}, x12       // encoding: [0x2c,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper18_el0|PMEVTYPER18_EL0}}, x12       // encoding: [0x4c,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper19_el0|PMEVTYPER19_EL0}}, x12       // encoding: [0x6c,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper20_el0|PMEVTYPER20_EL0}}, x12       // encoding: [0x8c,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper21_el0|PMEVTYPER21_EL0}}, x12       // encoding: [0xac,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper22_el0|PMEVTYPER22_EL0}}, x12       // encoding: [0xcc,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper23_el0|PMEVTYPER23_EL0}}, x12       // encoding: [0xec,0xee,0x1b,0xd5]
// CHECK: msr      {{pmevtyper24_el0|PMEVTYPER24_EL0}}, x12       // encoding: [0x0c,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper25_el0|PMEVTYPER25_EL0}}, x12       // encoding: [0x2c,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper26_el0|PMEVTYPER26_EL0}}, x12       // encoding: [0x4c,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper27_el0|PMEVTYPER27_EL0}}, x12       // encoding: [0x6c,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper28_el0|PMEVTYPER28_EL0}}, x12       // encoding: [0x8c,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper29_el0|PMEVTYPER29_EL0}}, x12       // encoding: [0xac,0xef,0x1b,0xd5]
// CHECK: msr      {{pmevtyper30_el0|PMEVTYPER30_EL0}}, x12       // encoding: [0xcc,0xef,0x1b,0xd5]

	mrs x9, TEECR32_EL1
	mrs x9, OSDTRRX_EL1
	mrs x9, MDCCSR_EL0
	mrs x9, MDCCINT_EL1
	mrs x9, MDSCR_EL1
	mrs x9, OSDTRTX_EL1
	mrs x9, DBGDTR_EL0
	mrs x9, DBGDTRRX_EL0
	mrs x9, OSECCR_EL1
	mrs x9, DBGVCR32_EL2
	mrs x9, DBGBVR0_EL1
	mrs x9, DBGBVR1_EL1
	mrs x9, DBGBVR2_EL1
	mrs x9, DBGBVR3_EL1
	mrs x9, DBGBVR4_EL1
	mrs x9, DBGBVR5_EL1
	mrs x9, DBGBVR6_EL1
	mrs x9, DBGBVR7_EL1
	mrs x9, DBGBVR8_EL1
	mrs x9, DBGBVR9_EL1
	mrs x9, DBGBVR10_EL1
	mrs x9, DBGBVR11_EL1
	mrs x9, DBGBVR12_EL1
	mrs x9, DBGBVR13_EL1
	mrs x9, DBGBVR14_EL1
	mrs x9, DBGBVR15_EL1
	mrs x9, DBGBCR0_EL1
	mrs x9, DBGBCR1_EL1
	mrs x9, DBGBCR2_EL1
	mrs x9, DBGBCR3_EL1
	mrs x9, DBGBCR4_EL1
	mrs x9, DBGBCR5_EL1
	mrs x9, DBGBCR6_EL1
	mrs x9, DBGBCR7_EL1
	mrs x9, DBGBCR8_EL1
	mrs x9, DBGBCR9_EL1
	mrs x9, DBGBCR10_EL1
	mrs x9, DBGBCR11_EL1
	mrs x9, DBGBCR12_EL1
	mrs x9, DBGBCR13_EL1
	mrs x9, DBGBCR14_EL1
	mrs x9, DBGBCR15_EL1
	mrs x9, DBGWVR0_EL1
	mrs x9, DBGWVR1_EL1
	mrs x9, DBGWVR2_EL1
	mrs x9, DBGWVR3_EL1
	mrs x9, DBGWVR4_EL1
	mrs x9, DBGWVR5_EL1
	mrs x9, DBGWVR6_EL1
	mrs x9, DBGWVR7_EL1
	mrs x9, DBGWVR8_EL1
	mrs x9, DBGWVR9_EL1
	mrs x9, DBGWVR10_EL1
	mrs x9, DBGWVR11_EL1
	mrs x9, DBGWVR12_EL1
	mrs x9, DBGWVR13_EL1
	mrs x9, DBGWVR14_EL1
	mrs x9, DBGWVR15_EL1
	mrs x9, DBGWCR0_EL1
	mrs x9, DBGWCR1_EL1
	mrs x9, DBGWCR2_EL1
	mrs x9, DBGWCR3_EL1
	mrs x9, DBGWCR4_EL1
	mrs x9, DBGWCR5_EL1
	mrs x9, DBGWCR6_EL1
	mrs x9, DBGWCR7_EL1
	mrs x9, DBGWCR8_EL1
	mrs x9, DBGWCR9_EL1
	mrs x9, DBGWCR10_EL1
	mrs x9, DBGWCR11_EL1
	mrs x9, DBGWCR12_EL1
	mrs x9, DBGWCR13_EL1
	mrs x9, DBGWCR14_EL1
	mrs x9, DBGWCR15_EL1
	mrs x9, MDRAR_EL1
	mrs x9, TEEHBR32_EL1
	mrs x9, OSLSR_EL1
	mrs x9, OSDLR_EL1
	mrs x9, DBGPRCR_EL1
	mrs x9, DBGCLAIMSET_EL1
	mrs x9, DBGCLAIMCLR_EL1
	mrs x9, DBGAUTHSTATUS_EL1
	mrs x9, MIDR_EL1
	mrs x9, CCSIDR_EL1
	mrs x9, CSSELR_EL1
	mrs x9, VPIDR_EL2
	mrs x9, CLIDR_EL1
	mrs x9, CTR_EL0
	mrs x9, MPIDR_EL1
	mrs x9, VMPIDR_EL2
	mrs x9, REVIDR_EL1
	mrs x9, AIDR_EL1
	mrs x9, DCZID_EL0
	mrs x9, ID_PFR0_EL1
	mrs x9, ID_PFR1_EL1
	mrs x9, ID_DFR0_EL1
	mrs x9, ID_AFR0_EL1
	mrs x9, ID_MMFR0_EL1
	mrs x9, ID_MMFR1_EL1
	mrs x9, ID_MMFR2_EL1
	mrs x9, ID_MMFR3_EL1
	mrs x9, ID_MMFR4_EL1
	mrs x9, ID_MMFR5_EL1
	mrs x9, ID_ISAR0_EL1
	mrs x9, ID_ISAR1_EL1
	mrs x9, ID_ISAR2_EL1
	mrs x9, ID_ISAR3_EL1
	mrs x9, ID_ISAR4_EL1
	mrs x9, ID_ISAR5_EL1
	mrs x9, MVFR0_EL1
	mrs x9, MVFR1_EL1
	mrs x9, MVFR2_EL1
	mrs x9, ID_AA64PFR0_EL1
	mrs x9, ID_AA64PFR1_EL1
	mrs x9, ID_AA64DFR0_EL1
	mrs x9, ID_AA64DFR1_EL1
	mrs x9, ID_AA64AFR0_EL1
	mrs x9, ID_AA64AFR1_EL1
	mrs x9, ID_AA64ISAR0_EL1
	mrs x9, ID_AA64ISAR1_EL1
	mrs x9, ID_AA64MMFR0_EL1
	mrs x9, ID_AA64MMFR1_EL1
	mrs x9, SCTLR_EL1
	mrs x9, SCTLR_EL2
	mrs x9, SCTLR_EL3
	mrs x9, ACTLR_EL1
	mrs x9, ACTLR_EL2
	mrs x9, ACTLR_EL3
	mrs x9, CPACR_EL1
	mrs x9, HCR_EL2
	mrs x9, SCR_EL3
	mrs x9, MDCR_EL2
	mrs x9, SDER32_EL3
	mrs x9, CPTR_EL2
	mrs x9, CPTR_EL3
	mrs x9, HSTR_EL2
	mrs x9, HACR_EL2
	mrs x9, MDCR_EL3
	mrs x9, TTBR0_EL1
	mrs x9, TTBR0_EL2
	mrs x9, TTBR0_EL3
	mrs x9, TTBR1_EL1
	mrs x9, TCR_EL1
	mrs x9, TCR_EL2
	mrs x9, TCR_EL3
	mrs x9, VTTBR_EL2
	mrs x9, VTCR_EL2
	mrs x9, DACR32_EL2
	mrs x9, SPSR_EL1
	mrs x9, SPSR_EL2
	mrs x9, SPSR_EL3
	mrs x9, ELR_EL1
	mrs x9, ELR_EL2
	mrs x9, ELR_EL3
	mrs x9, SP_EL0
	mrs x9, SP_EL1
	mrs x9, SP_EL2
	mrs x9, SPSel
	mrs x9, NZCV
	mrs x9, DAIF
	mrs x9, CurrentEL
	mrs x9, SPSR_irq
	mrs x9, SPSR_abt
	mrs x9, SPSR_und
	mrs x9, SPSR_fiq
	mrs x9, FPCR
	mrs x9, FPSR
	mrs x9, DSPSR_EL0
	mrs x9, DLR_EL0
	mrs x9, IFSR32_EL2
	mrs x9, AFSR0_EL1
	mrs x9, AFSR0_EL2
	mrs x9, AFSR0_EL3
	mrs x9, AFSR1_EL1
	mrs x9, AFSR1_EL2
	mrs x9, AFSR1_EL3
	mrs x9, ESR_EL1
	mrs x9, ESR_EL2
	mrs x9, ESR_EL3
	mrs x9, FPEXC32_EL2
	mrs x9, FAR_EL1
	mrs x9, FAR_EL2
	mrs x9, FAR_EL3
	mrs x9, HPFAR_EL2
	mrs x9, PAR_EL1
	mrs x9, PMCR_EL0
	mrs x9, PMCNTENSET_EL0
	mrs x9, PMCNTENCLR_EL0
	mrs x9, PMOVSCLR_EL0
	mrs x9, PMSELR_EL0
	mrs x9, PMCEID0_EL0
	mrs x9, PMCEID1_EL0
	mrs x9, PMCCNTR_EL0
	mrs x9, PMXEVTYPER_EL0
	mrs x9, PMXEVCNTR_EL0
	mrs x9, PMUSERENR_EL0
	mrs x9, PMINTENSET_EL1
	mrs x9, PMINTENCLR_EL1
	mrs x9, PMOVSSET_EL0
	mrs x9, MAIR_EL1
	mrs x9, MAIR_EL2
	mrs x9, MAIR_EL3
	mrs x9, AMAIR_EL1
	mrs x9, AMAIR_EL2
	mrs x9, AMAIR_EL3
	mrs x9, VBAR_EL1
	mrs x9, VBAR_EL2
	mrs x9, VBAR_EL3
	mrs x9, RVBAR_EL1
	mrs x9, RVBAR_EL2
	mrs x9, RVBAR_EL3
	mrs x9, RMR_EL1
	mrs x9, RMR_EL2
	mrs x9, RMR_EL3
	mrs x9, ISR_EL1
	mrs x9, CONTEXTIDR_EL1
	mrs x9, TPIDR_EL0
	mrs x9, TPIDR_EL2
	mrs x9, TPIDR_EL3
	mrs x9, TPIDRRO_EL0
	mrs x9, TPIDR_EL1
	mrs x9, CNTFRQ_EL0
	mrs x9, CNTPCT_EL0
	mrs x9, CNTVCT_EL0
	mrs x9, CNTVOFF_EL2
	mrs x9, CNTKCTL_EL1
	mrs x9, CNTHCTL_EL2
	mrs x9, CNTP_TVAL_EL0
	mrs x9, CNTHP_TVAL_EL2
	mrs x9, CNTPS_TVAL_EL1
	mrs x9, CNTP_CTL_EL0
	mrs x9, CNTHP_CTL_EL2
	mrs x9, CNTPS_CTL_EL1
	mrs x9, CNTP_CVAL_EL0
	mrs x9, CNTHP_CVAL_EL2
	mrs x9, CNTPS_CVAL_EL1
	mrs x9, CNTV_TVAL_EL0
	mrs x9, CNTV_CTL_EL0
	mrs x9, CNTV_CVAL_EL0
	mrs x9, PMEVCNTR0_EL0
	mrs x9, PMEVCNTR1_EL0
	mrs x9, PMEVCNTR2_EL0
	mrs x9, PMEVCNTR3_EL0
	mrs x9, PMEVCNTR4_EL0
	mrs x9, PMEVCNTR5_EL0
	mrs x9, PMEVCNTR6_EL0
	mrs x9, PMEVCNTR7_EL0
	mrs x9, PMEVCNTR8_EL0
	mrs x9, PMEVCNTR9_EL0
	mrs x9, PMEVCNTR10_EL0
	mrs x9, PMEVCNTR11_EL0
	mrs x9, PMEVCNTR12_EL0
	mrs x9, PMEVCNTR13_EL0
	mrs x9, PMEVCNTR14_EL0
	mrs x9, PMEVCNTR15_EL0
	mrs x9, PMEVCNTR16_EL0
	mrs x9, PMEVCNTR17_EL0
	mrs x9, PMEVCNTR18_EL0
	mrs x9, PMEVCNTR19_EL0
	mrs x9, PMEVCNTR20_EL0
	mrs x9, PMEVCNTR21_EL0
	mrs x9, PMEVCNTR22_EL0
	mrs x9, PMEVCNTR23_EL0
	mrs x9, PMEVCNTR24_EL0
	mrs x9, PMEVCNTR25_EL0
	mrs x9, PMEVCNTR26_EL0
	mrs x9, PMEVCNTR27_EL0
	mrs x9, PMEVCNTR28_EL0
	mrs x9, PMEVCNTR29_EL0
	mrs x9, PMEVCNTR30_EL0
	mrs x9, PMCCFILTR_EL0
	mrs x9, PMEVTYPER0_EL0
	mrs x9, PMEVTYPER1_EL0
	mrs x9, PMEVTYPER2_EL0
	mrs x9, PMEVTYPER3_EL0
	mrs x9, PMEVTYPER4_EL0
	mrs x9, PMEVTYPER5_EL0
	mrs x9, PMEVTYPER6_EL0
	mrs x9, PMEVTYPER7_EL0
	mrs x9, PMEVTYPER8_EL0
	mrs x9, PMEVTYPER9_EL0
	mrs x9, PMEVTYPER10_EL0
	mrs x9, PMEVTYPER11_EL0
	mrs x9, PMEVTYPER12_EL0
	mrs x9, PMEVTYPER13_EL0
	mrs x9, PMEVTYPER14_EL0
	mrs x9, PMEVTYPER15_EL0
	mrs x9, PMEVTYPER16_EL0
	mrs x9, PMEVTYPER17_EL0
	mrs x9, PMEVTYPER18_EL0
	mrs x9, PMEVTYPER19_EL0
	mrs x9, PMEVTYPER20_EL0
	mrs x9, PMEVTYPER21_EL0
	mrs x9, PMEVTYPER22_EL0
	mrs x9, PMEVTYPER23_EL0
	mrs x9, PMEVTYPER24_EL0
	mrs x9, PMEVTYPER25_EL0
	mrs x9, PMEVTYPER26_EL0
	mrs x9, PMEVTYPER27_EL0
	mrs x9, PMEVTYPER28_EL0
	mrs x9, PMEVTYPER29_EL0
	mrs x9, PMEVTYPER30_EL0
// CHECK: mrs      x9, {{teecr32_el1|TEECR32_EL1}}            // encoding: [0x09,0x00,0x32,0xd5]
// CHECK: mrs      x9, {{osdtrrx_el1|OSDTRRX_EL1}}            // encoding: [0x49,0x00,0x30,0xd5]
// CHECK: mrs      x9, {{mdccsr_el0|MDCCSR_EL0}}             // encoding: [0x09,0x01,0x33,0xd5]
// CHECK: mrs      x9, {{mdccint_el1|MDCCINT_EL1}}            // encoding: [0x09,0x02,0x30,0xd5]
// CHECK: mrs      x9, {{mdscr_el1|MDSCR_EL1}}              // encoding: [0x49,0x02,0x30,0xd5]
// CHECK: mrs      x9, {{osdtrtx_el1|OSDTRTX_EL1}}            // encoding: [0x49,0x03,0x30,0xd5]
// CHECK: mrs      x9, {{dbgdtr_el0|DBGDTR_EL0}}             // encoding: [0x09,0x04,0x33,0xd5]
// CHECK: mrs      x9, {{dbgdtrrx_el0|DBGDTRRX_EL0}}           // encoding: [0x09,0x05,0x33,0xd5]
// CHECK: mrs      x9, {{oseccr_el1|OSECCR_EL1}}             // encoding: [0x49,0x06,0x30,0xd5]
// CHECK: mrs      x9, {{dbgvcr32_el2|DBGVCR32_EL2}}           // encoding: [0x09,0x07,0x34,0xd5]
// CHECK: mrs      x9, {{dbgbvr0_el1|DBGBVR0_EL1}}            // encoding: [0x89,0x00,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr1_el1|DBGBVR1_EL1}}            // encoding: [0x89,0x01,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr2_el1|DBGBVR2_EL1}}            // encoding: [0x89,0x02,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr3_el1|DBGBVR3_EL1}}            // encoding: [0x89,0x03,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr4_el1|DBGBVR4_EL1}}            // encoding: [0x89,0x04,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr5_el1|DBGBVR5_EL1}}            // encoding: [0x89,0x05,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr6_el1|DBGBVR6_EL1}}            // encoding: [0x89,0x06,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr7_el1|DBGBVR7_EL1}}            // encoding: [0x89,0x07,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr8_el1|DBGBVR8_EL1}}            // encoding: [0x89,0x08,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr9_el1|DBGBVR9_EL1}}            // encoding: [0x89,0x09,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr10_el1|DBGBVR10_EL1}}           // encoding: [0x89,0x0a,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr11_el1|DBGBVR11_EL1}}           // encoding: [0x89,0x0b,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr12_el1|DBGBVR12_EL1}}           // encoding: [0x89,0x0c,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr13_el1|DBGBVR13_EL1}}           // encoding: [0x89,0x0d,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr14_el1|DBGBVR14_EL1}}           // encoding: [0x89,0x0e,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbvr15_el1|DBGBVR15_EL1}}           // encoding: [0x89,0x0f,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr0_el1|DBGBCR0_EL1}}            // encoding: [0xa9,0x00,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr1_el1|DBGBCR1_EL1}}            // encoding: [0xa9,0x01,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr2_el1|DBGBCR2_EL1}}            // encoding: [0xa9,0x02,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr3_el1|DBGBCR3_EL1}}            // encoding: [0xa9,0x03,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr4_el1|DBGBCR4_EL1}}            // encoding: [0xa9,0x04,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr5_el1|DBGBCR5_EL1}}            // encoding: [0xa9,0x05,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr6_el1|DBGBCR6_EL1}}            // encoding: [0xa9,0x06,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr7_el1|DBGBCR7_EL1}}            // encoding: [0xa9,0x07,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr8_el1|DBGBCR8_EL1}}            // encoding: [0xa9,0x08,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr9_el1|DBGBCR9_EL1}}            // encoding: [0xa9,0x09,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr10_el1|DBGBCR10_EL1}}           // encoding: [0xa9,0x0a,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr11_el1|DBGBCR11_EL1}}           // encoding: [0xa9,0x0b,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr12_el1|DBGBCR12_EL1}}           // encoding: [0xa9,0x0c,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr13_el1|DBGBCR13_EL1}}           // encoding: [0xa9,0x0d,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr14_el1|DBGBCR14_EL1}}           // encoding: [0xa9,0x0e,0x30,0xd5]
// CHECK: mrs      x9, {{dbgbcr15_el1|DBGBCR15_EL1}}           // encoding: [0xa9,0x0f,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr0_el1|DBGWVR0_EL1}}            // encoding: [0xc9,0x00,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr1_el1|DBGWVR1_EL1}}            // encoding: [0xc9,0x01,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr2_el1|DBGWVR2_EL1}}            // encoding: [0xc9,0x02,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr3_el1|DBGWVR3_EL1}}            // encoding: [0xc9,0x03,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr4_el1|DBGWVR4_EL1}}            // encoding: [0xc9,0x04,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr5_el1|DBGWVR5_EL1}}            // encoding: [0xc9,0x05,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr6_el1|DBGWVR6_EL1}}            // encoding: [0xc9,0x06,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr7_el1|DBGWVR7_EL1}}            // encoding: [0xc9,0x07,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr8_el1|DBGWVR8_EL1}}            // encoding: [0xc9,0x08,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr9_el1|DBGWVR9_EL1}}            // encoding: [0xc9,0x09,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr10_el1|DBGWVR10_EL1}}           // encoding: [0xc9,0x0a,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr11_el1|DBGWVR11_EL1}}           // encoding: [0xc9,0x0b,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr12_el1|DBGWVR12_EL1}}           // encoding: [0xc9,0x0c,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr13_el1|DBGWVR13_EL1}}           // encoding: [0xc9,0x0d,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr14_el1|DBGWVR14_EL1}}           // encoding: [0xc9,0x0e,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwvr15_el1|DBGWVR15_EL1}}           // encoding: [0xc9,0x0f,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr0_el1|DBGWCR0_EL1}}            // encoding: [0xe9,0x00,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr1_el1|DBGWCR1_EL1}}            // encoding: [0xe9,0x01,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr2_el1|DBGWCR2_EL1}}            // encoding: [0xe9,0x02,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr3_el1|DBGWCR3_EL1}}            // encoding: [0xe9,0x03,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr4_el1|DBGWCR4_EL1}}            // encoding: [0xe9,0x04,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr5_el1|DBGWCR5_EL1}}            // encoding: [0xe9,0x05,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr6_el1|DBGWCR6_EL1}}            // encoding: [0xe9,0x06,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr7_el1|DBGWCR7_EL1}}            // encoding: [0xe9,0x07,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr8_el1|DBGWCR8_EL1}}            // encoding: [0xe9,0x08,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr9_el1|DBGWCR9_EL1}}            // encoding: [0xe9,0x09,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr10_el1|DBGWCR10_EL1}}           // encoding: [0xe9,0x0a,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr11_el1|DBGWCR11_EL1}}           // encoding: [0xe9,0x0b,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr12_el1|DBGWCR12_EL1}}           // encoding: [0xe9,0x0c,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr13_el1|DBGWCR13_EL1}}           // encoding: [0xe9,0x0d,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr14_el1|DBGWCR14_EL1}}           // encoding: [0xe9,0x0e,0x30,0xd5]
// CHECK: mrs      x9, {{dbgwcr15_el1|DBGWCR15_EL1}}           // encoding: [0xe9,0x0f,0x30,0xd5]
// CHECK: mrs      x9, {{mdrar_el1|MDRAR_EL1}}              // encoding: [0x09,0x10,0x30,0xd5]
// CHECK: mrs      x9, {{teehbr32_el1|TEEHBR32_EL1}}           // encoding: [0x09,0x10,0x32,0xd5]
// CHECK: mrs      x9, {{oslsr_el1|OSLSR_EL1}}              // encoding: [0x89,0x11,0x30,0xd5]
// CHECK: mrs      x9, {{osdlr_el1|OSDLR_EL1}}              // encoding: [0x89,0x13,0x30,0xd5]
// CHECK: mrs      x9, {{dbgprcr_el1|DBGPRCR_EL1}}            // encoding: [0x89,0x14,0x30,0xd5]
// CHECK: mrs      x9, {{dbgclaimset_el1|DBGCLAIMSET_EL1}}        // encoding: [0xc9,0x78,0x30,0xd5]
// CHECK: mrs      x9, {{dbgclaimclr_el1|DBGCLAIMCLR_EL1}}        // encoding: [0xc9,0x79,0x30,0xd5]
// CHECK: mrs      x9, {{dbgauthstatus_el1|DBGAUTHSTATUS_EL1}}      // encoding: [0xc9,0x7e,0x30,0xd5]
// CHECK: mrs      x9, {{midr_el1|MIDR_EL1}}               // encoding: [0x09,0x00,0x38,0xd5]
// CHECK: mrs      x9, {{ccsidr_el1|CCSIDR_EL1}}             // encoding: [0x09,0x00,0x39,0xd5]
// CHECK: mrs      x9, {{csselr_el1|CSSELR_EL1}}             // encoding: [0x09,0x00,0x3a,0xd5]
// CHECK: mrs      x9, {{vpidr_el2|VPIDR_EL2}}              // encoding: [0x09,0x00,0x3c,0xd5]
// CHECK: mrs      x9, {{clidr_el1|CLIDR_EL1}}              // encoding: [0x29,0x00,0x39,0xd5]
// CHECK: mrs      x9, {{ctr_el0|CTR_EL0}}                // encoding: [0x29,0x00,0x3b,0xd5]
// CHECK: mrs      x9, {{mpidr_el1|MPIDR_EL1}}              // encoding: [0xa9,0x00,0x38,0xd5]
// CHECK: mrs      x9, {{vmpidr_el2|VMPIDR_EL2}}             // encoding: [0xa9,0x00,0x3c,0xd5]
// CHECK: mrs      x9, {{revidr_el1|REVIDR_EL1}}             // encoding: [0xc9,0x00,0x38,0xd5]
// CHECK: mrs      x9, {{aidr_el1|AIDR_EL1}}               // encoding: [0xe9,0x00,0x39,0xd5]
// CHECK: mrs      x9, {{dczid_el0|DCZID_EL0}}              // encoding: [0xe9,0x00,0x3b,0xd5]
// CHECK: mrs      x9, {{id_pfr0_el1|ID_PFR0_EL1}}            // encoding: [0x09,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_pfr1_el1|ID_PFR1_EL1}}            // encoding: [0x29,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_dfr0_el1|ID_DFR0_EL1}}            // encoding: [0x49,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_afr0_el1|ID_AFR0_EL1}}            // encoding: [0x69,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_mmfr0_el1|ID_MMFR0_EL1}}           // encoding: [0x89,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_mmfr1_el1|ID_MMFR1_EL1}}           // encoding: [0xa9,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_mmfr2_el1|ID_MMFR2_EL1}}           // encoding: [0xc9,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_mmfr3_el1|ID_MMFR3_EL1}}           // encoding: [0xe9,0x01,0x38,0xd5]
// CHECK: mrs      x9, {{id_mmfr4_el1|ID_MMFR4_EL1}}           // encoding: [0xc9,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{id_mmfr5_el1|ID_MMFR5_EL1}}           // encoding: [0xc9,0x03,0x38,0xd5]
// CHECK: mrs      x9, {{id_isar0_el1|ID_ISAR0_EL1}}           // encoding: [0x09,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{id_isar1_el1|ID_ISAR1_EL1}}           // encoding: [0x29,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{id_isar2_el1|ID_ISAR2_EL1}}           // encoding: [0x49,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{id_isar3_el1|ID_ISAR3_EL1}}           // encoding: [0x69,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{id_isar4_el1|ID_ISAR4_EL1}}           // encoding: [0x89,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{id_isar5_el1|ID_ISAR5_EL1}}           // encoding: [0xa9,0x02,0x38,0xd5]
// CHECK: mrs      x9, {{mvfr0_el1|MVFR0_EL1}}              // encoding: [0x09,0x03,0x38,0xd5]
// CHECK: mrs      x9, {{mvfr1_el1|MVFR1_EL1}}              // encoding: [0x29,0x03,0x38,0xd5]
// CHECK: mrs      x9, {{mvfr2_el1|MVFR2_EL1}}              // encoding: [0x49,0x03,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64pfr0_el1|ID_AA64PFR0_EL1}}        // encoding: [0x09,0x04,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64pfr1_el1|ID_AA64PFR1_EL1}}        // encoding: [0x29,0x04,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64dfr0_el1|ID_AA64DFR0_EL1}}        // encoding: [0x09,0x05,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64dfr1_el1|ID_AA64DFR1_EL1}}        // encoding: [0x29,0x05,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64afr0_el1|ID_AA64AFR0_EL1}}        // encoding: [0x89,0x05,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64afr1_el1|ID_AA64AFR1_EL1}}        // encoding: [0xa9,0x05,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64isar0_el1|ID_AA64ISAR0_EL1}}       // encoding: [0x09,0x06,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64isar1_el1|ID_AA64ISAR1_EL1}}       // encoding: [0x29,0x06,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64mmfr0_el1|ID_AA64MMFR0_EL1}}       // encoding: [0x09,0x07,0x38,0xd5]
// CHECK: mrs      x9, {{id_aa64mmfr1_el1|ID_AA64MMFR1_EL1}}       // encoding: [0x29,0x07,0x38,0xd5]
// CHECK: mrs      x9, {{sctlr_el1|SCTLR_EL1}}              // encoding: [0x09,0x10,0x38,0xd5]
// CHECK: mrs      x9, {{sctlr_el2|SCTLR_EL2}}              // encoding: [0x09,0x10,0x3c,0xd5]
// CHECK: mrs      x9, {{sctlr_el3|SCTLR_EL3}}              // encoding: [0x09,0x10,0x3e,0xd5]
// CHECK: mrs      x9, {{actlr_el1|ACTLR_EL1}}              // encoding: [0x29,0x10,0x38,0xd5]
// CHECK: mrs      x9, {{actlr_el2|ACTLR_EL2}}              // encoding: [0x29,0x10,0x3c,0xd5]
// CHECK: mrs      x9, {{actlr_el3|ACTLR_EL3}}              // encoding: [0x29,0x10,0x3e,0xd5]
// CHECK: mrs      x9, {{cpacr_el1|CPACR_EL1}}              // encoding: [0x49,0x10,0x38,0xd5]
// CHECK: mrs      x9, {{hcr_el2|HCR_EL2}}                // encoding: [0x09,0x11,0x3c,0xd5]
// CHECK: mrs      x9, {{scr_el3|SCR_EL3}}                // encoding: [0x09,0x11,0x3e,0xd5]
// CHECK: mrs      x9, {{mdcr_el2|MDCR_EL2}}               // encoding: [0x29,0x11,0x3c,0xd5]
// CHECK: mrs      x9, {{sder32_el3|SDER32_EL3}}             // encoding: [0x29,0x11,0x3e,0xd5]
// CHECK: mrs      x9, {{cptr_el2|CPTR_EL2}}               // encoding: [0x49,0x11,0x3c,0xd5]
// CHECK: mrs      x9, {{cptr_el3|CPTR_EL3}}               // encoding: [0x49,0x11,0x3e,0xd5]
// CHECK: mrs      x9, {{hstr_el2|HSTR_EL2}}               // encoding: [0x69,0x11,0x3c,0xd5]
// CHECK: mrs      x9, {{hacr_el2|HACR_EL2}}               // encoding: [0xe9,0x11,0x3c,0xd5]
// CHECK: mrs      x9, {{mdcr_el3|MDCR_EL3}}               // encoding: [0x29,0x13,0x3e,0xd5]
// CHECK: mrs      x9, {{ttbr0_el1|TTBR0_EL1}}              // encoding: [0x09,0x20,0x38,0xd5]
// CHECK: mrs      x9, {{ttbr0_el2|TTBR0_EL2}}              // encoding: [0x09,0x20,0x3c,0xd5]
// CHECK: mrs      x9, {{ttbr0_el3|TTBR0_EL3}}              // encoding: [0x09,0x20,0x3e,0xd5]
// CHECK: mrs      x9, {{ttbr1_el1|TTBR1_EL1}}              // encoding: [0x29,0x20,0x38,0xd5]
// CHECK: mrs      x9, {{tcr_el1|TCR_EL1}}                // encoding: [0x49,0x20,0x38,0xd5]
// CHECK: mrs      x9, {{tcr_el2|TCR_EL2}}                // encoding: [0x49,0x20,0x3c,0xd5]
// CHECK: mrs      x9, {{tcr_el3|TCR_EL3}}                // encoding: [0x49,0x20,0x3e,0xd5]
// CHECK: mrs      x9, {{vttbr_el2|VTTBR_EL2}}              // encoding: [0x09,0x21,0x3c,0xd5]
// CHECK: mrs      x9, {{vtcr_el2|VTCR_EL2}}               // encoding: [0x49,0x21,0x3c,0xd5]
// CHECK: mrs      x9, {{dacr32_el2|DACR32_EL2}}             // encoding: [0x09,0x30,0x3c,0xd5]
// CHECK: mrs      x9, {{spsr_el1|SPSR_EL1}}               // encoding: [0x09,0x40,0x38,0xd5]
// CHECK: mrs      x9, {{spsr_el2|SPSR_EL2}}               // encoding: [0x09,0x40,0x3c,0xd5]
// CHECK: mrs      x9, {{spsr_el3|SPSR_EL3}}               // encoding: [0x09,0x40,0x3e,0xd5]
// CHECK: mrs      x9, {{elr_el1|ELR_EL1}}                // encoding: [0x29,0x40,0x38,0xd5]
// CHECK: mrs      x9, {{elr_el2|ELR_EL2}}                // encoding: [0x29,0x40,0x3c,0xd5]
// CHECK: mrs      x9, {{elr_el3|ELR_EL3}}                // encoding: [0x29,0x40,0x3e,0xd5]
// CHECK: mrs      x9, {{sp_el0|SP_EL0}}                 // encoding: [0x09,0x41,0x38,0xd5]
// CHECK: mrs      x9, {{sp_el1|SP_EL1}}                 // encoding: [0x09,0x41,0x3c,0xd5]
// CHECK: mrs      x9, {{sp_el2|SP_EL2}}                 // encoding: [0x09,0x41,0x3e,0xd5]
// CHECK: mrs      x9, {{SPSel|SPSEL}}                  // encoding: [0x09,0x42,0x38,0xd5]
// CHECK: mrs      x9, {{nzcv|NZCV}}                   // encoding: [0x09,0x42,0x3b,0xd5]
// CHECK: mrs      x9, {{daif|DAIF}}                   // encoding: [0x29,0x42,0x3b,0xd5]
// CHECK: mrs      x9, {{CurrentEL|CURRENTEL}}              // encoding: [0x49,0x42,0x38,0xd5]
// CHECK: mrs      x9, {{SPSR_irq|SPSR_IRQ}}               // encoding: [0x09,0x43,0x3c,0xd5]
// CHECK: mrs      x9, {{SPSR_abt|SPSR_ABT}}               // encoding: [0x29,0x43,0x3c,0xd5]
// CHECK: mrs      x9, {{SPSR_und|SPSR_UND}}               // encoding: [0x49,0x43,0x3c,0xd5]
// CHECK: mrs      x9, {{SPSR_fiq|SPSR_FIQ}}               // encoding: [0x69,0x43,0x3c,0xd5]
// CHECK: mrs      x9, {{fpcr|FPCR}}                   // encoding: [0x09,0x44,0x3b,0xd5]
// CHECK: mrs      x9, {{fpsr|FPSR}}                   // encoding: [0x29,0x44,0x3b,0xd5]
// CHECK: mrs      x9, {{dspsr_el0|DSPSR_EL0}}              // encoding: [0x09,0x45,0x3b,0xd5]
// CHECK: mrs      x9, {{dlr_el0|DLR_EL0}}                // encoding: [0x29,0x45,0x3b,0xd5]
// CHECK: mrs      x9, {{ifsr32_el2|IFSR32_EL2}}             // encoding: [0x29,0x50,0x3c,0xd5]
// CHECK: mrs      x9, {{afsr0_el1|AFSR0_EL1}}              // encoding: [0x09,0x51,0x38,0xd5]
// CHECK: mrs      x9, {{afsr0_el2|AFSR0_EL2}}              // encoding: [0x09,0x51,0x3c,0xd5]
// CHECK: mrs      x9, {{afsr0_el3|AFSR0_EL3}}              // encoding: [0x09,0x51,0x3e,0xd5]
// CHECK: mrs      x9, {{afsr1_el1|AFSR1_EL1}}              // encoding: [0x29,0x51,0x38,0xd5]
// CHECK: mrs      x9, {{afsr1_el2|AFSR1_EL2}}              // encoding: [0x29,0x51,0x3c,0xd5]
// CHECK: mrs      x9, {{afsr1_el3|AFSR1_EL3}}              // encoding: [0x29,0x51,0x3e,0xd5]
// CHECK: mrs      x9, {{esr_el1|ESR_EL1}}                // encoding: [0x09,0x52,0x38,0xd5]
// CHECK: mrs      x9, {{esr_el2|ESR_EL2}}                // encoding: [0x09,0x52,0x3c,0xd5]
// CHECK: mrs      x9, {{esr_el3|ESR_EL3}}                // encoding: [0x09,0x52,0x3e,0xd5]
// CHECK: mrs      x9, {{fpexc32_el2|FPEXC32_EL2}}            // encoding: [0x09,0x53,0x3c,0xd5]
// CHECK: mrs      x9, {{far_el1|FAR_EL1}}                // encoding: [0x09,0x60,0x38,0xd5]
// CHECK: mrs      x9, {{far_el2|FAR_EL2}}                // encoding: [0x09,0x60,0x3c,0xd5]
// CHECK: mrs      x9, {{far_el3|FAR_EL3}}                // encoding: [0x09,0x60,0x3e,0xd5]
// CHECK: mrs      x9, {{hpfar_el2|HPFAR_EL2}}              // encoding: [0x89,0x60,0x3c,0xd5]
// CHECK: mrs      x9, {{par_el1|PAR_EL1}}                // encoding: [0x09,0x74,0x38,0xd5]
// CHECK: mrs      x9, {{pmcr_el0|PMCR_EL0}}               // encoding: [0x09,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmcntenset_el0|PMCNTENSET_EL0}}         // encoding: [0x29,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmcntenclr_el0|PMCNTENCLR_EL0}}         // encoding: [0x49,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmovsclr_el0|PMOVSCLR_EL0}}           // encoding: [0x69,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmselr_el0|PMSELR_EL0}}             // encoding: [0xa9,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmceid0_el0|PMCEID0_EL0}}            // encoding: [0xc9,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmceid1_el0|PMCEID1_EL0}}            // encoding: [0xe9,0x9c,0x3b,0xd5]
// CHECK: mrs      x9, {{pmccntr_el0|PMCCNTR_EL0}}            // encoding: [0x09,0x9d,0x3b,0xd5]
// CHECK: mrs      x9, {{pmxevtyper_el0|PMXEVTYPER_EL0}}         // encoding: [0x29,0x9d,0x3b,0xd5]
// CHECK: mrs      x9, {{pmxevcntr_el0|PMXEVCNTR_EL0}}          // encoding: [0x49,0x9d,0x3b,0xd5]
// CHECK: mrs      x9, {{pmuserenr_el0|PMUSERENR_EL0}}          // encoding: [0x09,0x9e,0x3b,0xd5]
// CHECK: mrs      x9, {{pmintenset_el1|PMINTENSET_EL1}}         // encoding: [0x29,0x9e,0x38,0xd5]
// CHECK: mrs      x9, {{pmintenclr_el1|PMINTENCLR_EL1}}         // encoding: [0x49,0x9e,0x38,0xd5]
// CHECK: mrs      x9, {{pmovsset_el0|PMOVSSET_EL0}}           // encoding: [0x69,0x9e,0x3b,0xd5]
// CHECK: mrs      x9, {{mair_el1|MAIR_EL1}}               // encoding: [0x09,0xa2,0x38,0xd5]
// CHECK: mrs      x9, {{mair_el2|MAIR_EL2}}               // encoding: [0x09,0xa2,0x3c,0xd5]
// CHECK: mrs      x9, {{mair_el3|MAIR_EL3}}               // encoding: [0x09,0xa2,0x3e,0xd5]
// CHECK: mrs      x9, {{amair_el1|AMAIR_EL1}}              // encoding: [0x09,0xa3,0x38,0xd5]
// CHECK: mrs      x9, {{amair_el2|AMAIR_EL2}}              // encoding: [0x09,0xa3,0x3c,0xd5]
// CHECK: mrs      x9, {{amair_el3|AMAIR_EL3}}              // encoding: [0x09,0xa3,0x3e,0xd5]
// CHECK: mrs      x9, {{vbar_el1|VBAR_EL1}}               // encoding: [0x09,0xc0,0x38,0xd5]
// CHECK: mrs      x9, {{vbar_el2|VBAR_EL2}}               // encoding: [0x09,0xc0,0x3c,0xd5]
// CHECK: mrs      x9, {{vbar_el3|VBAR_EL3}}               // encoding: [0x09,0xc0,0x3e,0xd5]
// CHECK: mrs      x9, {{rvbar_el1|RVBAR_EL1}}              // encoding: [0x29,0xc0,0x38,0xd5]
// CHECK: mrs      x9, {{rvbar_el2|RVBAR_EL2}}              // encoding: [0x29,0xc0,0x3c,0xd5]
// CHECK: mrs      x9, {{rvbar_el3|RVBAR_EL3}}              // encoding: [0x29,0xc0,0x3e,0xd5]
// CHECK: mrs      x9, {{rmr_el1|RMR_EL1}}                // encoding: [0x49,0xc0,0x38,0xd5]
// CHECK: mrs      x9, {{rmr_el2|RMR_EL2}}                // encoding: [0x49,0xc0,0x3c,0xd5]
// CHECK: mrs      x9, {{rmr_el3|RMR_EL3}}                // encoding: [0x49,0xc0,0x3e,0xd5]
// CHECK: mrs      x9, {{isr_el1|ISR_EL1}}                // encoding: [0x09,0xc1,0x38,0xd5]
// CHECK: mrs      x9, {{contextidr_el1|CONTEXTIDR_EL1}}         // encoding: [0x29,0xd0,0x38,0xd5]
// CHECK: mrs      x9, {{tpidr_el0|TPIDR_EL0}}              // encoding: [0x49,0xd0,0x3b,0xd5]
// CHECK: mrs      x9, {{tpidr_el2|TPIDR_EL2}}              // encoding: [0x49,0xd0,0x3c,0xd5]
// CHECK: mrs      x9, {{tpidr_el3|TPIDR_EL3}}              // encoding: [0x49,0xd0,0x3e,0xd5]
// CHECK: mrs      x9, {{tpidrro_el0|TPIDRRO_EL0}}            // encoding: [0x69,0xd0,0x3b,0xd5]
// CHECK: mrs      x9, {{tpidr_el1|TPIDR_EL1}}              // encoding: [0x89,0xd0,0x38,0xd5]
// CHECK: mrs      x9, {{cntfrq_el0|CNTFRQ_EL0}}             // encoding: [0x09,0xe0,0x3b,0xd5]
// CHECK: mrs      x9, {{cntpct_el0|CNTPCT_EL0}}             // encoding: [0x29,0xe0,0x3b,0xd5]
// CHECK: mrs      x9, {{cntvct_el0|CNTVCT_EL0}}             // encoding: [0x49,0xe0,0x3b,0xd5]
// CHECK: mrs      x9, {{cntvoff_el2|CNTVOFF_EL2}}            // encoding: [0x69,0xe0,0x3c,0xd5]
// CHECK: mrs      x9, {{cntkctl_el1|CNTKCTL_EL1}}            // encoding: [0x09,0xe1,0x38,0xd5]
// CHECK: mrs      x9, {{cnthctl_el2|CNTHCTL_EL2}}            // encoding: [0x09,0xe1,0x3c,0xd5]
// CHECK: mrs      x9, {{cntp_tval_el0|CNTP_TVAL_EL0}}          // encoding: [0x09,0xe2,0x3b,0xd5]
// CHECK: mrs      x9, {{cnthp_tval_el2|CNTHP_TVAL_EL2}}         // encoding: [0x09,0xe2,0x3c,0xd5]
// CHECK: mrs      x9, {{cntps_tval_el1|CNTPS_TVAL_EL1}}         // encoding: [0x09,0xe2,0x3f,0xd5]
// CHECK: mrs      x9, {{cntp_ctl_el0|CNTP_CTL_EL0}}           // encoding: [0x29,0xe2,0x3b,0xd5]
// CHECK: mrs      x9, {{cnthp_ctl_el2|CNTHP_CTL_EL2}}          // encoding: [0x29,0xe2,0x3c,0xd5]
// CHECK: mrs      x9, {{cntps_ctl_el1|CNTPS_CTL_EL1}}          // encoding: [0x29,0xe2,0x3f,0xd5]
// CHECK: mrs      x9, {{cntp_cval_el0|CNTP_CVAL_EL0}}          // encoding: [0x49,0xe2,0x3b,0xd5]
// CHECK: mrs      x9, {{cnthp_cval_el2|CNTHP_CVAL_EL2}}         // encoding: [0x49,0xe2,0x3c,0xd5]
// CHECK: mrs      x9, {{cntps_cval_el1|CNTPS_CVAL_EL1}}         // encoding: [0x49,0xe2,0x3f,0xd5]
// CHECK: mrs      x9, {{cntv_tval_el0|CNTV_TVAL_EL0}}          // encoding: [0x09,0xe3,0x3b,0xd5]
// CHECK: mrs      x9, {{cntv_ctl_el0|CNTV_CTL_EL0}}           // encoding: [0x29,0xe3,0x3b,0xd5]
// CHECK: mrs      x9, {{cntv_cval_el0|CNTV_CVAL_EL0}}          // encoding: [0x49,0xe3,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr0_el0|PMEVCNTR0_EL0}}          // encoding: [0x09,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr1_el0|PMEVCNTR1_EL0}}          // encoding: [0x29,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr2_el0|PMEVCNTR2_EL0}}          // encoding: [0x49,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr3_el0|PMEVCNTR3_EL0}}          // encoding: [0x69,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr4_el0|PMEVCNTR4_EL0}}          // encoding: [0x89,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr5_el0|PMEVCNTR5_EL0}}          // encoding: [0xa9,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr6_el0|PMEVCNTR6_EL0}}          // encoding: [0xc9,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr7_el0|PMEVCNTR7_EL0}}          // encoding: [0xe9,0xe8,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr8_el0|PMEVCNTR8_EL0}}          // encoding: [0x09,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr9_el0|PMEVCNTR9_EL0}}          // encoding: [0x29,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr10_el0|PMEVCNTR10_EL0}}         // encoding: [0x49,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr11_el0|PMEVCNTR11_EL0}}         // encoding: [0x69,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr12_el0|PMEVCNTR12_EL0}}         // encoding: [0x89,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr13_el0|PMEVCNTR13_EL0}}         // encoding: [0xa9,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr14_el0|PMEVCNTR14_EL0}}         // encoding: [0xc9,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr15_el0|PMEVCNTR15_EL0}}         // encoding: [0xe9,0xe9,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr16_el0|PMEVCNTR16_EL0}}         // encoding: [0x09,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr17_el0|PMEVCNTR17_EL0}}         // encoding: [0x29,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr18_el0|PMEVCNTR18_EL0}}         // encoding: [0x49,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr19_el0|PMEVCNTR19_EL0}}         // encoding: [0x69,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr20_el0|PMEVCNTR20_EL0}}         // encoding: [0x89,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr21_el0|PMEVCNTR21_EL0}}         // encoding: [0xa9,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr22_el0|PMEVCNTR22_EL0}}         // encoding: [0xc9,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr23_el0|PMEVCNTR23_EL0}}         // encoding: [0xe9,0xea,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr24_el0|PMEVCNTR24_EL0}}         // encoding: [0x09,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr25_el0|PMEVCNTR25_EL0}}         // encoding: [0x29,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr26_el0|PMEVCNTR26_EL0}}         // encoding: [0x49,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr27_el0|PMEVCNTR27_EL0}}         // encoding: [0x69,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr28_el0|PMEVCNTR28_EL0}}         // encoding: [0x89,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr29_el0|PMEVCNTR29_EL0}}         // encoding: [0xa9,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevcntr30_el0|PMEVCNTR30_EL0}}         // encoding: [0xc9,0xeb,0x3b,0xd5]
// CHECK: mrs      x9, {{pmccfiltr_el0|PMCCFILTR_EL0}}          // encoding: [0xe9,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper0_el0|PMEVTYPER0_EL0}}         // encoding: [0x09,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper1_el0|PMEVTYPER1_EL0}}         // encoding: [0x29,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper2_el0|PMEVTYPER2_EL0}}         // encoding: [0x49,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper3_el0|PMEVTYPER3_EL0}}         // encoding: [0x69,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper4_el0|PMEVTYPER4_EL0}}         // encoding: [0x89,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper5_el0|PMEVTYPER5_EL0}}         // encoding: [0xa9,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper6_el0|PMEVTYPER6_EL0}}         // encoding: [0xc9,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper7_el0|PMEVTYPER7_EL0}}         // encoding: [0xe9,0xec,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper8_el0|PMEVTYPER8_EL0}}         // encoding: [0x09,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper9_el0|PMEVTYPER9_EL0}}         // encoding: [0x29,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper10_el0|PMEVTYPER10_EL0}}        // encoding: [0x49,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper11_el0|PMEVTYPER11_EL0}}        // encoding: [0x69,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper12_el0|PMEVTYPER12_EL0}}        // encoding: [0x89,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper13_el0|PMEVTYPER13_EL0}}        // encoding: [0xa9,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper14_el0|PMEVTYPER14_EL0}}        // encoding: [0xc9,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper15_el0|PMEVTYPER15_EL0}}        // encoding: [0xe9,0xed,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper16_el0|PMEVTYPER16_EL0}}        // encoding: [0x09,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper17_el0|PMEVTYPER17_EL0}}        // encoding: [0x29,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper18_el0|PMEVTYPER18_EL0}}        // encoding: [0x49,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper19_el0|PMEVTYPER19_EL0}}        // encoding: [0x69,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper20_el0|PMEVTYPER20_EL0}}        // encoding: [0x89,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper21_el0|PMEVTYPER21_EL0}}        // encoding: [0xa9,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper22_el0|PMEVTYPER22_EL0}}        // encoding: [0xc9,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper23_el0|PMEVTYPER23_EL0}}        // encoding: [0xe9,0xee,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper24_el0|PMEVTYPER24_EL0}}        // encoding: [0x09,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper25_el0|PMEVTYPER25_EL0}}        // encoding: [0x29,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper26_el0|PMEVTYPER26_EL0}}        // encoding: [0x49,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper27_el0|PMEVTYPER27_EL0}}        // encoding: [0x69,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper28_el0|PMEVTYPER28_EL0}}        // encoding: [0x89,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper29_el0|PMEVTYPER29_EL0}}        // encoding: [0xa9,0xef,0x3b,0xd5]
// CHECK: mrs      x9, {{pmevtyper30_el0|PMEVTYPER30_EL0}}        // encoding: [0xc9,0xef,0x3b,0xd5]

        mrs x12, s3_7_c15_c1_5
        mrs x13, s3_2_c11_c15_7
        mrs x14, s1_3_c9_c2_1
        msr s3_0_c15_c0_0, x12
        msr s3_7_c11_c13_7, x5
        msr s1_3_c9_c2_1, x4
// CHECK: mrs     x12, {{s3_7_c15_c1_5|S3_7_C15_C1_5}}      // encoding: [0xac,0xf1,0x3f,0xd5]
// CHECK: mrs     x13, {{s3_2_c11_c15_7|S3_2_C11_C15_7}}    // encoding: [0xed,0xbf,0x3a,0xd5]
// CHECK: mrs     x14, {{s1_3_c9_c2_1|S1_3_C9_C2_1}}        // encoding: [0x2e,0x92,0x2b,0xd5]
// CHECK: msr     {{s3_0_c15_c0_0|S3_0_C15_C0_0}}, x12      // encoding: [0x0c,0xf0,0x18,0xd5]
// CHECK: msr     {{s3_7_c11_c13_7|S3_7_C11_C13_7}}, x5     // encoding: [0xe5,0xbd,0x1f,0xd5]
// CHECK: msr     {{s1_3_c9_c2_1|S1_3_C9_C2_1}}, x4         // encoding: [0x24,0x92,0x0b,0xd5]

//------------------------------------------------------------------------------
// Unconditional branch (immediate)
//------------------------------------------------------------------------------

        tbz x5, #0, somewhere
        tbz xzr, #63, elsewhere
        tbnz x5, #45, nowhere

// CHECK: tbz    w5, #0, somewhere       // encoding: [0bAAA00101,A,0b00000AAA,0x36]
// CHECK:                                //   fixup A - offset: 0, value: somewhere, kind: fixup_aarch64_pcrel_branch14
// CHECK: tbz    xzr, #63, elsewhere     // encoding: [0bAAA11111,A,0b11111AAA,0xb6]
// CHECK:                                //   fixup A - offset: 0, value: elsewhere, kind: fixup_aarch64_pcrel_branch14
// CHECK: tbnz   x5, #45, nowhere        // encoding: [0bAAA00101,A,0b01101AAA,0xb7]
// CHECK:                                //   fixup A - offset: 0, value: nowhere, kind: fixup_aarch64_pcrel_branch14


        tbnz w3, #2, there
        tbnz wzr, #31, nowhere
        tbz w5, #12, anywhere

// CHECK: tbnz    w3, #2, there           // encoding: [0bAAA00011,A,0b00010AAA,0x37]
// CHECK:                                 //   fixup A - offset: 0, value: there, kind: fixup_aarch64_pcrel_branch14
// CHECK: tbnz    wzr, #31, nowhere       // encoding: [0bAAA11111,A,0b11111AAA,0x37]
// CHECK:                                 //   fixup A - offset: 0, value: nowhere, kind: fixup_aarch64_pcrel_branch14
// CHECK: tbz     w5, #12, anywhere       // encoding: [0bAAA00101,A,0b01100AAA,0x36]
// CHECK:                                 //   fixup A - offset: 0, value: anywhere, kind: fixup_aarch64_pcrel_branch14

//------------------------------------------------------------------------------
// Unconditional branch (immediate)
//------------------------------------------------------------------------------

        b somewhere
        bl elsewhere

// CHECK: b    somewhere               // encoding: [A,A,A,0b000101AA]
// CHECK:                              //   fixup A - offset: 0, value: somewhere, kind: fixup_aarch64_pcrel_branch26
// CHECK: bl    elsewhere               // encoding: [A,A,A,0b100101AA]
// CHECK:                               //   fixup A - offset: 0, value: elsewhere, kind: fixup_aarch64_pcrel_call26

        b #4
        bl #0
        b #134217724
        bl #-134217728
// CHECK: b       #4                      // encoding: [0x01,0x00,0x00,0x14]
// CHECK: bl      #0                      // encoding: [0x00,0x00,0x00,0x94]
// CHECK: b       #134217724              // encoding: [0xff,0xff,0xff,0x15]
// CHECK: bl      #-134217728             // encoding: [0x00,0x00,0x00,0x96]

//------------------------------------------------------------------------------
// Unconditional branch (register)
//------------------------------------------------------------------------------

        br x20
        blr xzr
        ret x10
// CHECK: br       x20                        // encoding: [0x80,0x02,0x1f,0xd6]
// CHECK: blr      xzr                        // encoding: [0xe0,0x03,0x3f,0xd6]
// CHECK: ret      x10                        // encoding: [0x40,0x01,0x5f,0xd6]

        ret
        eret
        drps
// CHECK: ret                                 // encoding: [0xc0,0x03,0x5f,0xd6]
// CHECK: eret                                // encoding: [0xe0,0x03,0x9f,0xd6]
// CHECK: drps                                // encoding: [0xe0,0x03,0xbf,0xd6]