authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2020-01-04 17:50:19-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
log51372200d36ee0f78d32a5f7c7f8d4faf6dc9a35
treeb8fd11a951d71444eefdbcaebb6e4301f61f5fdb
parentc1798cb632a1f8b7a0824a9e5d58cd8c30e4f373
signature Commit is signed but in an unrecognized format.

Filter out non-features


8 files changed, 2783 insertions(+), 5781 deletions(-)

lib/std/target/aarch64.zig+191-817
...@@ -887,573 +887,6 @@ pub const feature_zczGp = Feature{...@@ -887,573 +887,6 @@ pub const feature_zczGp = Feature{
887 },887 },
888};888};
889889
890pub const feature_v81a = Feature{
891 .name = "v8.1a",
892 .description = "Support ARM v8.1a instructions",
893 .subfeatures = &[_]*const Feature {
894 &feature_lor,
895 &feature_pan,
896 &feature_lse,
897 &feature_rdm,
898 &feature_vh,
899 &feature_crc,
900 },
901};
902
903pub const feature_v82a = Feature{
904 .name = "v8.2a",
905 .description = "Support ARM v8.2a instructions",
906 .subfeatures = &[_]*const Feature {
907 &feature_ccpp,
908 &feature_lor,
909 &feature_pan,
910 &feature_lse,
911 &feature_rdm,
912 &feature_vh,
913 &feature_ras,
914 &feature_crc,
915 &feature_uaops,
916 },
917};
918
919pub const feature_v83a = Feature{
920 .name = "v8.3a",
921 .description = "Support ARM v8.3a instructions",
922 .subfeatures = &[_]*const Feature {
923 &feature_ccpp,
924 &feature_lor,
925 &feature_pan,
926 &feature_lse,
927 &feature_rdm,
928 &feature_ras,
929 &feature_vh,
930 &feature_fpArmv8,
931 &feature_uaops,
932 &feature_rcpc,
933 &feature_ccidx,
934 &feature_crc,
935 &feature_pa,
936 },
937};
938
939pub const feature_v84a = Feature{
940 .name = "v8.4a",
941 .description = "Support ARM v8.4a instructions",
942 .subfeatures = &[_]*const Feature {
943 &feature_ccpp,
944 &feature_lor,
945 &feature_dotprod,
946 &feature_fpArmv8,
947 &feature_crc,
948 &feature_fmi,
949 &feature_tracev84,
950 &feature_tlbRmi,
951 &feature_rdm,
952 &feature_ccidx,
953 &feature_mpam,
954 &feature_pan,
955 &feature_lse,
956 &feature_rcpc,
957 &feature_uaops,
958 &feature_sel2,
959 &feature_nv,
960 &feature_am,
961 &feature_dit,
962 &feature_vh,
963 &feature_ras,
964 &feature_pa,
965 },
966};
967
968pub const feature_v85a = Feature{
969 .name = "v8.5a",
970 .description = "Support ARM v8.5a instructions",
971 .subfeatures = &[_]*const Feature {
972 &feature_ccpp,
973 &feature_lor,
974 &feature_dotprod,
975 &feature_fpArmv8,
976 &feature_ssbs,
977 &feature_crc,
978 &feature_fmi,
979 &feature_bti,
980 &feature_tracev84,
981 &feature_tlbRmi,
982 &feature_fptoint,
983 &feature_rdm,
984 &feature_sb,
985 &feature_ccidx,
986 &feature_mpam,
987 &feature_pan,
988 &feature_lse,
989 &feature_predres,
990 &feature_rcpc,
991 &feature_uaops,
992 &feature_sel2,
993 &feature_nv,
994 &feature_am,
995 &feature_dit,
996 &feature_specrestrict,
997 &feature_vh,
998 &feature_altnzcv,
999 &feature_ras,
1000 &feature_ccdp,
1001 &feature_pa,
1002 },
1003};
1004
1005pub const feature_a35 = Feature{
1006 .name = "a35",
1007 .description = "Cortex-A35 ARM processors",
1008 .subfeatures = &[_]*const Feature {
1009 &feature_fpArmv8,
1010 &feature_perfmon,
1011 &feature_crc,
1012 },
1013};
1014
1015pub const feature_a53 = Feature{
1016 .name = "a53",
1017 .description = "Cortex-A53 ARM processors",
1018 .subfeatures = &[_]*const Feature {
1019 &feature_useAa,
1020 &feature_balanceFpOps,
1021 &feature_fuseAes,
1022 &feature_usePostraScheduler,
1023 &feature_perfmon,
1024 &feature_fpArmv8,
1025 &feature_customCheapAsMove,
1026 &feature_crc,
1027 },
1028};
1029
1030pub const feature_a55 = Feature{
1031 .name = "a55",
1032 .description = "Cortex-A55 ARM processors",
1033 .subfeatures = &[_]*const Feature {
1034 &feature_fuseAes,
1035 &feature_ccpp,
1036 &feature_lor,
1037 &feature_dotprod,
1038 &feature_perfmon,
1039 &feature_pan,
1040 &feature_lse,
1041 &feature_rdm,
1042 &feature_ras,
1043 &feature_vh,
1044 &feature_fpArmv8,
1045 &feature_uaops,
1046 &feature_rcpc,
1047 &feature_crc,
1048 },
1049};
1050
1051pub const feature_a57 = Feature{
1052 .name = "a57",
1053 .description = "Cortex-A57 ARM processors",
1054 .subfeatures = &[_]*const Feature {
1055 &feature_fuseLiterals,
1056 &feature_balanceFpOps,
1057 &feature_predictableSelectExpensive,
1058 &feature_fuseAes,
1059 &feature_usePostraScheduler,
1060 &feature_perfmon,
1061 &feature_fpArmv8,
1062 &feature_customCheapAsMove,
1063 &feature_crc,
1064 },
1065};
1066
1067pub const feature_a65 = Feature{
1068 .name = "a65",
1069 .description = "Cortex-A65 ARM processors",
1070 .subfeatures = &[_]*const Feature {
1071 &feature_rcpc,
1072 &feature_ccpp,
1073 &feature_lor,
1074 &feature_dotprod,
1075 &feature_pan,
1076 &feature_lse,
1077 &feature_rdm,
1078 &feature_vh,
1079 &feature_fpArmv8,
1080 &feature_uaops,
1081 &feature_ras,
1082 &feature_ssbs,
1083 &feature_crc,
1084 },
1085};
1086
1087pub const feature_a72 = Feature{
1088 .name = "a72",
1089 .description = "Cortex-A72 ARM processors",
1090 .subfeatures = &[_]*const Feature {
1091 &feature_fpArmv8,
1092 &feature_fuseAes,
1093 &feature_crc,
1094 &feature_perfmon,
1095 },
1096};
1097
1098pub const feature_a73 = Feature{
1099 .name = "a73",
1100 .description = "Cortex-A73 ARM processors",
1101 .subfeatures = &[_]*const Feature {
1102 &feature_fpArmv8,
1103 &feature_fuseAes,
1104 &feature_crc,
1105 &feature_perfmon,
1106 },
1107};
1108
1109pub const feature_a75 = Feature{
1110 .name = "a75",
1111 .description = "Cortex-A75 ARM processors",
1112 .subfeatures = &[_]*const Feature {
1113 &feature_fuseAes,
1114 &feature_ccpp,
1115 &feature_lor,
1116 &feature_dotprod,
1117 &feature_perfmon,
1118 &feature_pan,
1119 &feature_lse,
1120 &feature_rdm,
1121 &feature_ras,
1122 &feature_vh,
1123 &feature_fpArmv8,
1124 &feature_uaops,
1125 &feature_rcpc,
1126 &feature_crc,
1127 },
1128};
1129
1130pub const feature_a76 = Feature{
1131 .name = "a76",
1132 .description = "Cortex-A76 ARM processors",
1133 .subfeatures = &[_]*const Feature {
1134 &feature_ccpp,
1135 &feature_lor,
1136 &feature_dotprod,
1137 &feature_pan,
1138 &feature_lse,
1139 &feature_rdm,
1140 &feature_ras,
1141 &feature_vh,
1142 &feature_fpArmv8,
1143 &feature_uaops,
1144 &feature_rcpc,
1145 &feature_ssbs,
1146 &feature_crc,
1147 },
1148};
1149
1150pub const feature_cyclone = Feature{
1151 .name = "cyclone",
1152 .description = "Cyclone",
1153 .subfeatures = &[_]*const Feature {
1154 &feature_zczFpWorkaround,
1155 &feature_fuseAes,
1156 &feature_zcm,
1157 &feature_arithCbzFusion,
1158 &feature_perfmon,
1159 &feature_alternateSextloadCvtF32Pattern,
1160 &feature_arithBccFusion,
1161 &feature_disableLatencySchedHeuristic,
1162 &feature_zczGp,
1163 &feature_fuseCryptoEor,
1164 &feature_fpArmv8,
1165 &feature_zczFp,
1166 },
1167};
1168
1169pub const feature_exynosm1 = Feature{
1170 .name = "exynosm1",
1171 .description = "Samsung Exynos-M1 processors",
1172 .subfeatures = &[_]*const Feature {
1173 &feature_useReciprocalSquareRoot,
1174 &feature_fuseAes,
1175 &feature_usePostraScheduler,
1176 &feature_slowMisaligned128store,
1177 &feature_perfmon,
1178 &feature_fpArmv8,
1179 &feature_customCheapAsMove,
1180 &feature_force32bitJumpTables,
1181 &feature_zczFp,
1182 &feature_crc,
1183 &feature_slowPaired128,
1184 },
1185};
1186
1187pub const feature_exynosm2 = Feature{
1188 .name = "exynosm2",
1189 .description = "Samsung Exynos-M2 processors",
1190 .subfeatures = &[_]*const Feature {
1191 &feature_fuseAes,
1192 &feature_usePostraScheduler,
1193 &feature_slowMisaligned128store,
1194 &feature_perfmon,
1195 &feature_fpArmv8,
1196 &feature_customCheapAsMove,
1197 &feature_force32bitJumpTables,
1198 &feature_zczFp,
1199 &feature_crc,
1200 &feature_slowPaired128,
1201 },
1202};
1203
1204pub const feature_exynosm3 = Feature{
1205 .name = "exynosm3",
1206 .description = "Samsung Exynos-M3 processors",
1207 .subfeatures = &[_]*const Feature {
1208 &feature_fuseLiterals,
1209 &feature_predictableSelectExpensive,
1210 &feature_fuseAes,
1211 &feature_fuseAddress,
1212 &feature_fuseCsel,
1213 &feature_usePostraScheduler,
1214 &feature_perfmon,
1215 &feature_fpArmv8,
1216 &feature_customCheapAsMove,
1217 &feature_lslFast,
1218 &feature_force32bitJumpTables,
1219 &feature_zczFp,
1220 &feature_crc,
1221 },
1222};
1223
1224pub const feature_exynosm4 = Feature{
1225 .name = "exynosm4",
1226 .description = "Samsung Exynos-M4 processors",
1227 .subfeatures = &[_]*const Feature {
1228 &feature_fuseLiterals,
1229 &feature_fuseAes,
1230 &feature_ccpp,
1231 &feature_lor,
1232 &feature_dotprod,
1233 &feature_fpArmv8,
1234 &feature_customCheapAsMove,
1235 &feature_lslFast,
1236 &feature_crc,
1237 &feature_fuseAddress,
1238 &feature_arithCbzFusion,
1239 &feature_perfmon,
1240 &feature_arithBccFusion,
1241 &feature_zczGp,
1242 &feature_rdm,
1243 &feature_force32bitJumpTables,
1244 &feature_pan,
1245 &feature_lse,
1246 &feature_fuseCsel,
1247 &feature_uaops,
1248 &feature_fuseArithLogic,
1249 &feature_usePostraScheduler,
1250 &feature_vh,
1251 &feature_ras,
1252 &feature_zczFp,
1253 },
1254};
1255
1256pub const feature_falkor = Feature{
1257 .name = "falkor",
1258 .description = "Qualcomm Falkor processors",
1259 .subfeatures = &[_]*const Feature {
1260 &feature_predictableSelectExpensive,
1261 &feature_usePostraScheduler,
1262 &feature_perfmon,
1263 &feature_slowStrqroStore,
1264 &feature_rdm,
1265 &feature_zczGp,
1266 &feature_fpArmv8,
1267 &feature_customCheapAsMove,
1268 &feature_lslFast,
1269 &feature_zczFp,
1270 &feature_crc,
1271 },
1272};
1273
1274pub const feature_kryo = Feature{
1275 .name = "kryo",
1276 .description = "Qualcomm Kryo processors",
1277 .subfeatures = &[_]*const Feature {
1278 &feature_predictableSelectExpensive,
1279 &feature_usePostraScheduler,
1280 &feature_perfmon,
1281 &feature_zczGp,
1282 &feature_fpArmv8,
1283 &feature_customCheapAsMove,
1284 &feature_lslFast,
1285 &feature_zczFp,
1286 &feature_crc,
1287 },
1288};
1289
1290pub const feature_neoversee1 = Feature{
1291 .name = "neoversee1",
1292 .description = "Neoverse E1 ARM processors",
1293 .subfeatures = &[_]*const Feature {
1294 &feature_ccpp,
1295 &feature_lor,
1296 &feature_dotprod,
1297 &feature_pan,
1298 &feature_lse,
1299 &feature_rdm,
1300 &feature_ras,
1301 &feature_vh,
1302 &feature_fpArmv8,
1303 &feature_uaops,
1304 &feature_rcpc,
1305 &feature_ssbs,
1306 &feature_crc,
1307 },
1308};
1309
1310pub const feature_neoversen1 = Feature{
1311 .name = "neoversen1",
1312 .description = "Neoverse N1 ARM processors",
1313 .subfeatures = &[_]*const Feature {
1314 &feature_ccpp,
1315 &feature_lor,
1316 &feature_dotprod,
1317 &feature_spe,
1318 &feature_pan,
1319 &feature_lse,
1320 &feature_rdm,
1321 &feature_ras,
1322 &feature_vh,
1323 &feature_fpArmv8,
1324 &feature_uaops,
1325 &feature_rcpc,
1326 &feature_ssbs,
1327 &feature_crc,
1328 },
1329};
1330
1331pub const feature_saphira = Feature{
1332 .name = "saphira",
1333 .description = "Qualcomm Saphira processors",
1334 .subfeatures = &[_]*const Feature {
1335 &feature_ccpp,
1336 &feature_lor,
1337 &feature_dotprod,
1338 &feature_fpArmv8,
1339 &feature_customCheapAsMove,
1340 &feature_lslFast,
1341 &feature_crc,
1342 &feature_fmi,
1343 &feature_predictableSelectExpensive,
1344 &feature_tracev84,
1345 &feature_tlbRmi,
1346 &feature_perfmon,
1347 &feature_zczGp,
1348 &feature_rdm,
1349 &feature_ccidx,
1350 &feature_mpam,
1351 &feature_pan,
1352 &feature_lse,
1353 &feature_rcpc,
1354 &feature_uaops,
1355 &feature_sel2,
1356 &feature_usePostraScheduler,
1357 &feature_nv,
1358 &feature_am,
1359 &feature_spe,
1360 &feature_dit,
1361 &feature_vh,
1362 &feature_ras,
1363 &feature_zczFp,
1364 &feature_pa,
1365 },
1366};
1367
1368pub const feature_tsv110 = Feature{
1369 .name = "tsv110",
1370 .description = "HiSilicon TS-V110 processors",
1371 .subfeatures = &[_]*const Feature {
1372 &feature_fuseAes,
1373 &feature_usePostraScheduler,
1374 &feature_ccpp,
1375 &feature_lor,
1376 &feature_dotprod,
1377 &feature_uaops,
1378 &feature_perfmon,
1379 &feature_spe,
1380 &feature_pan,
1381 &feature_lse,
1382 &feature_rdm,
1383 &feature_vh,
1384 &feature_fpArmv8,
1385 &feature_customCheapAsMove,
1386 &feature_ras,
1387 &feature_crc,
1388 },
1389};
1390
1391pub const feature_thunderx = Feature{
1392 .name = "thunderx",
1393 .description = "Cavium ThunderX processors",
1394 .subfeatures = &[_]*const Feature {
1395 &feature_predictableSelectExpensive,
1396 &feature_usePostraScheduler,
1397 &feature_perfmon,
1398 &feature_fpArmv8,
1399 &feature_crc,
1400 },
1401};
1402
1403pub const feature_thunderx2t99 = Feature{
1404 .name = "thunderx2t99",
1405 .description = "Cavium ThunderX2 processors",
1406 .subfeatures = &[_]*const Feature {
1407 &feature_predictableSelectExpensive,
1408 &feature_usePostraScheduler,
1409 &feature_lor,
1410 &feature_lse,
1411 &feature_pan,
1412 &feature_arithBccFusion,
1413 &feature_rdm,
1414 &feature_aggressiveFma,
1415 &feature_vh,
1416 &feature_fpArmv8,
1417 &feature_crc,
1418 },
1419};
1420
1421pub const feature_thunderxt81 = Feature{
1422 .name = "thunderxt81",
1423 .description = "Cavium ThunderX processors",
1424 .subfeatures = &[_]*const Feature {
1425 &feature_predictableSelectExpensive,
1426 &feature_usePostraScheduler,
1427 &feature_perfmon,
1428 &feature_fpArmv8,
1429 &feature_crc,
1430 },
1431};
1432
1433pub const feature_thunderxt83 = Feature{
1434 .name = "thunderxt83",
1435 .description = "Cavium ThunderX processors",
1436 .subfeatures = &[_]*const Feature {
1437 &feature_predictableSelectExpensive,
1438 &feature_usePostraScheduler,
1439 &feature_perfmon,
1440 &feature_fpArmv8,
1441 &feature_crc,
1442 },
1443};
1444
1445pub const feature_thunderxt88 = Feature{
1446 .name = "thunderxt88",
1447 .description = "Cavium ThunderX processors",
1448 .subfeatures = &[_]*const Feature {
1449 &feature_predictableSelectExpensive,
1450 &feature_usePostraScheduler,
1451 &feature_perfmon,
1452 &feature_fpArmv8,
1453 &feature_crc,
1454 },
1455};
1456
1457pub const features = &[_]*const Feature {890pub const features = &[_]*const Feature {
1458 &feature_aes,891 &feature_aes,
1459 &feature_am,892 &feature_am,
...@@ -1578,55 +1011,24 @@ pub const features = &[_]*const Feature {...@@ -1578,55 +1011,24 @@ pub const features = &[_]*const Feature {
1578 &feature_zczFp,1011 &feature_zczFp,
1579 &feature_zczFpWorkaround,1012 &feature_zczFpWorkaround,
1580 &feature_zczGp,1013 &feature_zczGp,
1581 &feature_v81a,
1582 &feature_v82a,
1583 &feature_v83a,
1584 &feature_v84a,
1585 &feature_v85a,
1586 &feature_a35,
1587 &feature_a53,
1588 &feature_a55,
1589 &feature_a57,
1590 &feature_a65,
1591 &feature_a72,
1592 &feature_a73,
1593 &feature_a75,
1594 &feature_a76,
1595 &feature_cyclone,
1596 &feature_exynosm1,
1597 &feature_exynosm2,
1598 &feature_exynosm3,
1599 &feature_exynosm4,
1600 &feature_falkor,
1601 &feature_kryo,
1602 &feature_neoversee1,
1603 &feature_neoversen1,
1604 &feature_saphira,
1605 &feature_tsv110,
1606 &feature_thunderx,
1607 &feature_thunderx2t99,
1608 &feature_thunderxt81,
1609 &feature_thunderxt83,
1610 &feature_thunderxt88,
1611};1014};
16121015
1613pub const cpu_appleLatest = Cpu{1016pub const cpu_appleLatest = Cpu{
1614 .name = "apple-latest",1017 .name = "apple-latest",
1615 .llvm_name = "apple-latest",1018 .llvm_name = "apple-latest",
1616 .subfeatures = &[_]*const Feature {1019 .subfeatures = &[_]*const Feature {
1020 &feature_arithCbzFusion,
1021 &feature_alternateSextloadCvtF32Pattern,
1617 &feature_zczFpWorkaround,1022 &feature_zczFpWorkaround,
1618 &feature_fuseAes,1023 &feature_fuseCryptoEor,
1024 &feature_disableLatencySchedHeuristic,
1619 &feature_zcm,1025 &feature_zcm,
1620 &feature_arithCbzFusion,1026 &feature_zczFp,
1621 &feature_perfmon,1027 &feature_perfmon,
1622 &feature_alternateSextloadCvtF32Pattern,1028 &feature_fpArmv8,
1029 &feature_fuseAes,
1623 &feature_arithBccFusion,1030 &feature_arithBccFusion,
1624 &feature_disableLatencySchedHeuristic,
1625 &feature_zczGp,1031 &feature_zczGp,
1626 &feature_fuseCryptoEor,
1627 &feature_fpArmv8,
1628 &feature_zczFp,
1629 &feature_cyclone,
1630 },1032 },
1631};1033};
16321034
...@@ -1637,7 +1039,6 @@ pub const cpu_cortexA35 = Cpu{...@@ -1637,7 +1039,6 @@ pub const cpu_cortexA35 = Cpu{
1637 &feature_fpArmv8,1039 &feature_fpArmv8,
1638 &feature_perfmon,1040 &feature_perfmon,
1639 &feature_crc,1041 &feature_crc,
1640 &feature_a35,
1641 },1042 },
1642};1043};
16431044
...@@ -1645,15 +1046,14 @@ pub const cpu_cortexA53 = Cpu{...@@ -1645,15 +1046,14 @@ pub const cpu_cortexA53 = Cpu{
1645 .name = "cortex-a53",1046 .name = "cortex-a53",
1646 .llvm_name = "cortex-a53",1047 .llvm_name = "cortex-a53",
1647 .subfeatures = &[_]*const Feature {1048 .subfeatures = &[_]*const Feature {
1648 &feature_useAa,
1649 &feature_balanceFpOps,
1650 &feature_fuseAes,
1651 &feature_usePostraScheduler,1049 &feature_usePostraScheduler,
1050 &feature_crc,
1652 &feature_perfmon,1051 &feature_perfmon,
1052 &feature_fuseAes,
1053 &feature_useAa,
1653 &feature_fpArmv8,1054 &feature_fpArmv8,
1055 &feature_balanceFpOps,
1654 &feature_customCheapAsMove,1056 &feature_customCheapAsMove,
1655 &feature_crc,
1656 &feature_a53,
1657 },1057 },
1658};1058};
16591059
...@@ -1661,21 +1061,20 @@ pub const cpu_cortexA55 = Cpu{...@@ -1661,21 +1061,20 @@ pub const cpu_cortexA55 = Cpu{
1661 .name = "cortex-a55",1061 .name = "cortex-a55",
1662 .llvm_name = "cortex-a55",1062 .llvm_name = "cortex-a55",
1663 .subfeatures = &[_]*const Feature {1063 .subfeatures = &[_]*const Feature {
1664 &feature_fuseAes,1064 &feature_crc,
1065 &feature_dotprod,
1665 &feature_ccpp,1066 &feature_ccpp,
1067 &feature_uaops,
1068 &feature_rcpc,
1069 &feature_lse,
1666 &feature_lor,1070 &feature_lor,
1667 &feature_dotprod,
1668 &feature_perfmon,
1669 &feature_pan,1071 &feature_pan,
1670 &feature_lse,
1671 &feature_rdm,1072 &feature_rdm,
1073 &feature_perfmon,
1672 &feature_ras,1074 &feature_ras,
1673 &feature_vh,1075 &feature_vh,
1674 &feature_fpArmv8,1076 &feature_fpArmv8,
1675 &feature_uaops,1077 &feature_fuseAes,
1676 &feature_rcpc,
1677 &feature_crc,
1678 &feature_a55,
1679 },1078 },
1680};1079};
16811080
...@@ -1683,16 +1082,15 @@ pub const cpu_cortexA57 = Cpu{...@@ -1683,16 +1082,15 @@ pub const cpu_cortexA57 = Cpu{
1683 .name = "cortex-a57",1082 .name = "cortex-a57",
1684 .llvm_name = "cortex-a57",1083 .llvm_name = "cortex-a57",
1685 .subfeatures = &[_]*const Feature {1084 .subfeatures = &[_]*const Feature {
1686 &feature_fuseLiterals,
1687 &feature_balanceFpOps,
1688 &feature_predictableSelectExpensive,
1689 &feature_fuseAes,
1690 &feature_usePostraScheduler,1085 &feature_usePostraScheduler,
1086 &feature_crc,
1087 &feature_fuseLiterals,
1691 &feature_perfmon,1088 &feature_perfmon,
1089 &feature_fuseAes,
1692 &feature_fpArmv8,1090 &feature_fpArmv8,
1091 &feature_balanceFpOps,
1693 &feature_customCheapAsMove,1092 &feature_customCheapAsMove,
1694 &feature_crc,1093 &feature_predictableSelectExpensive,
1695 &feature_a57,
1696 },1094 },
1697};1095};
16981096
...@@ -1700,20 +1098,19 @@ pub const cpu_cortexA65 = Cpu{...@@ -1700,20 +1098,19 @@ pub const cpu_cortexA65 = Cpu{
1700 .name = "cortex-a65",1098 .name = "cortex-a65",
1701 .llvm_name = "cortex-a65",1099 .llvm_name = "cortex-a65",
1702 .subfeatures = &[_]*const Feature {1100 .subfeatures = &[_]*const Feature {
1101 &feature_ssbs,
1102 &feature_dotprod,
1103 &feature_crc,
1104 &feature_uaops,
1703 &feature_rcpc,1105 &feature_rcpc,
1704 &feature_ccpp,1106 &feature_lse,
1705 &feature_lor,1107 &feature_lor,
1706 &feature_dotprod,
1707 &feature_pan,1108 &feature_pan,
1708 &feature_lse,
1709 &feature_rdm,1109 &feature_rdm,
1110 &feature_ras,
1710 &feature_vh,1111 &feature_vh,
1711 &feature_fpArmv8,1112 &feature_fpArmv8,
1712 &feature_uaops,1113 &feature_ccpp,
1713 &feature_ras,
1714 &feature_ssbs,
1715 &feature_crc,
1716 &feature_a65,
1717 },1114 },
1718};1115};
17191116
...@@ -1721,20 +1118,19 @@ pub const cpu_cortexA65ae = Cpu{...@@ -1721,20 +1118,19 @@ pub const cpu_cortexA65ae = Cpu{
1721 .name = "cortex-a65ae",1118 .name = "cortex-a65ae",
1722 .llvm_name = "cortex-a65ae",1119 .llvm_name = "cortex-a65ae",
1723 .subfeatures = &[_]*const Feature {1120 .subfeatures = &[_]*const Feature {
1121 &feature_ssbs,
1122 &feature_dotprod,
1123 &feature_crc,
1124 &feature_uaops,
1724 &feature_rcpc,1125 &feature_rcpc,
1725 &feature_ccpp,1126 &feature_lse,
1726 &feature_lor,1127 &feature_lor,
1727 &feature_dotprod,
1728 &feature_pan,1128 &feature_pan,
1729 &feature_lse,
1730 &feature_rdm,1129 &feature_rdm,
1130 &feature_ras,
1731 &feature_vh,1131 &feature_vh,
1732 &feature_fpArmv8,1132 &feature_fpArmv8,
1733 &feature_uaops,1133 &feature_ccpp,
1734 &feature_ras,
1735 &feature_ssbs,
1736 &feature_crc,
1737 &feature_a65,
1738 },1134 },
1739};1135};
17401136
...@@ -1744,9 +1140,8 @@ pub const cpu_cortexA72 = Cpu{...@@ -1744,9 +1140,8 @@ pub const cpu_cortexA72 = Cpu{
1744 .subfeatures = &[_]*const Feature {1140 .subfeatures = &[_]*const Feature {
1745 &feature_fpArmv8,1141 &feature_fpArmv8,
1746 &feature_fuseAes,1142 &feature_fuseAes,
1747 &feature_crc,
1748 &feature_perfmon,1143 &feature_perfmon,
1749 &feature_a72,1144 &feature_crc,
1750 },1145 },
1751};1146};
17521147
...@@ -1756,9 +1151,8 @@ pub const cpu_cortexA73 = Cpu{...@@ -1756,9 +1151,8 @@ pub const cpu_cortexA73 = Cpu{
1756 .subfeatures = &[_]*const Feature {1151 .subfeatures = &[_]*const Feature {
1757 &feature_fpArmv8,1152 &feature_fpArmv8,
1758 &feature_fuseAes,1153 &feature_fuseAes,
1759 &feature_crc,
1760 &feature_perfmon,1154 &feature_perfmon,
1761 &feature_a73,1155 &feature_crc,
1762 },1156 },
1763};1157};
17641158
...@@ -1766,21 +1160,20 @@ pub const cpu_cortexA75 = Cpu{...@@ -1766,21 +1160,20 @@ pub const cpu_cortexA75 = Cpu{
1766 .name = "cortex-a75",1160 .name = "cortex-a75",
1767 .llvm_name = "cortex-a75",1161 .llvm_name = "cortex-a75",
1768 .subfeatures = &[_]*const Feature {1162 .subfeatures = &[_]*const Feature {
1769 &feature_fuseAes,1163 &feature_crc,
1164 &feature_dotprod,
1770 &feature_ccpp,1165 &feature_ccpp,
1166 &feature_uaops,
1167 &feature_rcpc,
1168 &feature_lse,
1771 &feature_lor,1169 &feature_lor,
1772 &feature_dotprod,
1773 &feature_perfmon,
1774 &feature_pan,1170 &feature_pan,
1775 &feature_lse,
1776 &feature_rdm,1171 &feature_rdm,
1172 &feature_perfmon,
1777 &feature_ras,1173 &feature_ras,
1778 &feature_vh,1174 &feature_vh,
1779 &feature_fpArmv8,1175 &feature_fpArmv8,
1780 &feature_uaops,1176 &feature_fuseAes,
1781 &feature_rcpc,
1782 &feature_crc,
1783 &feature_a75,
1784 },1177 },
1785};1178};
17861179
...@@ -1788,20 +1181,19 @@ pub const cpu_cortexA76 = Cpu{...@@ -1788,20 +1181,19 @@ pub const cpu_cortexA76 = Cpu{
1788 .name = "cortex-a76",1181 .name = "cortex-a76",
1789 .llvm_name = "cortex-a76",1182 .llvm_name = "cortex-a76",
1790 .subfeatures = &[_]*const Feature {1183 .subfeatures = &[_]*const Feature {
1791 &feature_ccpp,1184 &feature_crc,
1792 &feature_lor,1185 &feature_ssbs,
1793 &feature_dotprod,1186 &feature_dotprod,
1794 &feature_pan,1187 &feature_uaops,
1188 &feature_rcpc,
1795 &feature_lse,1189 &feature_lse,
1190 &feature_lor,
1191 &feature_pan,
1796 &feature_rdm,1192 &feature_rdm,
1797 &feature_ras,1193 &feature_ras,
1798 &feature_vh,1194 &feature_vh,
1799 &feature_fpArmv8,1195 &feature_fpArmv8,
1800 &feature_uaops,1196 &feature_ccpp,
1801 &feature_rcpc,
1802 &feature_ssbs,
1803 &feature_crc,
1804 &feature_a76,
1805 },1197 },
1806};1198};
18071199
...@@ -1809,20 +1201,19 @@ pub const cpu_cortexA76ae = Cpu{...@@ -1809,20 +1201,19 @@ pub const cpu_cortexA76ae = Cpu{
1809 .name = "cortex-a76ae",1201 .name = "cortex-a76ae",
1810 .llvm_name = "cortex-a76ae",1202 .llvm_name = "cortex-a76ae",
1811 .subfeatures = &[_]*const Feature {1203 .subfeatures = &[_]*const Feature {
1812 &feature_ccpp,1204 &feature_crc,
1813 &feature_lor,1205 &feature_ssbs,
1814 &feature_dotprod,1206 &feature_dotprod,
1815 &feature_pan,1207 &feature_uaops,
1208 &feature_rcpc,
1816 &feature_lse,1209 &feature_lse,
1210 &feature_lor,
1211 &feature_pan,
1817 &feature_rdm,1212 &feature_rdm,
1818 &feature_ras,1213 &feature_ras,
1819 &feature_vh,1214 &feature_vh,
1820 &feature_fpArmv8,1215 &feature_fpArmv8,
1821 &feature_uaops,1216 &feature_ccpp,
1822 &feature_rcpc,
1823 &feature_ssbs,
1824 &feature_crc,
1825 &feature_a76,
1826 },1217 },
1827};1218};
18281219
...@@ -1830,19 +1221,18 @@ pub const cpu_cyclone = Cpu{...@@ -1830,19 +1221,18 @@ pub const cpu_cyclone = Cpu{
1830 .name = "cyclone",1221 .name = "cyclone",
1831 .llvm_name = "cyclone",1222 .llvm_name = "cyclone",
1832 .subfeatures = &[_]*const Feature {1223 .subfeatures = &[_]*const Feature {
1224 &feature_arithCbzFusion,
1225 &feature_alternateSextloadCvtF32Pattern,
1833 &feature_zczFpWorkaround,1226 &feature_zczFpWorkaround,
1834 &feature_fuseAes,1227 &feature_fuseCryptoEor,
1228 &feature_disableLatencySchedHeuristic,
1835 &feature_zcm,1229 &feature_zcm,
1836 &feature_arithCbzFusion,1230 &feature_zczFp,
1837 &feature_perfmon,1231 &feature_perfmon,
1838 &feature_alternateSextloadCvtF32Pattern,1232 &feature_fpArmv8,
1233 &feature_fuseAes,
1839 &feature_arithBccFusion,1234 &feature_arithBccFusion,
1840 &feature_disableLatencySchedHeuristic,
1841 &feature_zczGp,1235 &feature_zczGp,
1842 &feature_fuseCryptoEor,
1843 &feature_fpArmv8,
1844 &feature_zczFp,
1845 &feature_cyclone,
1846 },1236 },
1847};1237};
18481238
...@@ -1851,17 +1241,16 @@ pub const cpu_exynosM1 = Cpu{...@@ -1851,17 +1241,16 @@ pub const cpu_exynosM1 = Cpu{
1851 .llvm_name = "exynos-m1",1241 .llvm_name = "exynos-m1",
1852 .subfeatures = &[_]*const Feature {1242 .subfeatures = &[_]*const Feature {
1853 &feature_useReciprocalSquareRoot,1243 &feature_useReciprocalSquareRoot,
1854 &feature_fuseAes,
1855 &feature_usePostraScheduler,1244 &feature_usePostraScheduler,
1245 &feature_crc,
1246 &feature_zczFp,
1247 &feature_slowPaired128,
1248 &feature_force32bitJumpTables,
1856 &feature_slowMisaligned128store,1249 &feature_slowMisaligned128store,
1857 &feature_perfmon,1250 &feature_perfmon,
1858 &feature_fpArmv8,1251 &feature_fpArmv8,
1252 &feature_fuseAes,
1859 &feature_customCheapAsMove,1253 &feature_customCheapAsMove,
1860 &feature_force32bitJumpTables,
1861 &feature_zczFp,
1862 &feature_crc,
1863 &feature_slowPaired128,
1864 &feature_exynosm1,
1865 },1254 },
1866};1255};
18671256
...@@ -1869,17 +1258,16 @@ pub const cpu_exynosM2 = Cpu{...@@ -1869,17 +1258,16 @@ pub const cpu_exynosM2 = Cpu{
1869 .name = "exynos-m2",1258 .name = "exynos-m2",
1870 .llvm_name = "exynos-m2",1259 .llvm_name = "exynos-m2",
1871 .subfeatures = &[_]*const Feature {1260 .subfeatures = &[_]*const Feature {
1872 &feature_fuseAes,
1873 &feature_usePostraScheduler,1261 &feature_usePostraScheduler,
1262 &feature_crc,
1263 &feature_zczFp,
1264 &feature_slowPaired128,
1265 &feature_force32bitJumpTables,
1874 &feature_slowMisaligned128store,1266 &feature_slowMisaligned128store,
1875 &feature_perfmon,1267 &feature_perfmon,
1876 &feature_fpArmv8,1268 &feature_fpArmv8,
1269 &feature_fuseAes,
1877 &feature_customCheapAsMove,1270 &feature_customCheapAsMove,
1878 &feature_force32bitJumpTables,
1879 &feature_zczFp,
1880 &feature_crc,
1881 &feature_slowPaired128,
1882 &feature_exynosm2,
1883 },1271 },
1884};1272};
18851273
...@@ -1887,20 +1275,19 @@ pub const cpu_exynosM3 = Cpu{...@@ -1887,20 +1275,19 @@ pub const cpu_exynosM3 = Cpu{
1887 .name = "exynos-m3",1275 .name = "exynos-m3",
1888 .llvm_name = "exynos-m3",1276 .llvm_name = "exynos-m3",
1889 .subfeatures = &[_]*const Feature {1277 .subfeatures = &[_]*const Feature {
1890 &feature_fuseLiterals,
1891 &feature_predictableSelectExpensive,
1892 &feature_fuseAes,
1893 &feature_fuseAddress,1278 &feature_fuseAddress,
1894 &feature_fuseCsel,
1895 &feature_usePostraScheduler,1279 &feature_usePostraScheduler,
1280 &feature_crc,
1281 &feature_zczFp,
1282 &feature_fuseLiterals,
1283 &feature_lslFast,
1284 &feature_fuseCsel,
1285 &feature_force32bitJumpTables,
1896 &feature_perfmon,1286 &feature_perfmon,
1897 &feature_fpArmv8,1287 &feature_fpArmv8,
1288 &feature_fuseAes,
1898 &feature_customCheapAsMove,1289 &feature_customCheapAsMove,
1899 &feature_lslFast,1290 &feature_predictableSelectExpensive,
1900 &feature_force32bitJumpTables,
1901 &feature_zczFp,
1902 &feature_crc,
1903 &feature_exynosm3,
1904 },1291 },
1905};1292};
19061293
...@@ -1909,31 +1296,30 @@ pub const cpu_exynosM4 = Cpu{...@@ -1909,31 +1296,30 @@ pub const cpu_exynosM4 = Cpu{
1909 .llvm_name = "exynos-m4",1296 .llvm_name = "exynos-m4",
1910 .subfeatures = &[_]*const Feature {1297 .subfeatures = &[_]*const Feature {
1911 &feature_fuseLiterals,1298 &feature_fuseLiterals,
1912 &feature_fuseAes,
1913 &feature_ccpp,
1914 &feature_lor,
1915 &feature_dotprod,
1916 &feature_fpArmv8,
1917 &feature_customCheapAsMove,
1918 &feature_lslFast,
1919 &feature_crc,
1920 &feature_fuseAddress,
1921 &feature_arithCbzFusion,
1922 &feature_perfmon,
1923 &feature_arithBccFusion,
1924 &feature_zczGp,
1925 &feature_rdm,
1926 &feature_force32bitJumpTables,
1927 &feature_pan,
1928 &feature_lse,
1929 &feature_fuseCsel,
1930 &feature_uaops,1299 &feature_uaops,
1300 &feature_fuseCsel,
1301 &feature_force32bitJumpTables,
1931 &feature_fuseArithLogic,1302 &feature_fuseArithLogic,
1932 &feature_usePostraScheduler,
1933 &feature_vh,1303 &feature_vh,
1304 &feature_arithBccFusion,
1305 &feature_zczGp,
1306 &feature_usePostraScheduler,
1307 &feature_dotprod,
1308 &feature_lse,
1309 &feature_pan,
1934 &feature_ras,1310 &feature_ras,
1311 &feature_fuseAes,
1312 &feature_fuseAddress,
1313 &feature_rdm,
1314 &feature_arithCbzFusion,
1315 &feature_crc,
1935 &feature_zczFp,1316 &feature_zczFp,
1936 &feature_exynosm4,1317 &feature_lslFast,
1318 &feature_lor,
1319 &feature_perfmon,
1320 &feature_fpArmv8,
1321 &feature_ccpp,
1322 &feature_customCheapAsMove,
1937 },1323 },
1938};1324};
19391325
...@@ -1942,31 +1328,30 @@ pub const cpu_exynosM5 = Cpu{...@@ -1942,31 +1328,30 @@ pub const cpu_exynosM5 = Cpu{
1942 .llvm_name = "exynos-m5",1328 .llvm_name = "exynos-m5",
1943 .subfeatures = &[_]*const Feature {1329 .subfeatures = &[_]*const Feature {
1944 &feature_fuseLiterals,1330 &feature_fuseLiterals,
1945 &feature_fuseAes,
1946 &feature_ccpp,
1947 &feature_lor,
1948 &feature_dotprod,
1949 &feature_fpArmv8,
1950 &feature_customCheapAsMove,
1951 &feature_lslFast,
1952 &feature_crc,
1953 &feature_fuseAddress,
1954 &feature_arithCbzFusion,
1955 &feature_perfmon,
1956 &feature_arithBccFusion,
1957 &feature_zczGp,
1958 &feature_rdm,
1959 &feature_force32bitJumpTables,
1960 &feature_pan,
1961 &feature_lse,
1962 &feature_fuseCsel,
1963 &feature_uaops,1331 &feature_uaops,
1332 &feature_fuseCsel,
1333 &feature_force32bitJumpTables,
1964 &feature_fuseArithLogic,1334 &feature_fuseArithLogic,
1965 &feature_usePostraScheduler,
1966 &feature_vh,1335 &feature_vh,
1336 &feature_arithBccFusion,
1337 &feature_zczGp,
1338 &feature_usePostraScheduler,
1339 &feature_dotprod,
1340 &feature_lse,
1341 &feature_pan,
1967 &feature_ras,1342 &feature_ras,
1343 &feature_fuseAes,
1344 &feature_fuseAddress,
1345 &feature_rdm,
1346 &feature_arithCbzFusion,
1347 &feature_crc,
1968 &feature_zczFp,1348 &feature_zczFp,
1969 &feature_exynosm4,1349 &feature_lslFast,
1350 &feature_lor,
1351 &feature_perfmon,
1352 &feature_fpArmv8,
1353 &feature_ccpp,
1354 &feature_customCheapAsMove,
1970 },1355 },
1971};1356};
19721357
...@@ -1974,18 +1359,17 @@ pub const cpu_falkor = Cpu{...@@ -1974,18 +1359,17 @@ pub const cpu_falkor = Cpu{
1974 .name = "falkor",1359 .name = "falkor",
1975 .llvm_name = "falkor",1360 .llvm_name = "falkor",
1976 .subfeatures = &[_]*const Feature {1361 .subfeatures = &[_]*const Feature {
1977 &feature_predictableSelectExpensive,
1978 &feature_usePostraScheduler,1362 &feature_usePostraScheduler,
1979 &feature_perfmon,1363 &feature_crc,
1364 &feature_zczFp,
1365 &feature_lslFast,
1980 &feature_slowStrqroStore,1366 &feature_slowStrqroStore,
1981 &feature_rdm,1367 &feature_rdm,
1982 &feature_zczGp,1368 &feature_perfmon,
1983 &feature_fpArmv8,1369 &feature_fpArmv8,
1370 &feature_zczGp,
1984 &feature_customCheapAsMove,1371 &feature_customCheapAsMove,
1985 &feature_lslFast,1372 &feature_predictableSelectExpensive,
1986 &feature_zczFp,
1987 &feature_crc,
1988 &feature_falkor,
1989 },1373 },
1990};1374};
19911375
...@@ -2007,16 +1391,15 @@ pub const cpu_kryo = Cpu{...@@ -2007,16 +1391,15 @@ pub const cpu_kryo = Cpu{
2007 .name = "kryo",1391 .name = "kryo",
2008 .llvm_name = "kryo",1392 .llvm_name = "kryo",
2009 .subfeatures = &[_]*const Feature {1393 .subfeatures = &[_]*const Feature {
2010 &feature_predictableSelectExpensive,
2011 &feature_usePostraScheduler,1394 &feature_usePostraScheduler,
1395 &feature_crc,
1396 &feature_zczFp,
1397 &feature_lslFast,
2012 &feature_perfmon,1398 &feature_perfmon,
2013 &feature_zczGp,
2014 &feature_fpArmv8,1399 &feature_fpArmv8,
1400 &feature_zczGp,
2015 &feature_customCheapAsMove,1401 &feature_customCheapAsMove,
2016 &feature_lslFast,1402 &feature_predictableSelectExpensive,
2017 &feature_zczFp,
2018 &feature_crc,
2019 &feature_kryo,
2020 },1403 },
2021};1404};
20221405
...@@ -2024,20 +1407,19 @@ pub const cpu_neoverseE1 = Cpu{...@@ -2024,20 +1407,19 @@ pub const cpu_neoverseE1 = Cpu{
2024 .name = "neoverse-e1",1407 .name = "neoverse-e1",
2025 .llvm_name = "neoverse-e1",1408 .llvm_name = "neoverse-e1",
2026 .subfeatures = &[_]*const Feature {1409 .subfeatures = &[_]*const Feature {
2027 &feature_ccpp,1410 &feature_crc,
2028 &feature_lor,1411 &feature_ssbs,
2029 &feature_dotprod,1412 &feature_dotprod,
2030 &feature_pan,1413 &feature_uaops,
1414 &feature_rcpc,
2031 &feature_lse,1415 &feature_lse,
1416 &feature_lor,
1417 &feature_pan,
2032 &feature_rdm,1418 &feature_rdm,
2033 &feature_ras,1419 &feature_ras,
2034 &feature_vh,1420 &feature_vh,
2035 &feature_fpArmv8,1421 &feature_fpArmv8,
2036 &feature_uaops,1422 &feature_ccpp,
2037 &feature_rcpc,
2038 &feature_ssbs,
2039 &feature_crc,
2040 &feature_neoversee1,
2041 },1423 },
2042};1424};
20431425
...@@ -2045,21 +1427,20 @@ pub const cpu_neoverseN1 = Cpu{...@@ -2045,21 +1427,20 @@ pub const cpu_neoverseN1 = Cpu{
2045 .name = "neoverse-n1",1427 .name = "neoverse-n1",
2046 .llvm_name = "neoverse-n1",1428 .llvm_name = "neoverse-n1",
2047 .subfeatures = &[_]*const Feature {1429 .subfeatures = &[_]*const Feature {
2048 &feature_ccpp,1430 &feature_ssbs,
2049 &feature_lor,
2050 &feature_dotprod,1431 &feature_dotprod,
1432 &feature_crc,
1433 &feature_uaops,
1434 &feature_rcpc,
1435 &feature_lse,
2051 &feature_spe,1436 &feature_spe,
1437 &feature_lor,
2052 &feature_pan,1438 &feature_pan,
2053 &feature_lse,
2054 &feature_rdm,1439 &feature_rdm,
2055 &feature_ras,1440 &feature_ras,
2056 &feature_vh,1441 &feature_vh,
2057 &feature_fpArmv8,1442 &feature_fpArmv8,
2058 &feature_uaops,1443 &feature_ccpp,
2059 &feature_rcpc,
2060 &feature_ssbs,
2061 &feature_crc,
2062 &feature_neoversen1,
2063 },1444 },
2064};1445};
20651446
...@@ -2067,37 +1448,36 @@ pub const cpu_saphira = Cpu{...@@ -2067,37 +1448,36 @@ pub const cpu_saphira = Cpu{
2067 .name = "saphira",1448 .name = "saphira",
2068 .llvm_name = "saphira",1449 .llvm_name = "saphira",
2069 .subfeatures = &[_]*const Feature {1450 .subfeatures = &[_]*const Feature {
2070 &feature_ccpp,1451 &feature_uaops,
2071 &feature_lor,1452 &feature_vh,
2072 &feature_dotprod,1453 &feature_nv,
2073 &feature_fpArmv8,
2074 &feature_customCheapAsMove,
2075 &feature_lslFast,
2076 &feature_crc,
2077 &feature_fmi,
2078 &feature_predictableSelectExpensive,
2079 &feature_tracev84,
2080 &feature_tlbRmi,
2081 &feature_perfmon,
2082 &feature_zczGp,1454 &feature_zczGp,
2083 &feature_rdm,
2084 &feature_ccidx,
2085 &feature_mpam,1455 &feature_mpam,
2086 &feature_pan,1456 &feature_predictableSelectExpensive,
2087 &feature_lse,1457 &feature_am,
1458 &feature_usePostraScheduler,
1459 &feature_dotprod,
2088 &feature_rcpc,1460 &feature_rcpc,
2089 &feature_uaops,1461 &feature_lse,
1462 &feature_pan,
1463 &feature_ras,
1464 &feature_tlbRmi,
2090 &feature_sel2,1465 &feature_sel2,
2091 &feature_usePostraScheduler,1466 &feature_rdm,
2092 &feature_nv,1467 &feature_ccidx,
2093 &feature_am,
2094 &feature_spe,
2095 &feature_dit,1468 &feature_dit,
2096 &feature_vh,1469 &feature_crc,
2097 &feature_ras,
2098 &feature_zczFp,1470 &feature_zczFp,
1471 &feature_lslFast,
1472 &feature_fmi,
1473 &feature_spe,
1474 &feature_lor,
1475 &feature_perfmon,
1476 &feature_fpArmv8,
1477 &feature_ccpp,
1478 &feature_tracev84,
1479 &feature_customCheapAsMove,
2099 &feature_pa,1480 &feature_pa,
2100 &feature_saphira,
2101 },1481 },
2102};1482};
21031483
...@@ -2105,12 +1485,11 @@ pub const cpu_thunderx = Cpu{...@@ -2105,12 +1485,11 @@ pub const cpu_thunderx = Cpu{
2105 .name = "thunderx",1485 .name = "thunderx",
2106 .llvm_name = "thunderx",1486 .llvm_name = "thunderx",
2107 .subfeatures = &[_]*const Feature {1487 .subfeatures = &[_]*const Feature {
2108 &feature_predictableSelectExpensive,
2109 &feature_usePostraScheduler,1488 &feature_usePostraScheduler,
1489 &feature_crc,
2110 &feature_perfmon,1490 &feature_perfmon,
2111 &feature_fpArmv8,1491 &feature_fpArmv8,
2112 &feature_crc,1492 &feature_predictableSelectExpensive,
2113 &feature_thunderx,
2114 },1493 },
2115};1494};
21161495
...@@ -2118,18 +1497,17 @@ pub const cpu_thunderx2t99 = Cpu{...@@ -2118,18 +1497,17 @@ pub const cpu_thunderx2t99 = Cpu{
2118 .name = "thunderx2t99",1497 .name = "thunderx2t99",
2119 .llvm_name = "thunderx2t99",1498 .llvm_name = "thunderx2t99",
2120 .subfeatures = &[_]*const Feature {1499 .subfeatures = &[_]*const Feature {
2121 &feature_predictableSelectExpensive,
2122 &feature_usePostraScheduler,1500 &feature_usePostraScheduler,
2123 &feature_lor,1501 &feature_crc,
2124 &feature_lse,1502 &feature_lse,
1503 &feature_lor,
1504 &feature_aggressiveFma,
2125 &feature_pan,1505 &feature_pan,
2126 &feature_arithBccFusion,
2127 &feature_rdm,1506 &feature_rdm,
2128 &feature_aggressiveFma,
2129 &feature_vh,1507 &feature_vh,
2130 &feature_fpArmv8,1508 &feature_fpArmv8,
2131 &feature_crc,1509 &feature_arithBccFusion,
2132 &feature_thunderx2t99,1510 &feature_predictableSelectExpensive,
2133 },1511 },
2134};1512};
21351513
...@@ -2137,12 +1515,11 @@ pub const cpu_thunderxt81 = Cpu{...@@ -2137,12 +1515,11 @@ pub const cpu_thunderxt81 = Cpu{
2137 .name = "thunderxt81",1515 .name = "thunderxt81",
2138 .llvm_name = "thunderxt81",1516 .llvm_name = "thunderxt81",
2139 .subfeatures = &[_]*const Feature {1517 .subfeatures = &[_]*const Feature {
2140 &feature_predictableSelectExpensive,
2141 &feature_usePostraScheduler,1518 &feature_usePostraScheduler,
1519 &feature_crc,
2142 &feature_perfmon,1520 &feature_perfmon,
2143 &feature_fpArmv8,1521 &feature_fpArmv8,
2144 &feature_crc,1522 &feature_predictableSelectExpensive,
2145 &feature_thunderxt81,
2146 },1523 },
2147};1524};
21481525
...@@ -2150,12 +1527,11 @@ pub const cpu_thunderxt83 = Cpu{...@@ -2150,12 +1527,11 @@ pub const cpu_thunderxt83 = Cpu{
2150 .name = "thunderxt83",1527 .name = "thunderxt83",
2151 .llvm_name = "thunderxt83",1528 .llvm_name = "thunderxt83",
2152 .subfeatures = &[_]*const Feature {1529 .subfeatures = &[_]*const Feature {
2153 &feature_predictableSelectExpensive,
2154 &feature_usePostraScheduler,1530 &feature_usePostraScheduler,
1531 &feature_crc,
2155 &feature_perfmon,1532 &feature_perfmon,
2156 &feature_fpArmv8,1533 &feature_fpArmv8,
2157 &feature_crc,1534 &feature_predictableSelectExpensive,
2158 &feature_thunderxt83,
2159 },1535 },
2160};1536};
21611537
...@@ -2163,12 +1539,11 @@ pub const cpu_thunderxt88 = Cpu{...@@ -2163,12 +1539,11 @@ pub const cpu_thunderxt88 = Cpu{
2163 .name = "thunderxt88",1539 .name = "thunderxt88",
2164 .llvm_name = "thunderxt88",1540 .llvm_name = "thunderxt88",
2165 .subfeatures = &[_]*const Feature {1541 .subfeatures = &[_]*const Feature {
2166 &feature_predictableSelectExpensive,
2167 &feature_usePostraScheduler,1542 &feature_usePostraScheduler,
1543 &feature_crc,
2168 &feature_perfmon,1544 &feature_perfmon,
2169 &feature_fpArmv8,1545 &feature_fpArmv8,
2170 &feature_crc,1546 &feature_predictableSelectExpensive,
2171 &feature_thunderxt88,
2172 },1547 },
2173};1548};
21741549
...@@ -2176,23 +1551,22 @@ pub const cpu_tsv110 = Cpu{...@@ -2176,23 +1551,22 @@ pub const cpu_tsv110 = Cpu{
2176 .name = "tsv110",1551 .name = "tsv110",
2177 .llvm_name = "tsv110",1552 .llvm_name = "tsv110",
2178 .subfeatures = &[_]*const Feature {1553 .subfeatures = &[_]*const Feature {
2179 &feature_fuseAes,
2180 &feature_usePostraScheduler,1554 &feature_usePostraScheduler,
2181 &feature_ccpp,1555 &feature_crc,
2182 &feature_lor,
2183 &feature_dotprod,1556 &feature_dotprod,
1557 &feature_ccpp,
2184 &feature_uaops,1558 &feature_uaops,
2185 &feature_perfmon,1559 &feature_lse,
1560 &feature_lor,
2186 &feature_spe,1561 &feature_spe,
2187 &feature_pan,1562 &feature_pan,
2188 &feature_lse,
2189 &feature_rdm,1563 &feature_rdm,
1564 &feature_perfmon,
1565 &feature_ras,
2190 &feature_vh,1566 &feature_vh,
2191 &feature_fpArmv8,1567 &feature_fpArmv8,
1568 &feature_fuseAes,
2192 &feature_customCheapAsMove,1569 &feature_customCheapAsMove,
2193 &feature_ras,
2194 &feature_crc,
2195 &feature_tsv110,
2196 },1570 },
2197};1571};
21981572
lib/std/target/amdgpu.zig+444-626
...@@ -312,43 +312,6 @@ pub const feature_gfx8Insts = Feature{...@@ -312,43 +312,6 @@ pub const feature_gfx8Insts = Feature{
312 },312 },
313};313};
314314
315pub const feature_gfx9 = Feature{
316 .name = "gfx9",
317 .description = "GFX9 GPU generation",
318 .subfeatures = &[_]*const Feature {
319 &feature_fp64,
320 &feature_vop3p,
321 &feature_sMemrealtime,
322 &feature_gfx8Insts,
323 &feature_dpp,
324 &feature_sdwaSdst,
325 &feature_ciInsts,
326 &feature_apertureRegs,
327 &feature_scalarStores,
328 &feature_intClampInsts,
329 &feature_gcn3Encoding,
330 &feature_flatScratchInsts,
331 &feature_gfx7Gfx8Gfx9Insts,
332 &feature_wavefrontsize64,
333 &feature_scalarAtomics,
334 &feature_sdwaScalar,
335 &feature_fastFmaf,
336 &feature_vgprIndexMode,
337 &feature_scalarFlatScratchInsts,
338 &feature_sdwa,
339 &feature_sdwaOmod,
340 &feature_localmemorysize65536,
341 &feature_flatAddressSpace,
342 &feature_addNoCarryInsts,
343 &feature_flatInstOffsets,
344 &feature_inv2piInlineImm,
345 &feature_gfx9Insts,
346 &feature_flatGlobalInsts,
347 &feature_BitInsts16,
348 &feature_r128A16,
349 },
350};
351
352pub const feature_gfx9Insts = Feature{315pub const feature_gfx9Insts = Feature{
353 .name = "gfx9-insts",316 .name = "gfx9-insts",
354 .description = "Additional instructions for GFX9+",317 .description = "Additional instructions for GFX9+",
...@@ -356,47 +319,6 @@ pub const feature_gfx9Insts = Feature{...@@ -356,47 +319,6 @@ pub const feature_gfx9Insts = Feature{
356 },319 },
357};320};
358321
359pub const feature_gfx10 = Feature{
360 .name = "gfx10",
361 .description = "GFX10 GPU generation",
362 .subfeatures = &[_]*const Feature {
363 &feature_registerBanking,
364 &feature_fp64,
365 &feature_vop3p,
366 &feature_sMemrealtime,
367 &feature_gfx8Insts,
368 &feature_dpp,
369 &feature_sdwaSdst,
370 &feature_ciInsts,
371 &feature_apertureRegs,
372 &feature_intClampInsts,
373 &feature_flatScratchInsts,
374 &feature_sdwaScalar,
375 &feature_fastFmaf,
376 &feature_pkFmacF16Inst,
377 &feature_vscnt,
378 &feature_movrel,
379 &feature_fmaMixInsts,
380 &feature_noSramEccSupport,
381 &feature_sdwa,
382 &feature_sdwaOmod,
383 &feature_vop3Literal,
384 &feature_dpp8,
385 &feature_gfx10Insts,
386 &feature_localmemorysize65536,
387 &feature_mimgR128,
388 &feature_flatAddressSpace,
389 &feature_addNoCarryInsts,
390 &feature_noDataDepHazard,
391 &feature_flatInstOffsets,
392 &feature_inv2piInlineImm,
393 &feature_gfx9Insts,
394 &feature_flatGlobalInsts,
395 &feature_BitInsts16,
396 &feature_noSdstCmpx,
397 },
398};
399
400pub const feature_gfx10Insts = Feature{322pub const feature_gfx10Insts = Feature{
401 .name = "gfx10-insts",323 .name = "gfx10-insts",
402 .description = "Additional instructions for GFX10+",324 .description = "Additional instructions for GFX10+",
...@@ -684,39 +606,6 @@ pub const feature_scalarStores = Feature{...@@ -684,39 +606,6 @@ pub const feature_scalarStores = Feature{
684 },606 },
685};607};
686608
687pub const feature_seaIslands = Feature{
688 .name = "sea-islands",
689 .description = "SEA_ISLANDS GPU generation",
690 .subfeatures = &[_]*const Feature {
691 &feature_trigReducedRange,
692 &feature_noSramEccSupport,
693 &feature_fp64,
694 &feature_movrel,
695 &feature_ciInsts,
696 &feature_localmemorysize65536,
697 &feature_mimgR128,
698 &feature_wavefrontsize64,
699 &feature_flatAddressSpace,
700 &feature_gfx7Gfx8Gfx9Insts,
701 },
702};
703
704pub const feature_southernIslands = Feature{
705 .name = "southern-islands",
706 .description = "SOUTHERN_ISLANDS GPU generation",
707 .subfeatures = &[_]*const Feature {
708 &feature_localmemorysize32768,
709 &feature_trigReducedRange,
710 &feature_noSramEccSupport,
711 &feature_fp64,
712 &feature_movrel,
713 &feature_ldsbankcount32,
714 &feature_noXnackSupport,
715 &feature_mimgR128,
716 &feature_wavefrontsize64,
717 },
718};
719
720pub const feature_trapHandler = Feature{609pub const feature_trapHandler = Feature{
721 .name = "trap-handler",610 .name = "trap-handler",
722 .description = "Trap handler support",611 .description = "Trap handler support",
...@@ -794,35 +683,6 @@ pub const feature_vcmpxPermlaneHazard = Feature{...@@ -794,35 +683,6 @@ pub const feature_vcmpxPermlaneHazard = Feature{
794 },683 },
795};684};
796685
797pub const feature_volcanicIslands = Feature{
798 .name = "volcanic-islands",
799 .description = "VOLCANIC_ISLANDS GPU generation",
800 .subfeatures = &[_]*const Feature {
801 &feature_fp64,
802 &feature_sMemrealtime,
803 &feature_gfx8Insts,
804 &feature_dpp,
805 &feature_ciInsts,
806 &feature_scalarStores,
807 &feature_intClampInsts,
808 &feature_gcn3Encoding,
809 &feature_gfx7Gfx8Gfx9Insts,
810 &feature_wavefrontsize64,
811 &feature_movrel,
812 &feature_vgprIndexMode,
813 &feature_trigReducedRange,
814 &feature_noSramEccSupport,
815 &feature_sdwa,
816 &feature_sdwaMav,
817 &feature_sdwaOutModsVopc,
818 &feature_localmemorysize65536,
819 &feature_mimgR128,
820 &feature_flatAddressSpace,
821 &feature_inv2piInlineImm,
822 &feature_BitInsts16,
823 },
824};
825
826pub const feature_vscnt = Feature{686pub const feature_vscnt = Feature{
827 .name = "vscnt",687 .name = "vscnt",
828 .description = "Has separate store vscnt counter",688 .description = "Has separate store vscnt counter",
...@@ -910,9 +770,7 @@ pub const features = &[_]*const Feature {...@@ -910,9 +770,7 @@ pub const features = &[_]*const Feature {
910 &feature_gcn3Encoding,770 &feature_gcn3Encoding,
911 &feature_gfx7Gfx8Gfx9Insts,771 &feature_gfx7Gfx8Gfx9Insts,
912 &feature_gfx8Insts,772 &feature_gfx8Insts,
913 &feature_gfx9,
914 &feature_gfx9Insts,773 &feature_gfx9Insts,
915 &feature_gfx10,
916 &feature_gfx10Insts,774 &feature_gfx10Insts,
917 &feature_instFwdPrefetchBug,775 &feature_instFwdPrefetchBug,
918 &feature_intClampInsts,776 &feature_intClampInsts,
...@@ -954,8 +812,6 @@ pub const features = &[_]*const Feature {...@@ -954,8 +812,6 @@ pub const features = &[_]*const Feature {
954 &feature_scalarAtomics,812 &feature_scalarAtomics,
955 &feature_scalarFlatScratchInsts,813 &feature_scalarFlatScratchInsts,
956 &feature_scalarStores,814 &feature_scalarStores,
957 &feature_seaIslands,
958 &feature_southernIslands,
959 &feature_trapHandler,815 &feature_trapHandler,
960 &feature_trigReducedRange,816 &feature_trigReducedRange,
961 &feature_unalignedBufferAccess,817 &feature_unalignedBufferAccess,
...@@ -967,7 +823,6 @@ pub const features = &[_]*const Feature {...@@ -967,7 +823,6 @@ pub const features = &[_]*const Feature {
967 &feature_vop3p,823 &feature_vop3p,
968 &feature_vcmpxExecWarHazard,824 &feature_vcmpxExecWarHazard,
969 &feature_vcmpxPermlaneHazard,825 &feature_vcmpxPermlaneHazard,
970 &feature_volcanicIslands,
971 &feature_vscnt,826 &feature_vscnt,
972 &feature_wavefrontsize16,827 &feature_wavefrontsize16,
973 &feature_wavefrontsize32,828 &feature_wavefrontsize32,
...@@ -983,17 +838,16 @@ pub const cpu_bonaire = Cpu{...@@ -983,17 +838,16 @@ pub const cpu_bonaire = Cpu{
983 &feature_codeObjectV3,838 &feature_codeObjectV3,
984 &feature_noXnackSupport,839 &feature_noXnackSupport,
985 &feature_ldsbankcount32,840 &feature_ldsbankcount32,
986 &feature_trigReducedRange,
987 &feature_noSramEccSupport,841 &feature_noSramEccSupport,
842 &feature_flatAddressSpace,
843 &feature_mimgR128,
844 &feature_trigReducedRange,
845 &feature_gfx7Gfx8Gfx9Insts,
846 &feature_ciInsts,
847 &feature_wavefrontsize64,
988 &feature_fp64,848 &feature_fp64,
989 &feature_movrel,849 &feature_movrel,
990 &feature_ciInsts,
991 &feature_localmemorysize65536,850 &feature_localmemorysize65536,
992 &feature_mimgR128,
993 &feature_wavefrontsize64,
994 &feature_flatAddressSpace,
995 &feature_gfx7Gfx8Gfx9Insts,
996 &feature_seaIslands,
997 },851 },
998};852};
999853
...@@ -1005,29 +859,28 @@ pub const cpu_carrizo = Cpu{...@@ -1005,29 +859,28 @@ pub const cpu_carrizo = Cpu{
1005 &feature_fastFmaf,859 &feature_fastFmaf,
1006 &feature_ldsbankcount32,860 &feature_ldsbankcount32,
1007 &feature_unpackedD16Vmem,861 &feature_unpackedD16Vmem,
1008 &feature_fp64,862 &feature_mimgR128,
1009 &feature_sMemrealtime,863 &feature_inv2piInlineImm,
1010 &feature_gfx8Insts,
1011 &feature_dpp,
1012 &feature_ciInsts,864 &feature_ciInsts,
865 &feature_vgprIndexMode,
1013 &feature_scalarStores,866 &feature_scalarStores,
1014 &feature_intClampInsts,
1015 &feature_gcn3Encoding,867 &feature_gcn3Encoding,
868 &feature_fp64,
869 &feature_dpp,
870 &feature_trigReducedRange,
1016 &feature_gfx7Gfx8Gfx9Insts,871 &feature_gfx7Gfx8Gfx9Insts,
1017 &feature_wavefrontsize64,872 &feature_sMemrealtime,
1018 &feature_movrel,873 &feature_movrel,
1019 &feature_vgprIndexMode,
1020 &feature_trigReducedRange,
1021 &feature_noSramEccSupport,
1022 &feature_sdwa,
1023 &feature_sdwaMav,
1024 &feature_sdwaOutModsVopc,
1025 &feature_localmemorysize65536,874 &feature_localmemorysize65536,
1026 &feature_mimgR128,875 &feature_noSramEccSupport,
876 &feature_gfx8Insts,
1027 &feature_flatAddressSpace,877 &feature_flatAddressSpace,
1028 &feature_inv2piInlineImm,
1029 &feature_BitInsts16,878 &feature_BitInsts16,
1030 &feature_volcanicIslands,879 &feature_sdwaMav,
880 &feature_sdwa,
881 &feature_sdwaOutModsVopc,
882 &feature_wavefrontsize64,
883 &feature_intClampInsts,
1031 &feature_xnack,884 &feature_xnack,
1032 &feature_halfRate64Ops,885 &feature_halfRate64Ops,
1033 },886 },
...@@ -1041,29 +894,28 @@ pub const cpu_fiji = Cpu{...@@ -1041,29 +894,28 @@ pub const cpu_fiji = Cpu{
1041 &feature_noXnackSupport,894 &feature_noXnackSupport,
1042 &feature_ldsbankcount32,895 &feature_ldsbankcount32,
1043 &feature_unpackedD16Vmem,896 &feature_unpackedD16Vmem,
1044 &feature_fp64,897 &feature_mimgR128,
1045 &feature_sMemrealtime,898 &feature_inv2piInlineImm,
1046 &feature_gfx8Insts,
1047 &feature_dpp,
1048 &feature_ciInsts,899 &feature_ciInsts,
900 &feature_vgprIndexMode,
1049 &feature_scalarStores,901 &feature_scalarStores,
1050 &feature_intClampInsts,
1051 &feature_gcn3Encoding,902 &feature_gcn3Encoding,
903 &feature_fp64,
904 &feature_dpp,
905 &feature_trigReducedRange,
1052 &feature_gfx7Gfx8Gfx9Insts,906 &feature_gfx7Gfx8Gfx9Insts,
1053 &feature_wavefrontsize64,907 &feature_sMemrealtime,
1054 &feature_movrel,908 &feature_movrel,
1055 &feature_vgprIndexMode,
1056 &feature_trigReducedRange,
1057 &feature_noSramEccSupport,
1058 &feature_sdwa,
1059 &feature_sdwaMav,
1060 &feature_sdwaOutModsVopc,
1061 &feature_localmemorysize65536,909 &feature_localmemorysize65536,
1062 &feature_mimgR128,910 &feature_noSramEccSupport,
911 &feature_gfx8Insts,
1063 &feature_flatAddressSpace,912 &feature_flatAddressSpace,
1064 &feature_inv2piInlineImm,
1065 &feature_BitInsts16,913 &feature_BitInsts16,
1066 &feature_volcanicIslands,914 &feature_sdwaMav,
915 &feature_sdwa,
916 &feature_sdwaOutModsVopc,
917 &feature_wavefrontsize64,
918 &feature_intClampInsts,
1067 },919 },
1068};920};
1069921
...@@ -1092,41 +944,40 @@ pub const cpu_gfx1010 = Cpu{...@@ -1092,41 +944,40 @@ pub const cpu_gfx1010 = Cpu{
1092 &feature_dlInsts,944 &feature_dlInsts,
1093 &feature_noXnackSupport,945 &feature_noXnackSupport,
1094 &feature_flatSegmentOffsetBug,946 &feature_flatSegmentOffsetBug,
1095 &feature_registerBanking,947 &feature_mimgR128,
1096 &feature_fp64,948 &feature_addNoCarryInsts,
1097 &feature_vop3p,949 &feature_dpp8,
1098 &feature_sMemrealtime,950 &feature_gfx9Insts,
1099 &feature_gfx8Insts,
1100 &feature_dpp,
1101 &feature_sdwaSdst,
1102 &feature_ciInsts,951 &feature_ciInsts,
952 &feature_inv2piInlineImm,
953 &feature_fastFmaf,
954 &feature_registerBanking,
1103 &feature_apertureRegs,955 &feature_apertureRegs,
1104 &feature_intClampInsts,956 &feature_flatGlobalInsts,
957 &feature_fp64,
958 &feature_vscnt,
1105 &feature_flatScratchInsts,959 &feature_flatScratchInsts,
960 &feature_dpp,
961 &feature_sMemrealtime,
962 &feature_vop3p,
963 &feature_flatInstOffsets,
1106 &feature_sdwaScalar,964 &feature_sdwaScalar,
1107 &feature_fastFmaf,965 &feature_sdwaSdst,
1108 &feature_pkFmacF16Inst,
1109 &feature_vscnt,
1110 &feature_movrel,966 &feature_movrel,
1111 &feature_fmaMixInsts,967 &feature_localmemorysize65536,
968 &feature_noSdstCmpx,
969 &feature_pkFmacF16Inst,
1112 &feature_noSramEccSupport,970 &feature_noSramEccSupport,
1113 &feature_sdwa,
1114 &feature_sdwaOmod,
1115 &feature_vop3Literal,971 &feature_vop3Literal,
1116 &feature_dpp8,972 &feature_gfx8Insts,
1117 &feature_gfx10Insts,
1118 &feature_localmemorysize65536,
1119 &feature_mimgR128,
1120 &feature_flatAddressSpace,973 &feature_flatAddressSpace,
1121 &feature_addNoCarryInsts,
1122 &feature_noDataDepHazard,
1123 &feature_flatInstOffsets,
1124 &feature_inv2piInlineImm,
1125 &feature_gfx9Insts,
1126 &feature_flatGlobalInsts,
1127 &feature_BitInsts16,974 &feature_BitInsts16,
1128 &feature_noSdstCmpx,975 &feature_gfx10Insts,
1129 &feature_gfx10,976 &feature_sdwa,
977 &feature_intClampInsts,
978 &feature_noDataDepHazard,
979 &feature_fmaMixInsts,
980 &feature_sdwaOmod,
1130 &feature_instFwdPrefetchBug,981 &feature_instFwdPrefetchBug,
1131 &feature_ldsbankcount32,982 &feature_ldsbankcount32,
1132 &feature_ldsBranchVmemWarHazard,983 &feature_ldsBranchVmemWarHazard,
...@@ -1157,41 +1008,40 @@ pub const cpu_gfx1011 = Cpu{...@@ -1157,41 +1008,40 @@ pub const cpu_gfx1011 = Cpu{
1157 &feature_dot5Insts,1008 &feature_dot5Insts,
1158 &feature_dot6Insts,1009 &feature_dot6Insts,
1159 &feature_flatSegmentOffsetBug,1010 &feature_flatSegmentOffsetBug,
1011 &feature_mimgR128,
1012 &feature_addNoCarryInsts,
1013 &feature_dpp8,
1014 &feature_gfx9Insts,
1015 &feature_ciInsts,
1016 &feature_inv2piInlineImm,
1017 &feature_fastFmaf,
1160 &feature_registerBanking,1018 &feature_registerBanking,
1019 &feature_apertureRegs,
1020 &feature_flatGlobalInsts,
1161 &feature_fp64,1021 &feature_fp64,
1162 &feature_vop3p,1022 &feature_vscnt,
1023 &feature_flatScratchInsts,
1024 &feature_dpp,
1163 &feature_sMemrealtime,1025 &feature_sMemrealtime,
1164 &feature_gfx8Insts,1026 &feature_vop3p,
1165 &feature_dpp,1027 &feature_flatInstOffsets,
1166 &feature_sdwaSdst,
1167 &feature_ciInsts,
1168 &feature_apertureRegs,
1169 &feature_intClampInsts,
1170 &feature_flatScratchInsts,
1171 &feature_sdwaScalar,1028 &feature_sdwaScalar,
1172 &feature_fastFmaf,1029 &feature_sdwaSdst,
1173 &feature_pkFmacF16Inst,
1174 &feature_vscnt,
1175 &feature_movrel,1030 &feature_movrel,
1176 &feature_fmaMixInsts,1031 &feature_localmemorysize65536,
1032 &feature_noSdstCmpx,
1033 &feature_pkFmacF16Inst,
1177 &feature_noSramEccSupport,1034 &feature_noSramEccSupport,
1178 &feature_sdwa,
1179 &feature_sdwaOmod,
1180 &feature_vop3Literal,1035 &feature_vop3Literal,
1181 &feature_dpp8,1036 &feature_gfx8Insts,
1182 &feature_gfx10Insts,
1183 &feature_localmemorysize65536,
1184 &feature_mimgR128,
1185 &feature_flatAddressSpace,1037 &feature_flatAddressSpace,
1186 &feature_addNoCarryInsts,
1187 &feature_noDataDepHazard,
1188 &feature_flatInstOffsets,
1189 &feature_inv2piInlineImm,
1190 &feature_gfx9Insts,
1191 &feature_flatGlobalInsts,
1192 &feature_BitInsts16,1038 &feature_BitInsts16,
1193 &feature_noSdstCmpx,1039 &feature_gfx10Insts,
1194 &feature_gfx10,1040 &feature_sdwa,
1041 &feature_intClampInsts,
1042 &feature_noDataDepHazard,
1043 &feature_fmaMixInsts,
1044 &feature_sdwaOmod,
1195 &feature_instFwdPrefetchBug,1045 &feature_instFwdPrefetchBug,
1196 &feature_ldsbankcount32,1046 &feature_ldsbankcount32,
1197 &feature_ldsBranchVmemWarHazard,1047 &feature_ldsBranchVmemWarHazard,
...@@ -1221,41 +1071,40 @@ pub const cpu_gfx1012 = Cpu{...@@ -1221,41 +1071,40 @@ pub const cpu_gfx1012 = Cpu{
1221 &feature_dot5Insts,1071 &feature_dot5Insts,
1222 &feature_dot6Insts,1072 &feature_dot6Insts,
1223 &feature_flatSegmentOffsetBug,1073 &feature_flatSegmentOffsetBug,
1224 &feature_registerBanking,1074 &feature_mimgR128,
1225 &feature_fp64,1075 &feature_addNoCarryInsts,
1226 &feature_vop3p,1076 &feature_dpp8,
1227 &feature_sMemrealtime,1077 &feature_gfx9Insts,
1228 &feature_gfx8Insts,
1229 &feature_dpp,
1230 &feature_sdwaSdst,
1231 &feature_ciInsts,1078 &feature_ciInsts,
1079 &feature_inv2piInlineImm,
1080 &feature_fastFmaf,
1081 &feature_registerBanking,
1232 &feature_apertureRegs,1082 &feature_apertureRegs,
1233 &feature_intClampInsts,1083 &feature_flatGlobalInsts,
1084 &feature_fp64,
1085 &feature_vscnt,
1234 &feature_flatScratchInsts,1086 &feature_flatScratchInsts,
1087 &feature_dpp,
1088 &feature_sMemrealtime,
1089 &feature_vop3p,
1090 &feature_flatInstOffsets,
1235 &feature_sdwaScalar,1091 &feature_sdwaScalar,
1236 &feature_fastFmaf,1092 &feature_sdwaSdst,
1237 &feature_pkFmacF16Inst,
1238 &feature_vscnt,
1239 &feature_movrel,1093 &feature_movrel,
1240 &feature_fmaMixInsts,1094 &feature_localmemorysize65536,
1095 &feature_noSdstCmpx,
1096 &feature_pkFmacF16Inst,
1241 &feature_noSramEccSupport,1097 &feature_noSramEccSupport,
1242 &feature_sdwa,
1243 &feature_sdwaOmod,
1244 &feature_vop3Literal,1098 &feature_vop3Literal,
1245 &feature_dpp8,1099 &feature_gfx8Insts,
1246 &feature_gfx10Insts,
1247 &feature_localmemorysize65536,
1248 &feature_mimgR128,
1249 &feature_flatAddressSpace,1100 &feature_flatAddressSpace,
1250 &feature_addNoCarryInsts,
1251 &feature_noDataDepHazard,
1252 &feature_flatInstOffsets,
1253 &feature_inv2piInlineImm,
1254 &feature_gfx9Insts,
1255 &feature_flatGlobalInsts,
1256 &feature_BitInsts16,1101 &feature_BitInsts16,
1257 &feature_noSdstCmpx,1102 &feature_gfx10Insts,
1258 &feature_gfx10,1103 &feature_sdwa,
1104 &feature_intClampInsts,
1105 &feature_noDataDepHazard,
1106 &feature_fmaMixInsts,
1107 &feature_sdwaOmod,
1259 &feature_instFwdPrefetchBug,1108 &feature_instFwdPrefetchBug,
1260 &feature_ldsbankcount32,1109 &feature_ldsbankcount32,
1261 &feature_ldsBranchVmemWarHazard,1110 &feature_ldsBranchVmemWarHazard,
...@@ -1282,14 +1131,13 @@ pub const cpu_gfx600 = Cpu{...@@ -1282,14 +1131,13 @@ pub const cpu_gfx600 = Cpu{
1282 &feature_noXnackSupport,1131 &feature_noXnackSupport,
1283 &feature_fastFmaf,1132 &feature_fastFmaf,
1284 &feature_ldsbankcount32,1133 &feature_ldsbankcount32,
1285 &feature_localmemorysize32768,
1286 &feature_trigReducedRange,
1287 &feature_noSramEccSupport,1134 &feature_noSramEccSupport,
1288 &feature_fp64,
1289 &feature_movrel,
1290 &feature_mimgR128,1135 &feature_mimgR128,
1136 &feature_trigReducedRange,
1291 &feature_wavefrontsize64,1137 &feature_wavefrontsize64,
1292 &feature_southernIslands,1138 &feature_localmemorysize32768,
1139 &feature_fp64,
1140 &feature_movrel,
1293 &feature_halfRate64Ops,1141 &feature_halfRate64Ops,
1294 },1142 },
1295};1143};
...@@ -1301,14 +1149,13 @@ pub const cpu_gfx601 = Cpu{...@@ -1301,14 +1149,13 @@ pub const cpu_gfx601 = Cpu{
1301 &feature_codeObjectV3,1149 &feature_codeObjectV3,
1302 &feature_noXnackSupport,1150 &feature_noXnackSupport,
1303 &feature_ldsbankcount32,1151 &feature_ldsbankcount32,
1304 &feature_localmemorysize32768,
1305 &feature_trigReducedRange,
1306 &feature_noSramEccSupport,1152 &feature_noSramEccSupport,
1307 &feature_fp64,
1308 &feature_movrel,
1309 &feature_mimgR128,1153 &feature_mimgR128,
1154 &feature_trigReducedRange,
1310 &feature_wavefrontsize64,1155 &feature_wavefrontsize64,
1311 &feature_southernIslands,1156 &feature_localmemorysize32768,
1157 &feature_fp64,
1158 &feature_movrel,
1312 },1159 },
1313};1160};
13141161
...@@ -1319,17 +1166,16 @@ pub const cpu_gfx700 = Cpu{...@@ -1319,17 +1166,16 @@ pub const cpu_gfx700 = Cpu{
1319 &feature_codeObjectV3,1166 &feature_codeObjectV3,
1320 &feature_noXnackSupport,1167 &feature_noXnackSupport,
1321 &feature_ldsbankcount32,1168 &feature_ldsbankcount32,
1322 &feature_trigReducedRange,
1323 &feature_noSramEccSupport,1169 &feature_noSramEccSupport,
1170 &feature_flatAddressSpace,
1171 &feature_mimgR128,
1172 &feature_trigReducedRange,
1173 &feature_gfx7Gfx8Gfx9Insts,
1174 &feature_ciInsts,
1175 &feature_wavefrontsize64,
1324 &feature_fp64,1176 &feature_fp64,
1325 &feature_movrel,1177 &feature_movrel,
1326 &feature_ciInsts,
1327 &feature_localmemorysize65536,1178 &feature_localmemorysize65536,
1328 &feature_mimgR128,
1329 &feature_wavefrontsize64,
1330 &feature_flatAddressSpace,
1331 &feature_gfx7Gfx8Gfx9Insts,
1332 &feature_seaIslands,
1333 },1179 },
1334};1180};
13351181
...@@ -1341,17 +1187,16 @@ pub const cpu_gfx701 = Cpu{...@@ -1341,17 +1187,16 @@ pub const cpu_gfx701 = Cpu{
1341 &feature_noXnackSupport,1187 &feature_noXnackSupport,
1342 &feature_fastFmaf,1188 &feature_fastFmaf,
1343 &feature_ldsbankcount32,1189 &feature_ldsbankcount32,
1344 &feature_trigReducedRange,
1345 &feature_noSramEccSupport,1190 &feature_noSramEccSupport,
1191 &feature_flatAddressSpace,
1192 &feature_mimgR128,
1193 &feature_trigReducedRange,
1194 &feature_gfx7Gfx8Gfx9Insts,
1195 &feature_ciInsts,
1196 &feature_wavefrontsize64,
1346 &feature_fp64,1197 &feature_fp64,
1347 &feature_movrel,1198 &feature_movrel,
1348 &feature_ciInsts,
1349 &feature_localmemorysize65536,1199 &feature_localmemorysize65536,
1350 &feature_mimgR128,
1351 &feature_wavefrontsize64,
1352 &feature_flatAddressSpace,
1353 &feature_gfx7Gfx8Gfx9Insts,
1354 &feature_seaIslands,
1355 &feature_halfRate64Ops,1200 &feature_halfRate64Ops,
1356 },1201 },
1357};1202};
...@@ -1364,17 +1209,16 @@ pub const cpu_gfx702 = Cpu{...@@ -1364,17 +1209,16 @@ pub const cpu_gfx702 = Cpu{
1364 &feature_noXnackSupport,1209 &feature_noXnackSupport,
1365 &feature_fastFmaf,1210 &feature_fastFmaf,
1366 &feature_ldsbankcount16,1211 &feature_ldsbankcount16,
1367 &feature_trigReducedRange,
1368 &feature_noSramEccSupport,1212 &feature_noSramEccSupport,
1213 &feature_flatAddressSpace,
1214 &feature_mimgR128,
1215 &feature_trigReducedRange,
1216 &feature_gfx7Gfx8Gfx9Insts,
1217 &feature_ciInsts,
1218 &feature_wavefrontsize64,
1369 &feature_fp64,1219 &feature_fp64,
1370 &feature_movrel,1220 &feature_movrel,
1371 &feature_ciInsts,
1372 &feature_localmemorysize65536,1221 &feature_localmemorysize65536,
1373 &feature_mimgR128,
1374 &feature_wavefrontsize64,
1375 &feature_flatAddressSpace,
1376 &feature_gfx7Gfx8Gfx9Insts,
1377 &feature_seaIslands,
1378 },1222 },
1379};1223};
13801224
...@@ -1385,17 +1229,16 @@ pub const cpu_gfx703 = Cpu{...@@ -1385,17 +1229,16 @@ pub const cpu_gfx703 = Cpu{
1385 &feature_codeObjectV3,1229 &feature_codeObjectV3,
1386 &feature_noXnackSupport,1230 &feature_noXnackSupport,
1387 &feature_ldsbankcount16,1231 &feature_ldsbankcount16,
1388 &feature_trigReducedRange,
1389 &feature_noSramEccSupport,1232 &feature_noSramEccSupport,
1233 &feature_flatAddressSpace,
1234 &feature_mimgR128,
1235 &feature_trigReducedRange,
1236 &feature_gfx7Gfx8Gfx9Insts,
1237 &feature_ciInsts,
1238 &feature_wavefrontsize64,
1390 &feature_fp64,1239 &feature_fp64,
1391 &feature_movrel,1240 &feature_movrel,
1392 &feature_ciInsts,
1393 &feature_localmemorysize65536,1241 &feature_localmemorysize65536,
1394 &feature_mimgR128,
1395 &feature_wavefrontsize64,
1396 &feature_flatAddressSpace,
1397 &feature_gfx7Gfx8Gfx9Insts,
1398 &feature_seaIslands,
1399 },1242 },
1400};1243};
14011244
...@@ -1406,17 +1249,16 @@ pub const cpu_gfx704 = Cpu{...@@ -1406,17 +1249,16 @@ pub const cpu_gfx704 = Cpu{
1406 &feature_codeObjectV3,1249 &feature_codeObjectV3,
1407 &feature_noXnackSupport,1250 &feature_noXnackSupport,
1408 &feature_ldsbankcount32,1251 &feature_ldsbankcount32,
1409 &feature_trigReducedRange,
1410 &feature_noSramEccSupport,1252 &feature_noSramEccSupport,
1253 &feature_flatAddressSpace,
1254 &feature_mimgR128,
1255 &feature_trigReducedRange,
1256 &feature_gfx7Gfx8Gfx9Insts,
1257 &feature_ciInsts,
1258 &feature_wavefrontsize64,
1411 &feature_fp64,1259 &feature_fp64,
1412 &feature_movrel,1260 &feature_movrel,
1413 &feature_ciInsts,
1414 &feature_localmemorysize65536,1261 &feature_localmemorysize65536,
1415 &feature_mimgR128,
1416 &feature_wavefrontsize64,
1417 &feature_flatAddressSpace,
1418 &feature_gfx7Gfx8Gfx9Insts,
1419 &feature_seaIslands,
1420 },1262 },
1421};1263};
14221264
...@@ -1428,29 +1270,28 @@ pub const cpu_gfx801 = Cpu{...@@ -1428,29 +1270,28 @@ pub const cpu_gfx801 = Cpu{
1428 &feature_fastFmaf,1270 &feature_fastFmaf,
1429 &feature_ldsbankcount32,1271 &feature_ldsbankcount32,
1430 &feature_unpackedD16Vmem,1272 &feature_unpackedD16Vmem,
1431 &feature_fp64,1273 &feature_mimgR128,
1432 &feature_sMemrealtime,1274 &feature_inv2piInlineImm,
1433 &feature_gfx8Insts,
1434 &feature_dpp,
1435 &feature_ciInsts,1275 &feature_ciInsts,
1276 &feature_vgprIndexMode,
1436 &feature_scalarStores,1277 &feature_scalarStores,
1437 &feature_intClampInsts,
1438 &feature_gcn3Encoding,1278 &feature_gcn3Encoding,
1279 &feature_fp64,
1280 &feature_dpp,
1281 &feature_trigReducedRange,
1439 &feature_gfx7Gfx8Gfx9Insts,1282 &feature_gfx7Gfx8Gfx9Insts,
1440 &feature_wavefrontsize64,1283 &feature_sMemrealtime,
1441 &feature_movrel,1284 &feature_movrel,
1442 &feature_vgprIndexMode,
1443 &feature_trigReducedRange,
1444 &feature_noSramEccSupport,
1445 &feature_sdwa,
1446 &feature_sdwaMav,
1447 &feature_sdwaOutModsVopc,
1448 &feature_localmemorysize65536,1285 &feature_localmemorysize65536,
1449 &feature_mimgR128,1286 &feature_noSramEccSupport,
1287 &feature_gfx8Insts,
1450 &feature_flatAddressSpace,1288 &feature_flatAddressSpace,
1451 &feature_inv2piInlineImm,
1452 &feature_BitInsts16,1289 &feature_BitInsts16,
1453 &feature_volcanicIslands,1290 &feature_sdwaMav,
1291 &feature_sdwa,
1292 &feature_sdwaOutModsVopc,
1293 &feature_wavefrontsize64,
1294 &feature_intClampInsts,
1454 &feature_xnack,1295 &feature_xnack,
1455 &feature_halfRate64Ops,1296 &feature_halfRate64Ops,
1456 },1297 },
...@@ -1465,29 +1306,28 @@ pub const cpu_gfx802 = Cpu{...@@ -1465,29 +1306,28 @@ pub const cpu_gfx802 = Cpu{
1465 &feature_ldsbankcount32,1306 &feature_ldsbankcount32,
1466 &feature_sgprInitBug,1307 &feature_sgprInitBug,
1467 &feature_unpackedD16Vmem,1308 &feature_unpackedD16Vmem,
1468 &feature_fp64,1309 &feature_mimgR128,
1469 &feature_sMemrealtime,1310 &feature_inv2piInlineImm,
1470 &feature_gfx8Insts,
1471 &feature_dpp,
1472 &feature_ciInsts,1311 &feature_ciInsts,
1312 &feature_vgprIndexMode,
1473 &feature_scalarStores,1313 &feature_scalarStores,
1474 &feature_intClampInsts,
1475 &feature_gcn3Encoding,1314 &feature_gcn3Encoding,
1315 &feature_fp64,
1316 &feature_dpp,
1317 &feature_trigReducedRange,
1476 &feature_gfx7Gfx8Gfx9Insts,1318 &feature_gfx7Gfx8Gfx9Insts,
1477 &feature_wavefrontsize64,1319 &feature_sMemrealtime,
1478 &feature_movrel,1320 &feature_movrel,
1479 &feature_vgprIndexMode,
1480 &feature_trigReducedRange,
1481 &feature_noSramEccSupport,
1482 &feature_sdwa,
1483 &feature_sdwaMav,
1484 &feature_sdwaOutModsVopc,
1485 &feature_localmemorysize65536,1321 &feature_localmemorysize65536,
1486 &feature_mimgR128,1322 &feature_noSramEccSupport,
1323 &feature_gfx8Insts,
1487 &feature_flatAddressSpace,1324 &feature_flatAddressSpace,
1488 &feature_inv2piInlineImm,
1489 &feature_BitInsts16,1325 &feature_BitInsts16,
1490 &feature_volcanicIslands,1326 &feature_sdwaMav,
1327 &feature_sdwa,
1328 &feature_sdwaOutModsVopc,
1329 &feature_wavefrontsize64,
1330 &feature_intClampInsts,
1491 },1331 },
1492};1332};
14931333
...@@ -1499,29 +1339,28 @@ pub const cpu_gfx803 = Cpu{...@@ -1499,29 +1339,28 @@ pub const cpu_gfx803 = Cpu{
1499 &feature_noXnackSupport,1339 &feature_noXnackSupport,
1500 &feature_ldsbankcount32,1340 &feature_ldsbankcount32,
1501 &feature_unpackedD16Vmem,1341 &feature_unpackedD16Vmem,
1502 &feature_fp64,1342 &feature_mimgR128,
1503 &feature_sMemrealtime,1343 &feature_inv2piInlineImm,
1504 &feature_gfx8Insts,
1505 &feature_dpp,
1506 &feature_ciInsts,1344 &feature_ciInsts,
1345 &feature_vgprIndexMode,
1507 &feature_scalarStores,1346 &feature_scalarStores,
1508 &feature_intClampInsts,
1509 &feature_gcn3Encoding,1347 &feature_gcn3Encoding,
1348 &feature_fp64,
1349 &feature_dpp,
1350 &feature_trigReducedRange,
1510 &feature_gfx7Gfx8Gfx9Insts,1351 &feature_gfx7Gfx8Gfx9Insts,
1511 &feature_wavefrontsize64,1352 &feature_sMemrealtime,
1512 &feature_movrel,1353 &feature_movrel,
1513 &feature_vgprIndexMode,
1514 &feature_trigReducedRange,
1515 &feature_noSramEccSupport,
1516 &feature_sdwa,
1517 &feature_sdwaMav,
1518 &feature_sdwaOutModsVopc,
1519 &feature_localmemorysize65536,1354 &feature_localmemorysize65536,
1520 &feature_mimgR128,1355 &feature_noSramEccSupport,
1356 &feature_gfx8Insts,
1521 &feature_flatAddressSpace,1357 &feature_flatAddressSpace,
1522 &feature_inv2piInlineImm,
1523 &feature_BitInsts16,1358 &feature_BitInsts16,
1524 &feature_volcanicIslands,1359 &feature_sdwaMav,
1360 &feature_sdwa,
1361 &feature_sdwaOutModsVopc,
1362 &feature_wavefrontsize64,
1363 &feature_intClampInsts,
1525 },1364 },
1526};1365};
15271366
...@@ -1531,29 +1370,28 @@ pub const cpu_gfx810 = Cpu{...@@ -1531,29 +1370,28 @@ pub const cpu_gfx810 = Cpu{
1531 .subfeatures = &[_]*const Feature {1370 .subfeatures = &[_]*const Feature {
1532 &feature_codeObjectV3,1371 &feature_codeObjectV3,
1533 &feature_ldsbankcount16,1372 &feature_ldsbankcount16,
1534 &feature_fp64,1373 &feature_mimgR128,
1535 &feature_sMemrealtime,1374 &feature_inv2piInlineImm,
1536 &feature_gfx8Insts,
1537 &feature_dpp,
1538 &feature_ciInsts,1375 &feature_ciInsts,
1376 &feature_vgprIndexMode,
1539 &feature_scalarStores,1377 &feature_scalarStores,
1540 &feature_intClampInsts,
1541 &feature_gcn3Encoding,1378 &feature_gcn3Encoding,
1542 &feature_gfx7Gfx8Gfx9Insts,1379 &feature_fp64,
1543 &feature_wavefrontsize64,1380 &feature_dpp,
1544 &feature_movrel,
1545 &feature_vgprIndexMode,
1546 &feature_trigReducedRange,1381 &feature_trigReducedRange,
1547 &feature_noSramEccSupport,1382 &feature_gfx7Gfx8Gfx9Insts,
1548 &feature_sdwa,1383 &feature_sMemrealtime,
1549 &feature_sdwaMav,1384 &feature_movrel,
1550 &feature_sdwaOutModsVopc,
1551 &feature_localmemorysize65536,1385 &feature_localmemorysize65536,
1552 &feature_mimgR128,1386 &feature_noSramEccSupport,
1387 &feature_gfx8Insts,
1553 &feature_flatAddressSpace,1388 &feature_flatAddressSpace,
1554 &feature_inv2piInlineImm,
1555 &feature_BitInsts16,1389 &feature_BitInsts16,
1556 &feature_volcanicIslands,1390 &feature_sdwaMav,
1391 &feature_sdwa,
1392 &feature_sdwaOutModsVopc,
1393 &feature_wavefrontsize64,
1394 &feature_intClampInsts,
1557 &feature_xnack,1395 &feature_xnack,
1558 },1396 },
1559};1397};
...@@ -1565,37 +1403,36 @@ pub const cpu_gfx900 = Cpu{...@@ -1565,37 +1403,36 @@ pub const cpu_gfx900 = Cpu{
1565 &feature_codeObjectV3,1403 &feature_codeObjectV3,
1566 &feature_noSramEccSupport,1404 &feature_noSramEccSupport,
1567 &feature_noXnackSupport,1405 &feature_noXnackSupport,
1568 &feature_fp64,1406 &feature_r128A16,
1569 &feature_vop3p,1407 &feature_addNoCarryInsts,
1570 &feature_sMemrealtime,1408 &feature_inv2piInlineImm,
1571 &feature_gfx8Insts,1409 &feature_gfx9Insts,
1572 &feature_dpp,
1573 &feature_sdwaSdst,
1574 &feature_ciInsts,1410 &feature_ciInsts,
1575 &feature_apertureRegs,1411 &feature_vgprIndexMode,
1412 &feature_fastFmaf,
1576 &feature_scalarStores,1413 &feature_scalarStores,
1577 &feature_intClampInsts,
1578 &feature_gcn3Encoding,1414 &feature_gcn3Encoding,
1415 &feature_apertureRegs,
1416 &feature_scalarAtomics,
1417 &feature_flatGlobalInsts,
1418 &feature_fp64,
1579 &feature_flatScratchInsts,1419 &feature_flatScratchInsts,
1420 &feature_dpp,
1421 &feature_scalarFlatScratchInsts,
1580 &feature_gfx7Gfx8Gfx9Insts,1422 &feature_gfx7Gfx8Gfx9Insts,
1581 &feature_wavefrontsize64,1423 &feature_sMemrealtime,
1582 &feature_scalarAtomics,1424 &feature_vop3p,
1425 &feature_flatInstOffsets,
1583 &feature_sdwaScalar,1426 &feature_sdwaScalar,
1584 &feature_fastFmaf,1427 &feature_sdwaSdst,
1585 &feature_vgprIndexMode,
1586 &feature_scalarFlatScratchInsts,
1587 &feature_sdwa,
1588 &feature_sdwaOmod,
1589 &feature_localmemorysize65536,1428 &feature_localmemorysize65536,
1429 &feature_gfx8Insts,
1590 &feature_flatAddressSpace,1430 &feature_flatAddressSpace,
1591 &feature_addNoCarryInsts,
1592 &feature_flatInstOffsets,
1593 &feature_inv2piInlineImm,
1594 &feature_gfx9Insts,
1595 &feature_flatGlobalInsts,
1596 &feature_BitInsts16,1431 &feature_BitInsts16,
1597 &feature_r128A16,1432 &feature_sdwa,
1598 &feature_gfx9,1433 &feature_wavefrontsize64,
1434 &feature_intClampInsts,
1435 &feature_sdwaOmod,
1599 &feature_ldsbankcount32,1436 &feature_ldsbankcount32,
1600 &feature_madMixInsts,1437 &feature_madMixInsts,
1601 },1438 },
...@@ -1607,37 +1444,36 @@ pub const cpu_gfx902 = Cpu{...@@ -1607,37 +1444,36 @@ pub const cpu_gfx902 = Cpu{
1607 .subfeatures = &[_]*const Feature {1444 .subfeatures = &[_]*const Feature {
1608 &feature_codeObjectV3,1445 &feature_codeObjectV3,
1609 &feature_noSramEccSupport,1446 &feature_noSramEccSupport,
1610 &feature_fp64,1447 &feature_r128A16,
1611 &feature_vop3p,1448 &feature_addNoCarryInsts,
1612 &feature_sMemrealtime,1449 &feature_inv2piInlineImm,
1613 &feature_gfx8Insts,1450 &feature_gfx9Insts,
1614 &feature_dpp,
1615 &feature_sdwaSdst,
1616 &feature_ciInsts,1451 &feature_ciInsts,
1617 &feature_apertureRegs,1452 &feature_vgprIndexMode,
1453 &feature_fastFmaf,
1618 &feature_scalarStores,1454 &feature_scalarStores,
1619 &feature_intClampInsts,
1620 &feature_gcn3Encoding,1455 &feature_gcn3Encoding,
1456 &feature_apertureRegs,
1457 &feature_scalarAtomics,
1458 &feature_flatGlobalInsts,
1459 &feature_fp64,
1621 &feature_flatScratchInsts,1460 &feature_flatScratchInsts,
1461 &feature_dpp,
1462 &feature_scalarFlatScratchInsts,
1622 &feature_gfx7Gfx8Gfx9Insts,1463 &feature_gfx7Gfx8Gfx9Insts,
1623 &feature_wavefrontsize64,1464 &feature_sMemrealtime,
1624 &feature_scalarAtomics,1465 &feature_vop3p,
1466 &feature_flatInstOffsets,
1625 &feature_sdwaScalar,1467 &feature_sdwaScalar,
1626 &feature_fastFmaf,1468 &feature_sdwaSdst,
1627 &feature_vgprIndexMode,
1628 &feature_scalarFlatScratchInsts,
1629 &feature_sdwa,
1630 &feature_sdwaOmod,
1631 &feature_localmemorysize65536,1469 &feature_localmemorysize65536,
1470 &feature_gfx8Insts,
1632 &feature_flatAddressSpace,1471 &feature_flatAddressSpace,
1633 &feature_addNoCarryInsts,
1634 &feature_flatInstOffsets,
1635 &feature_inv2piInlineImm,
1636 &feature_gfx9Insts,
1637 &feature_flatGlobalInsts,
1638 &feature_BitInsts16,1472 &feature_BitInsts16,
1639 &feature_r128A16,1473 &feature_sdwa,
1640 &feature_gfx9,1474 &feature_wavefrontsize64,
1475 &feature_intClampInsts,
1476 &feature_sdwaOmod,
1641 &feature_ldsbankcount32,1477 &feature_ldsbankcount32,
1642 &feature_madMixInsts,1478 &feature_madMixInsts,
1643 &feature_xnack,1479 &feature_xnack,
...@@ -1652,37 +1488,36 @@ pub const cpu_gfx904 = Cpu{...@@ -1652,37 +1488,36 @@ pub const cpu_gfx904 = Cpu{
1652 &feature_noSramEccSupport,1488 &feature_noSramEccSupport,
1653 &feature_noXnackSupport,1489 &feature_noXnackSupport,
1654 &feature_fmaMixInsts,1490 &feature_fmaMixInsts,
1655 &feature_fp64,1491 &feature_r128A16,
1656 &feature_vop3p,1492 &feature_addNoCarryInsts,
1657 &feature_sMemrealtime,1493 &feature_inv2piInlineImm,
1658 &feature_gfx8Insts,1494 &feature_gfx9Insts,
1659 &feature_dpp,
1660 &feature_sdwaSdst,
1661 &feature_ciInsts,1495 &feature_ciInsts,
1662 &feature_apertureRegs,1496 &feature_vgprIndexMode,
1497 &feature_fastFmaf,
1663 &feature_scalarStores,1498 &feature_scalarStores,
1664 &feature_intClampInsts,
1665 &feature_gcn3Encoding,1499 &feature_gcn3Encoding,
1500 &feature_apertureRegs,
1501 &feature_scalarAtomics,
1502 &feature_flatGlobalInsts,
1503 &feature_fp64,
1666 &feature_flatScratchInsts,1504 &feature_flatScratchInsts,
1505 &feature_dpp,
1506 &feature_scalarFlatScratchInsts,
1667 &feature_gfx7Gfx8Gfx9Insts,1507 &feature_gfx7Gfx8Gfx9Insts,
1668 &feature_wavefrontsize64,1508 &feature_sMemrealtime,
1669 &feature_scalarAtomics,1509 &feature_vop3p,
1510 &feature_flatInstOffsets,
1670 &feature_sdwaScalar,1511 &feature_sdwaScalar,
1671 &feature_fastFmaf,1512 &feature_sdwaSdst,
1672 &feature_vgprIndexMode,
1673 &feature_scalarFlatScratchInsts,
1674 &feature_sdwa,
1675 &feature_sdwaOmod,
1676 &feature_localmemorysize65536,1513 &feature_localmemorysize65536,
1514 &feature_gfx8Insts,
1677 &feature_flatAddressSpace,1515 &feature_flatAddressSpace,
1678 &feature_addNoCarryInsts,
1679 &feature_flatInstOffsets,
1680 &feature_inv2piInlineImm,
1681 &feature_gfx9Insts,
1682 &feature_flatGlobalInsts,
1683 &feature_BitInsts16,1516 &feature_BitInsts16,
1684 &feature_r128A16,1517 &feature_sdwa,
1685 &feature_gfx9,1518 &feature_wavefrontsize64,
1519 &feature_intClampInsts,
1520 &feature_sdwaOmod,
1686 &feature_ldsbankcount32,1521 &feature_ldsbankcount32,
1687 },1522 },
1688};1523};
...@@ -1697,37 +1532,36 @@ pub const cpu_gfx906 = Cpu{...@@ -1697,37 +1532,36 @@ pub const cpu_gfx906 = Cpu{
1697 &feature_dot1Insts,1532 &feature_dot1Insts,
1698 &feature_dot2Insts,1533 &feature_dot2Insts,
1699 &feature_fmaMixInsts,1534 &feature_fmaMixInsts,
1700 &feature_fp64,1535 &feature_r128A16,
1701 &feature_vop3p,1536 &feature_addNoCarryInsts,
1702 &feature_sMemrealtime,1537 &feature_inv2piInlineImm,
1703 &feature_gfx8Insts,1538 &feature_gfx9Insts,
1704 &feature_dpp,
1705 &feature_sdwaSdst,
1706 &feature_ciInsts,1539 &feature_ciInsts,
1707 &feature_apertureRegs,1540 &feature_vgprIndexMode,
1541 &feature_fastFmaf,
1708 &feature_scalarStores,1542 &feature_scalarStores,
1709 &feature_intClampInsts,
1710 &feature_gcn3Encoding,1543 &feature_gcn3Encoding,
1544 &feature_apertureRegs,
1545 &feature_scalarAtomics,
1546 &feature_flatGlobalInsts,
1547 &feature_fp64,
1711 &feature_flatScratchInsts,1548 &feature_flatScratchInsts,
1549 &feature_dpp,
1550 &feature_scalarFlatScratchInsts,
1712 &feature_gfx7Gfx8Gfx9Insts,1551 &feature_gfx7Gfx8Gfx9Insts,
1713 &feature_wavefrontsize64,1552 &feature_sMemrealtime,
1714 &feature_scalarAtomics,1553 &feature_vop3p,
1554 &feature_flatInstOffsets,
1715 &feature_sdwaScalar,1555 &feature_sdwaScalar,
1716 &feature_fastFmaf,1556 &feature_sdwaSdst,
1717 &feature_vgprIndexMode,
1718 &feature_scalarFlatScratchInsts,
1719 &feature_sdwa,
1720 &feature_sdwaOmod,
1721 &feature_localmemorysize65536,1557 &feature_localmemorysize65536,
1558 &feature_gfx8Insts,
1722 &feature_flatAddressSpace,1559 &feature_flatAddressSpace,
1723 &feature_addNoCarryInsts,
1724 &feature_flatInstOffsets,
1725 &feature_inv2piInlineImm,
1726 &feature_gfx9Insts,
1727 &feature_flatGlobalInsts,
1728 &feature_BitInsts16,1560 &feature_BitInsts16,
1729 &feature_r128A16,1561 &feature_sdwa,
1730 &feature_gfx9,1562 &feature_wavefrontsize64,
1563 &feature_intClampInsts,
1564 &feature_sdwaOmod,
1731 &feature_ldsbankcount32,1565 &feature_ldsbankcount32,
1732 &feature_halfRate64Ops,1566 &feature_halfRate64Ops,
1733 },1567 },
...@@ -1747,37 +1581,36 @@ pub const cpu_gfx908 = Cpu{...@@ -1747,37 +1581,36 @@ pub const cpu_gfx908 = Cpu{
1747 &feature_dot5Insts,1581 &feature_dot5Insts,
1748 &feature_dot6Insts,1582 &feature_dot6Insts,
1749 &feature_fmaMixInsts,1583 &feature_fmaMixInsts,
1750 &feature_fp64,1584 &feature_r128A16,
1751 &feature_vop3p,1585 &feature_addNoCarryInsts,
1752 &feature_sMemrealtime,1586 &feature_inv2piInlineImm,
1753 &feature_gfx8Insts,1587 &feature_gfx9Insts,
1754 &feature_dpp,
1755 &feature_sdwaSdst,
1756 &feature_ciInsts,1588 &feature_ciInsts,
1757 &feature_apertureRegs,1589 &feature_vgprIndexMode,
1590 &feature_fastFmaf,
1758 &feature_scalarStores,1591 &feature_scalarStores,
1759 &feature_intClampInsts,
1760 &feature_gcn3Encoding,1592 &feature_gcn3Encoding,
1593 &feature_apertureRegs,
1594 &feature_scalarAtomics,
1595 &feature_flatGlobalInsts,
1596 &feature_fp64,
1761 &feature_flatScratchInsts,1597 &feature_flatScratchInsts,
1598 &feature_dpp,
1599 &feature_scalarFlatScratchInsts,
1762 &feature_gfx7Gfx8Gfx9Insts,1600 &feature_gfx7Gfx8Gfx9Insts,
1763 &feature_wavefrontsize64,1601 &feature_sMemrealtime,
1764 &feature_scalarAtomics,1602 &feature_vop3p,
1603 &feature_flatInstOffsets,
1765 &feature_sdwaScalar,1604 &feature_sdwaScalar,
1766 &feature_fastFmaf,1605 &feature_sdwaSdst,
1767 &feature_vgprIndexMode,
1768 &feature_scalarFlatScratchInsts,
1769 &feature_sdwa,
1770 &feature_sdwaOmod,
1771 &feature_localmemorysize65536,1606 &feature_localmemorysize65536,
1607 &feature_gfx8Insts,
1772 &feature_flatAddressSpace,1608 &feature_flatAddressSpace,
1773 &feature_addNoCarryInsts,
1774 &feature_flatInstOffsets,
1775 &feature_inv2piInlineImm,
1776 &feature_gfx9Insts,
1777 &feature_flatGlobalInsts,
1778 &feature_BitInsts16,1609 &feature_BitInsts16,
1779 &feature_r128A16,1610 &feature_sdwa,
1780 &feature_gfx9,1611 &feature_wavefrontsize64,
1612 &feature_intClampInsts,
1613 &feature_sdwaOmod,
1781 &feature_ldsbankcount32,1614 &feature_ldsbankcount32,
1782 &feature_maiInsts,1615 &feature_maiInsts,
1783 &feature_mfmaInlineLiteralBug,1616 &feature_mfmaInlineLiteralBug,
...@@ -1792,37 +1625,36 @@ pub const cpu_gfx909 = Cpu{...@@ -1792,37 +1625,36 @@ pub const cpu_gfx909 = Cpu{
1792 .llvm_name = "gfx909",1625 .llvm_name = "gfx909",
1793 .subfeatures = &[_]*const Feature {1626 .subfeatures = &[_]*const Feature {
1794 &feature_codeObjectV3,1627 &feature_codeObjectV3,
1795 &feature_fp64,1628 &feature_r128A16,
1796 &feature_vop3p,1629 &feature_addNoCarryInsts,
1797 &feature_sMemrealtime,1630 &feature_inv2piInlineImm,
1798 &feature_gfx8Insts,1631 &feature_gfx9Insts,
1799 &feature_dpp,
1800 &feature_sdwaSdst,
1801 &feature_ciInsts,1632 &feature_ciInsts,
1802 &feature_apertureRegs,1633 &feature_vgprIndexMode,
1634 &feature_fastFmaf,
1803 &feature_scalarStores,1635 &feature_scalarStores,
1804 &feature_intClampInsts,
1805 &feature_gcn3Encoding,1636 &feature_gcn3Encoding,
1637 &feature_apertureRegs,
1638 &feature_scalarAtomics,
1639 &feature_flatGlobalInsts,
1640 &feature_fp64,
1806 &feature_flatScratchInsts,1641 &feature_flatScratchInsts,
1642 &feature_dpp,
1643 &feature_scalarFlatScratchInsts,
1807 &feature_gfx7Gfx8Gfx9Insts,1644 &feature_gfx7Gfx8Gfx9Insts,
1808 &feature_wavefrontsize64,1645 &feature_sMemrealtime,
1809 &feature_scalarAtomics,1646 &feature_vop3p,
1647 &feature_flatInstOffsets,
1810 &feature_sdwaScalar,1648 &feature_sdwaScalar,
1811 &feature_fastFmaf,1649 &feature_sdwaSdst,
1812 &feature_vgprIndexMode,
1813 &feature_scalarFlatScratchInsts,
1814 &feature_sdwa,
1815 &feature_sdwaOmod,
1816 &feature_localmemorysize65536,1650 &feature_localmemorysize65536,
1651 &feature_gfx8Insts,
1817 &feature_flatAddressSpace,1652 &feature_flatAddressSpace,
1818 &feature_addNoCarryInsts,
1819 &feature_flatInstOffsets,
1820 &feature_inv2piInlineImm,
1821 &feature_gfx9Insts,
1822 &feature_flatGlobalInsts,
1823 &feature_BitInsts16,1653 &feature_BitInsts16,
1824 &feature_r128A16,1654 &feature_sdwa,
1825 &feature_gfx9,1655 &feature_wavefrontsize64,
1656 &feature_intClampInsts,
1657 &feature_sdwaOmod,
1826 &feature_ldsbankcount32,1658 &feature_ldsbankcount32,
1827 &feature_madMixInsts,1659 &feature_madMixInsts,
1828 &feature_xnack,1660 &feature_xnack,
...@@ -1836,14 +1668,13 @@ pub const cpu_hainan = Cpu{...@@ -1836,14 +1668,13 @@ pub const cpu_hainan = Cpu{
1836 &feature_codeObjectV3,1668 &feature_codeObjectV3,
1837 &feature_noXnackSupport,1669 &feature_noXnackSupport,
1838 &feature_ldsbankcount32,1670 &feature_ldsbankcount32,
1839 &feature_localmemorysize32768,
1840 &feature_trigReducedRange,
1841 &feature_noSramEccSupport,1671 &feature_noSramEccSupport,
1842 &feature_fp64,
1843 &feature_movrel,
1844 &feature_mimgR128,1672 &feature_mimgR128,
1673 &feature_trigReducedRange,
1845 &feature_wavefrontsize64,1674 &feature_wavefrontsize64,
1846 &feature_southernIslands,1675 &feature_localmemorysize32768,
1676 &feature_fp64,
1677 &feature_movrel,
1847 },1678 },
1848};1679};
18491680
...@@ -1855,17 +1686,16 @@ pub const cpu_hawaii = Cpu{...@@ -1855,17 +1686,16 @@ pub const cpu_hawaii = Cpu{
1855 &feature_noXnackSupport,1686 &feature_noXnackSupport,
1856 &feature_fastFmaf,1687 &feature_fastFmaf,
1857 &feature_ldsbankcount32,1688 &feature_ldsbankcount32,
1858 &feature_trigReducedRange,
1859 &feature_noSramEccSupport,1689 &feature_noSramEccSupport,
1690 &feature_flatAddressSpace,
1691 &feature_mimgR128,
1692 &feature_trigReducedRange,
1693 &feature_gfx7Gfx8Gfx9Insts,
1694 &feature_ciInsts,
1695 &feature_wavefrontsize64,
1860 &feature_fp64,1696 &feature_fp64,
1861 &feature_movrel,1697 &feature_movrel,
1862 &feature_ciInsts,
1863 &feature_localmemorysize65536,1698 &feature_localmemorysize65536,
1864 &feature_mimgR128,
1865 &feature_wavefrontsize64,
1866 &feature_flatAddressSpace,
1867 &feature_gfx7Gfx8Gfx9Insts,
1868 &feature_seaIslands,
1869 &feature_halfRate64Ops,1699 &feature_halfRate64Ops,
1870 },1700 },
1871};1701};
...@@ -1879,29 +1709,28 @@ pub const cpu_iceland = Cpu{...@@ -1879,29 +1709,28 @@ pub const cpu_iceland = Cpu{
1879 &feature_ldsbankcount32,1709 &feature_ldsbankcount32,
1880 &feature_sgprInitBug,1710 &feature_sgprInitBug,
1881 &feature_unpackedD16Vmem,1711 &feature_unpackedD16Vmem,
1882 &feature_fp64,1712 &feature_mimgR128,
1883 &feature_sMemrealtime,1713 &feature_inv2piInlineImm,
1884 &feature_gfx8Insts,
1885 &feature_dpp,
1886 &feature_ciInsts,1714 &feature_ciInsts,
1715 &feature_vgprIndexMode,
1887 &feature_scalarStores,1716 &feature_scalarStores,
1888 &feature_intClampInsts,
1889 &feature_gcn3Encoding,1717 &feature_gcn3Encoding,
1718 &feature_fp64,
1719 &feature_dpp,
1720 &feature_trigReducedRange,
1890 &feature_gfx7Gfx8Gfx9Insts,1721 &feature_gfx7Gfx8Gfx9Insts,
1891 &feature_wavefrontsize64,1722 &feature_sMemrealtime,
1892 &feature_movrel,1723 &feature_movrel,
1893 &feature_vgprIndexMode,
1894 &feature_trigReducedRange,
1895 &feature_noSramEccSupport,
1896 &feature_sdwa,
1897 &feature_sdwaMav,
1898 &feature_sdwaOutModsVopc,
1899 &feature_localmemorysize65536,1724 &feature_localmemorysize65536,
1900 &feature_mimgR128,1725 &feature_noSramEccSupport,
1726 &feature_gfx8Insts,
1901 &feature_flatAddressSpace,1727 &feature_flatAddressSpace,
1902 &feature_inv2piInlineImm,
1903 &feature_BitInsts16,1728 &feature_BitInsts16,
1904 &feature_volcanicIslands,1729 &feature_sdwaMav,
1730 &feature_sdwa,
1731 &feature_sdwaOutModsVopc,
1732 &feature_wavefrontsize64,
1733 &feature_intClampInsts,
1905 },1734 },
1906};1735};
19071736
...@@ -1912,17 +1741,16 @@ pub const cpu_kabini = Cpu{...@@ -1912,17 +1741,16 @@ pub const cpu_kabini = Cpu{
1912 &feature_codeObjectV3,1741 &feature_codeObjectV3,
1913 &feature_noXnackSupport,1742 &feature_noXnackSupport,
1914 &feature_ldsbankcount16,1743 &feature_ldsbankcount16,
1915 &feature_trigReducedRange,
1916 &feature_noSramEccSupport,1744 &feature_noSramEccSupport,
1745 &feature_flatAddressSpace,
1746 &feature_mimgR128,
1747 &feature_trigReducedRange,
1748 &feature_gfx7Gfx8Gfx9Insts,
1749 &feature_ciInsts,
1750 &feature_wavefrontsize64,
1917 &feature_fp64,1751 &feature_fp64,
1918 &feature_movrel,1752 &feature_movrel,
1919 &feature_ciInsts,
1920 &feature_localmemorysize65536,1753 &feature_localmemorysize65536,
1921 &feature_mimgR128,
1922 &feature_wavefrontsize64,
1923 &feature_flatAddressSpace,
1924 &feature_gfx7Gfx8Gfx9Insts,
1925 &feature_seaIslands,
1926 },1754 },
1927};1755};
19281756
...@@ -1933,17 +1761,16 @@ pub const cpu_kaveri = Cpu{...@@ -1933,17 +1761,16 @@ pub const cpu_kaveri = Cpu{
1933 &feature_codeObjectV3,1761 &feature_codeObjectV3,
1934 &feature_noXnackSupport,1762 &feature_noXnackSupport,
1935 &feature_ldsbankcount32,1763 &feature_ldsbankcount32,
1936 &feature_trigReducedRange,
1937 &feature_noSramEccSupport,1764 &feature_noSramEccSupport,
1765 &feature_flatAddressSpace,
1766 &feature_mimgR128,
1767 &feature_trigReducedRange,
1768 &feature_gfx7Gfx8Gfx9Insts,
1769 &feature_ciInsts,
1770 &feature_wavefrontsize64,
1938 &feature_fp64,1771 &feature_fp64,
1939 &feature_movrel,1772 &feature_movrel,
1940 &feature_ciInsts,
1941 &feature_localmemorysize65536,1773 &feature_localmemorysize65536,
1942 &feature_mimgR128,
1943 &feature_wavefrontsize64,
1944 &feature_flatAddressSpace,
1945 &feature_gfx7Gfx8Gfx9Insts,
1946 &feature_seaIslands,
1947 },1774 },
1948};1775};
19491776
...@@ -1954,17 +1781,16 @@ pub const cpu_mullins = Cpu{...@@ -1954,17 +1781,16 @@ pub const cpu_mullins = Cpu{
1954 &feature_codeObjectV3,1781 &feature_codeObjectV3,
1955 &feature_noXnackSupport,1782 &feature_noXnackSupport,
1956 &feature_ldsbankcount16,1783 &feature_ldsbankcount16,
1957 &feature_trigReducedRange,
1958 &feature_noSramEccSupport,1784 &feature_noSramEccSupport,
1785 &feature_flatAddressSpace,
1786 &feature_mimgR128,
1787 &feature_trigReducedRange,
1788 &feature_gfx7Gfx8Gfx9Insts,
1789 &feature_ciInsts,
1790 &feature_wavefrontsize64,
1959 &feature_fp64,1791 &feature_fp64,
1960 &feature_movrel,1792 &feature_movrel,
1961 &feature_ciInsts,
1962 &feature_localmemorysize65536,1793 &feature_localmemorysize65536,
1963 &feature_mimgR128,
1964 &feature_wavefrontsize64,
1965 &feature_flatAddressSpace,
1966 &feature_gfx7Gfx8Gfx9Insts,
1967 &feature_seaIslands,
1968 },1794 },
1969};1795};
19701796
...@@ -1975,14 +1801,13 @@ pub const cpu_oland = Cpu{...@@ -1975,14 +1801,13 @@ pub const cpu_oland = Cpu{
1975 &feature_codeObjectV3,1801 &feature_codeObjectV3,
1976 &feature_noXnackSupport,1802 &feature_noXnackSupport,
1977 &feature_ldsbankcount32,1803 &feature_ldsbankcount32,
1978 &feature_localmemorysize32768,
1979 &feature_trigReducedRange,
1980 &feature_noSramEccSupport,1804 &feature_noSramEccSupport,
1981 &feature_fp64,
1982 &feature_movrel,
1983 &feature_mimgR128,1805 &feature_mimgR128,
1806 &feature_trigReducedRange,
1984 &feature_wavefrontsize64,1807 &feature_wavefrontsize64,
1985 &feature_southernIslands,1808 &feature_localmemorysize32768,
1809 &feature_fp64,
1810 &feature_movrel,
1986 },1811 },
1987};1812};
19881813
...@@ -1993,14 +1818,13 @@ pub const cpu_pitcairn = Cpu{...@@ -1993,14 +1818,13 @@ pub const cpu_pitcairn = Cpu{
1993 &feature_codeObjectV3,1818 &feature_codeObjectV3,
1994 &feature_noXnackSupport,1819 &feature_noXnackSupport,
1995 &feature_ldsbankcount32,1820 &feature_ldsbankcount32,
1996 &feature_localmemorysize32768,
1997 &feature_trigReducedRange,
1998 &feature_noSramEccSupport,1821 &feature_noSramEccSupport,
1999 &feature_fp64,
2000 &feature_movrel,
2001 &feature_mimgR128,1822 &feature_mimgR128,
1823 &feature_trigReducedRange,
2002 &feature_wavefrontsize64,1824 &feature_wavefrontsize64,
2003 &feature_southernIslands,1825 &feature_localmemorysize32768,
1826 &feature_fp64,
1827 &feature_movrel,
2004 },1828 },
2005};1829};
20061830
...@@ -2012,29 +1836,28 @@ pub const cpu_polaris10 = Cpu{...@@ -2012,29 +1836,28 @@ pub const cpu_polaris10 = Cpu{
2012 &feature_noXnackSupport,1836 &feature_noXnackSupport,
2013 &feature_ldsbankcount32,1837 &feature_ldsbankcount32,
2014 &feature_unpackedD16Vmem,1838 &feature_unpackedD16Vmem,
2015 &feature_fp64,1839 &feature_mimgR128,
2016 &feature_sMemrealtime,1840 &feature_inv2piInlineImm,
2017 &feature_gfx8Insts,
2018 &feature_dpp,
2019 &feature_ciInsts,1841 &feature_ciInsts,
1842 &feature_vgprIndexMode,
2020 &feature_scalarStores,1843 &feature_scalarStores,
2021 &feature_intClampInsts,
2022 &feature_gcn3Encoding,1844 &feature_gcn3Encoding,
1845 &feature_fp64,
1846 &feature_dpp,
1847 &feature_trigReducedRange,
2023 &feature_gfx7Gfx8Gfx9Insts,1848 &feature_gfx7Gfx8Gfx9Insts,
2024 &feature_wavefrontsize64,1849 &feature_sMemrealtime,
2025 &feature_movrel,1850 &feature_movrel,
2026 &feature_vgprIndexMode,
2027 &feature_trigReducedRange,
2028 &feature_noSramEccSupport,
2029 &feature_sdwa,
2030 &feature_sdwaMav,
2031 &feature_sdwaOutModsVopc,
2032 &feature_localmemorysize65536,1851 &feature_localmemorysize65536,
2033 &feature_mimgR128,1852 &feature_noSramEccSupport,
1853 &feature_gfx8Insts,
2034 &feature_flatAddressSpace,1854 &feature_flatAddressSpace,
2035 &feature_inv2piInlineImm,
2036 &feature_BitInsts16,1855 &feature_BitInsts16,
2037 &feature_volcanicIslands,1856 &feature_sdwaMav,
1857 &feature_sdwa,
1858 &feature_sdwaOutModsVopc,
1859 &feature_wavefrontsize64,
1860 &feature_intClampInsts,
2038 },1861 },
2039};1862};
20401863
...@@ -2046,29 +1869,28 @@ pub const cpu_polaris11 = Cpu{...@@ -2046,29 +1869,28 @@ pub const cpu_polaris11 = Cpu{
2046 &feature_noXnackSupport,1869 &feature_noXnackSupport,
2047 &feature_ldsbankcount32,1870 &feature_ldsbankcount32,
2048 &feature_unpackedD16Vmem,1871 &feature_unpackedD16Vmem,
2049 &feature_fp64,1872 &feature_mimgR128,
2050 &feature_sMemrealtime,1873 &feature_inv2piInlineImm,
2051 &feature_gfx8Insts,
2052 &feature_dpp,
2053 &feature_ciInsts,1874 &feature_ciInsts,
1875 &feature_vgprIndexMode,
2054 &feature_scalarStores,1876 &feature_scalarStores,
2055 &feature_intClampInsts,
2056 &feature_gcn3Encoding,1877 &feature_gcn3Encoding,
1878 &feature_fp64,
1879 &feature_dpp,
1880 &feature_trigReducedRange,
2057 &feature_gfx7Gfx8Gfx9Insts,1881 &feature_gfx7Gfx8Gfx9Insts,
2058 &feature_wavefrontsize64,1882 &feature_sMemrealtime,
2059 &feature_movrel,1883 &feature_movrel,
2060 &feature_vgprIndexMode,
2061 &feature_trigReducedRange,
2062 &feature_noSramEccSupport,
2063 &feature_sdwa,
2064 &feature_sdwaMav,
2065 &feature_sdwaOutModsVopc,
2066 &feature_localmemorysize65536,1884 &feature_localmemorysize65536,
2067 &feature_mimgR128,1885 &feature_noSramEccSupport,
1886 &feature_gfx8Insts,
2068 &feature_flatAddressSpace,1887 &feature_flatAddressSpace,
2069 &feature_inv2piInlineImm,
2070 &feature_BitInsts16,1888 &feature_BitInsts16,
2071 &feature_volcanicIslands,1889 &feature_sdwaMav,
1890 &feature_sdwa,
1891 &feature_sdwaOutModsVopc,
1892 &feature_wavefrontsize64,
1893 &feature_intClampInsts,
2072 },1894 },
2073};1895};
20741896
...@@ -2078,29 +1900,28 @@ pub const cpu_stoney = Cpu{...@@ -2078,29 +1900,28 @@ pub const cpu_stoney = Cpu{
2078 .subfeatures = &[_]*const Feature {1900 .subfeatures = &[_]*const Feature {
2079 &feature_codeObjectV3,1901 &feature_codeObjectV3,
2080 &feature_ldsbankcount16,1902 &feature_ldsbankcount16,
2081 &feature_fp64,1903 &feature_mimgR128,
2082 &feature_sMemrealtime,1904 &feature_inv2piInlineImm,
2083 &feature_gfx8Insts,
2084 &feature_dpp,
2085 &feature_ciInsts,1905 &feature_ciInsts,
1906 &feature_vgprIndexMode,
2086 &feature_scalarStores,1907 &feature_scalarStores,
2087 &feature_intClampInsts,
2088 &feature_gcn3Encoding,1908 &feature_gcn3Encoding,
1909 &feature_fp64,
1910 &feature_dpp,
1911 &feature_trigReducedRange,
2089 &feature_gfx7Gfx8Gfx9Insts,1912 &feature_gfx7Gfx8Gfx9Insts,
2090 &feature_wavefrontsize64,1913 &feature_sMemrealtime,
2091 &feature_movrel,1914 &feature_movrel,
2092 &feature_vgprIndexMode,
2093 &feature_trigReducedRange,
2094 &feature_noSramEccSupport,
2095 &feature_sdwa,
2096 &feature_sdwaMav,
2097 &feature_sdwaOutModsVopc,
2098 &feature_localmemorysize65536,1915 &feature_localmemorysize65536,
2099 &feature_mimgR128,1916 &feature_noSramEccSupport,
1917 &feature_gfx8Insts,
2100 &feature_flatAddressSpace,1918 &feature_flatAddressSpace,
2101 &feature_inv2piInlineImm,
2102 &feature_BitInsts16,1919 &feature_BitInsts16,
2103 &feature_volcanicIslands,1920 &feature_sdwaMav,
1921 &feature_sdwa,
1922 &feature_sdwaOutModsVopc,
1923 &feature_wavefrontsize64,
1924 &feature_intClampInsts,
2104 &feature_xnack,1925 &feature_xnack,
2105 },1926 },
2106};1927};
...@@ -2113,14 +1934,13 @@ pub const cpu_tahiti = Cpu{...@@ -2113,14 +1934,13 @@ pub const cpu_tahiti = Cpu{
2113 &feature_noXnackSupport,1934 &feature_noXnackSupport,
2114 &feature_fastFmaf,1935 &feature_fastFmaf,
2115 &feature_ldsbankcount32,1936 &feature_ldsbankcount32,
2116 &feature_localmemorysize32768,
2117 &feature_trigReducedRange,
2118 &feature_noSramEccSupport,1937 &feature_noSramEccSupport,
2119 &feature_fp64,
2120 &feature_movrel,
2121 &feature_mimgR128,1938 &feature_mimgR128,
1939 &feature_trigReducedRange,
2122 &feature_wavefrontsize64,1940 &feature_wavefrontsize64,
2123 &feature_southernIslands,1941 &feature_localmemorysize32768,
1942 &feature_fp64,
1943 &feature_movrel,
2124 &feature_halfRate64Ops,1944 &feature_halfRate64Ops,
2125 },1945 },
2126};1946};
...@@ -2134,29 +1954,28 @@ pub const cpu_tonga = Cpu{...@@ -2134,29 +1954,28 @@ pub const cpu_tonga = Cpu{
2134 &feature_ldsbankcount32,1954 &feature_ldsbankcount32,
2135 &feature_sgprInitBug,1955 &feature_sgprInitBug,
2136 &feature_unpackedD16Vmem,1956 &feature_unpackedD16Vmem,
2137 &feature_fp64,1957 &feature_mimgR128,
2138 &feature_sMemrealtime,1958 &feature_inv2piInlineImm,
2139 &feature_gfx8Insts,
2140 &feature_dpp,
2141 &feature_ciInsts,1959 &feature_ciInsts,
1960 &feature_vgprIndexMode,
2142 &feature_scalarStores,1961 &feature_scalarStores,
2143 &feature_intClampInsts,
2144 &feature_gcn3Encoding,1962 &feature_gcn3Encoding,
1963 &feature_fp64,
1964 &feature_dpp,
1965 &feature_trigReducedRange,
2145 &feature_gfx7Gfx8Gfx9Insts,1966 &feature_gfx7Gfx8Gfx9Insts,
2146 &feature_wavefrontsize64,1967 &feature_sMemrealtime,
2147 &feature_movrel,1968 &feature_movrel,
2148 &feature_vgprIndexMode,
2149 &feature_trigReducedRange,
2150 &feature_noSramEccSupport,
2151 &feature_sdwa,
2152 &feature_sdwaMav,
2153 &feature_sdwaOutModsVopc,
2154 &feature_localmemorysize65536,1969 &feature_localmemorysize65536,
2155 &feature_mimgR128,1970 &feature_noSramEccSupport,
1971 &feature_gfx8Insts,
2156 &feature_flatAddressSpace,1972 &feature_flatAddressSpace,
2157 &feature_inv2piInlineImm,
2158 &feature_BitInsts16,1973 &feature_BitInsts16,
2159 &feature_volcanicIslands,1974 &feature_sdwaMav,
1975 &feature_sdwa,
1976 &feature_sdwaOutModsVopc,
1977 &feature_wavefrontsize64,
1978 &feature_intClampInsts,
2160 },1979 },
2161};1980};
21621981
...@@ -2167,14 +1986,13 @@ pub const cpu_verde = Cpu{...@@ -2167,14 +1986,13 @@ pub const cpu_verde = Cpu{
2167 &feature_codeObjectV3,1986 &feature_codeObjectV3,
2168 &feature_noXnackSupport,1987 &feature_noXnackSupport,
2169 &feature_ldsbankcount32,1988 &feature_ldsbankcount32,
2170 &feature_localmemorysize32768,
2171 &feature_trigReducedRange,
2172 &feature_noSramEccSupport,1989 &feature_noSramEccSupport,
2173 &feature_fp64,
2174 &feature_movrel,
2175 &feature_mimgR128,1990 &feature_mimgR128,
1991 &feature_trigReducedRange,
2176 &feature_wavefrontsize64,1992 &feature_wavefrontsize64,
2177 &feature_southernIslands,1993 &feature_localmemorysize32768,
1994 &feature_fp64,
1995 &feature_movrel,
2178 },1996 },
2179};1997};
21801998
lib/std/target/arm.zig+649-1839
...@@ -1,1646 +1,706 @@...@@ -1,1646 +1,706 @@
1const Feature = @import("std").target.Feature;1const Feature = @import("std").target.Feature;
2const Cpu = @import("std").target.Cpu;2const Cpu = @import("std").target.Cpu;
33
4pub const feature_armv2 = Feature{4pub const feature_msecext8 = Feature{
5 .name = "armv2",5 .name = "8msecext",
6 .description = "ARMv2 architecture",6 .description = "Enable support for ARMv8-M Security Extensions",
7 .subfeatures = &[_]*const Feature {
8 },
9};
10
11pub const feature_armv2a = Feature{
12 .name = "armv2a",
13 .description = "ARMv2a architecture",
14 .subfeatures = &[_]*const Feature {7 .subfeatures = &[_]*const Feature {
15 },8 },
16};9};
1710
18pub const feature_armv3 = Feature{11pub const feature_aclass = Feature{
19 .name = "armv3",12 .name = "aclass",
20 .description = "ARMv3 architecture",13 .description = "Is application profile ('A' series)",
21 .subfeatures = &[_]*const Feature {14 .subfeatures = &[_]*const Feature {
22 },15 },
23};16};
2417
25pub const feature_armv3m = Feature{18pub const feature_aes = Feature{
26 .name = "armv3m",19 .name = "aes",
27 .description = "ARMv3m architecture",20 .description = "Enable AES support",
28 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
22 &feature_fpregs,
23 &feature_d32,
29 },24 },
30};25};
3126
32pub const feature_armv4 = Feature{27pub const feature_acquireRelease = Feature{
33 .name = "armv4",28 .name = "acquire-release",
34 .description = "ARMv4 architecture",29 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
35 .subfeatures = &[_]*const Feature {30 .subfeatures = &[_]*const Feature {
36 },31 },
37};32};
3833
39pub const feature_armv4t = Feature{34pub const feature_avoidMovsShop = Feature{
40 .name = "armv4t",35 .name = "avoid-movs-shop",
41 .description = "ARMv4t architecture",36 .description = "Avoid movs instructions with shifter operand",
42 .subfeatures = &[_]*const Feature {37 .subfeatures = &[_]*const Feature {
43 &feature_v4t,
44 },38 },
45};39};
4640
47pub const feature_armv5t = Feature{41pub const feature_avoidPartialCpsr = Feature{
48 .name = "armv5t",42 .name = "avoid-partial-cpsr",
49 .description = "ARMv5t architecture",43 .description = "Avoid CPSR partial update for OOO execution",
50 .subfeatures = &[_]*const Feature {44 .subfeatures = &[_]*const Feature {
51 &feature_v4t,
52 },45 },
53};46};
5447
55pub const feature_armv5te = Feature{48pub const feature_crc = Feature{
56 .name = "armv5te",49 .name = "crc",
57 .description = "ARMv5te architecture",50 .description = "Enable support for CRC instructions",
58 .subfeatures = &[_]*const Feature {51 .subfeatures = &[_]*const Feature {
59 &feature_v4t,
60 },52 },
61};53};
6254
63pub const feature_armv5tej = Feature{55pub const feature_cheapPredicableCpsr = Feature{
64 .name = "armv5tej",56 .name = "cheap-predicable-cpsr",
65 .description = "ARMv5tej architecture",57 .description = "Disable +1 predication cost for instructions updating CPSR",
66 .subfeatures = &[_]*const Feature {58 .subfeatures = &[_]*const Feature {
67 &feature_v4t,
68 },59 },
69};60};
7061
71pub const feature_armv6 = Feature{62pub const feature_vldnAlign = Feature{
72 .name = "armv6",63 .name = "vldn-align",
73 .description = "ARMv6 architecture",64 .description = "Check for VLDn unaligned access",
74 .subfeatures = &[_]*const Feature {65 .subfeatures = &[_]*const Feature {
75 &feature_v4t,
76 &feature_dsp,
77 },66 },
78};67};
7968
80pub const feature_armv6j = Feature{69pub const feature_crypto = Feature{
81 .name = "armv6j",70 .name = "crypto",
82 .description = "ARMv7a architecture",71 .description = "Enable support for Cryptography extensions",
83 .subfeatures = &[_]*const Feature {72 .subfeatures = &[_]*const Feature {
84 &feature_v4t,73 &feature_fpregs,
85 &feature_dsp,74 &feature_d32,
86 },75 },
87};76};
8877
89pub const feature_armv6k = Feature{78pub const feature_d32 = Feature{
90 .name = "armv6k",79 .name = "d32",
91 .description = "ARMv6k architecture",80 .description = "Extend FP to 32 double registers",
92 .subfeatures = &[_]*const Feature {81 .subfeatures = &[_]*const Feature {
93 &feature_v4t,
94 },82 },
95};83};
9684
97pub const feature_armv6kz = Feature{85pub const feature_db = Feature{
98 .name = "armv6kz",86 .name = "db",
99 .description = "ARMv6kz architecture",87 .description = "Has data barrier (dmb/dsb) instructions",
100 .subfeatures = &[_]*const Feature {88 .subfeatures = &[_]*const Feature {
101 &feature_v4t,
102 &feature_trustzone,
103 },89 },
104};90};
10591
106pub const feature_armv6M = Feature{92pub const feature_dfb = Feature{
107 .name = "armv6-m",93 .name = "dfb",
108 .description = "ARMv6m architecture",94 .description = "Has full data barrier (dfb) instruction",
109 .subfeatures = &[_]*const Feature {95 .subfeatures = &[_]*const Feature {
110 &feature_db,
111 &feature_mclass,
112 &feature_thumbMode,
113 &feature_strictAlign,
114 &feature_noarm,
115 &feature_v4t,
116 },96 },
117};97};
11898
119pub const feature_armv6sM = Feature{99pub const feature_dsp = Feature{
120 .name = "armv6s-m",100 .name = "dsp",
121 .description = "ARMv6sm architecture",101 .description = "Supports DSP instructions in ARM and/or Thumb2",
122 .subfeatures = &[_]*const Feature {102 .subfeatures = &[_]*const Feature {
123 &feature_db,
124 &feature_mclass,
125 &feature_thumbMode,
126 &feature_strictAlign,
127 &feature_noarm,
128 &feature_v4t,
129 },103 },
130};104};
131105
132pub const feature_armv6t2 = Feature{106pub const feature_dontWidenVmovs = Feature{
133 .name = "armv6t2",107 .name = "dont-widen-vmovs",
134 .description = "ARMv6t2 architecture",108 .description = "Don't widen VMOVS to VMOVD",
135 .subfeatures = &[_]*const Feature {109 .subfeatures = &[_]*const Feature {
136 &feature_thumb2,
137 &feature_dsp,
138 &feature_v4t,
139 },110 },
140};111};
141112
142pub const feature_armv7A = Feature{113pub const feature_dotprod = Feature{
143 .name = "armv7-a",114 .name = "dotprod",
144 .description = "ARMv7a architecture",115 .description = "Enable support for dot product instructions",
145 .subfeatures = &[_]*const Feature {116 .subfeatures = &[_]*const Feature {
146 &feature_db,
147 &feature_dsp,
148 &feature_fpregs,117 &feature_fpregs,
149 &feature_thumb2,
150 &feature_v7clrex,
151 &feature_aclass,
152 &feature_perfmon,
153 &feature_v4t,
154 &feature_d32,118 &feature_d32,
155 },119 },
156};120};
157121
158pub const feature_armv7eM = Feature{122pub const feature_executeOnly = Feature{
159 .name = "armv7e-m",123 .name = "execute-only",
160 .description = "ARMv7em architecture",124 .description = "Enable the generation of execute only code.",
161 .subfeatures = &[_]*const Feature {125 .subfeatures = &[_]*const Feature {
162 &feature_db,
163 &feature_mclass,
164 &feature_hwdiv,
165 &feature_dsp,
166 &feature_thumbMode,
167 &feature_thumb2,
168 &feature_v7clrex,
169 &feature_perfmon,
170 &feature_noarm,
171 &feature_v4t,
172 },126 },
173};127};
174128
175pub const feature_armv7k = Feature{129pub const feature_expandFpMlx = Feature{
176 .name = "armv7k",130 .name = "expand-fp-mlx",
177 .description = "ARMv7a architecture",131 .description = "Expand VFP/NEON MLA/MLS instructions",
178 .subfeatures = &[_]*const Feature {132 .subfeatures = &[_]*const Feature {
179 &feature_db,
180 &feature_dsp,
181 &feature_fpregs,
182 &feature_thumb2,
183 &feature_v7clrex,
184 &feature_aclass,
185 &feature_perfmon,
186 &feature_v4t,
187 &feature_d32,
188 },133 },
189};134};
190135
191pub const feature_armv7M = Feature{136pub const feature_fp16 = Feature{
192 .name = "armv7-m",137 .name = "fp16",
193 .description = "ARMv7m architecture",138 .description = "Enable half-precision floating point",
194 .subfeatures = &[_]*const Feature {139 .subfeatures = &[_]*const Feature {
195 &feature_db,
196 &feature_mclass,
197 &feature_hwdiv,
198 &feature_thumbMode,
199 &feature_thumb2,
200 &feature_v7clrex,
201 &feature_perfmon,
202 &feature_noarm,
203 &feature_v4t,
204 },140 },
205};141};
206142
207pub const feature_armv7R = Feature{143pub const feature_fp16fml = Feature{
208 .name = "armv7-r",144 .name = "fp16fml",
209 .description = "ARMv7r architecture",145 .description = "Enable full half-precision floating point fml instructions",
210 .subfeatures = &[_]*const Feature {146 .subfeatures = &[_]*const Feature {
211 &feature_db,147 &feature_fp16,
212 &feature_dsp,148 &feature_fpregs,
213 &feature_hwdiv,
214 &feature_rclass,
215 &feature_thumb2,
216 &feature_v7clrex,
217 &feature_perfmon,
218 &feature_v4t,
219 },149 },
220};150};
221151
222pub const feature_armv7s = Feature{152pub const feature_fp64 = Feature{
223 .name = "armv7s",153 .name = "fp64",
224 .description = "ARMv7a architecture",154 .description = "Floating point unit supports double precision",
225 .subfeatures = &[_]*const Feature {155 .subfeatures = &[_]*const Feature {
226 &feature_db,
227 &feature_dsp,
228 &feature_fpregs,156 &feature_fpregs,
229 &feature_thumb2,
230 &feature_v7clrex,
231 &feature_aclass,
232 &feature_perfmon,
233 &feature_v4t,
234 &feature_d32,
235 },157 },
236};158};
237159
238pub const feature_armv7ve = Feature{160pub const feature_fpao = Feature{
239 .name = "armv7ve",161 .name = "fpao",
240 .description = "ARMv7ve architecture",162 .description = "Enable fast computation of positive address offsets",
241 .subfeatures = &[_]*const Feature {163 .subfeatures = &[_]*const Feature {
242 &feature_db,
243 &feature_dsp,
244 &feature_hwdivArm,
245 &feature_hwdiv,
246 &feature_trustzone,
247 &feature_fpregs,
248 &feature_thumb2,
249 &feature_v7clrex,
250 &feature_aclass,
251 &feature_mp,
252 &feature_perfmon,
253 &feature_v4t,
254 &feature_d32,
255 },164 },
256};165};
257166
258pub const feature_armv8A = Feature{167pub const feature_fpArmv8 = Feature{
259 .name = "armv8-a",168 .name = "fp-armv8",
260 .description = "ARMv8a architecture",169 .description = "Enable ARMv8 FP",
261 .subfeatures = &[_]*const Feature {170 .subfeatures = &[_]*const Feature {
262 &feature_db,
263 &feature_dsp,
264 &feature_hwdivArm,
265 &feature_hwdiv,
266 &feature_trustzone,
267 &feature_fpregs,
268 &feature_v4t,
269 &feature_thumb2,
270 &feature_v7clrex,
271 &feature_aclass,
272 &feature_crc,
273 &feature_mp,
274 &feature_acquireRelease,
275 &feature_fp16,171 &feature_fp16,
276 &feature_perfmon,172 &feature_fpregs,
277 &feature_d32,173 &feature_d32,
278 },174 },
279};175};
280176
281pub const feature_armv8Mbase = Feature{177pub const feature_fpArmv8d16 = Feature{
282 .name = "armv8-m.base",178 .name = "fp-armv8d16",
283 .description = "ARMv8mBaseline architecture",179 .description = "Enable ARMv8 FP with only 16 d-registers",
284 .subfeatures = &[_]*const Feature {
285 &feature_db,
286 &feature_mclass,
287 &feature_hwdiv,
288 &feature_thumbMode,
289 &feature_strictAlign,
290 &feature_v7clrex,
291 &feature_msecext8,
292 &feature_acquireRelease,
293 &feature_noarm,
294 &feature_v4t,
295 },
296};
297
298pub const feature_armv8Mmain = Feature{
299 .name = "armv8-m.main",
300 .description = "ARMv8mMainline architecture",
301 .subfeatures = &[_]*const Feature {180 .subfeatures = &[_]*const Feature {
302 &feature_db,181 &feature_fp16,
303 &feature_mclass,182 &feature_fpregs,
304 &feature_hwdiv,
305 &feature_thumbMode,
306 &feature_thumb2,
307 &feature_v7clrex,
308 &feature_msecext8,
309 &feature_acquireRelease,
310 &feature_perfmon,
311 &feature_noarm,
312 &feature_v4t,
313 },183 },
314};184};
315185
316pub const feature_armv8R = Feature{186pub const feature_fpArmv8d16sp = Feature{
317 .name = "armv8-r",187 .name = "fp-armv8d16sp",
318 .description = "ARMv8r architecture",188 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
319 .subfeatures = &[_]*const Feature {189 .subfeatures = &[_]*const Feature {
320 &feature_db,
321 &feature_dsp,
322 &feature_hwdivArm,
323 &feature_hwdiv,
324 &feature_rclass,
325 &feature_fpregs,
326 &feature_v4t,
327 &feature_dfb,
328 &feature_thumb2,
329 &feature_v7clrex,
330 &feature_perfmon,
331 &feature_crc,
332 &feature_mp,
333 &feature_acquireRelease,
334 &feature_fp16,190 &feature_fp16,
335 &feature_d32,191 &feature_fpregs,
336 },192 },
337};193};
338194
339pub const feature_armv81A = Feature{195pub const feature_fpArmv8sp = Feature{
340 .name = "armv8.1-a",196 .name = "fp-armv8sp",
341 .description = "ARMv81a architecture",197 .description = "Enable ARMv8 FP with no double precision",
342 .subfeatures = &[_]*const Feature {198 .subfeatures = &[_]*const Feature {
343 &feature_db,
344 &feature_dsp,
345 &feature_hwdivArm,
346 &feature_hwdiv,
347 &feature_trustzone,
348 &feature_fpregs,
349 &feature_v4t,
350 &feature_thumb2,
351 &feature_v7clrex,
352 &feature_aclass,
353 &feature_crc,
354 &feature_mp,
355 &feature_acquireRelease,
356 &feature_fp16,199 &feature_fp16,
357 &feature_perfmon,200 &feature_fpregs,
358 &feature_d32,201 &feature_d32,
359 },202 },
360};203};
361204
362pub const feature_armv81Mmain = Feature{205pub const feature_fpregs = Feature{
363 .name = "armv8.1-m.main",206 .name = "fpregs",
364 .description = "ARMv81mMainline architecture",207 .description = "Enable FP registers",
365 .subfeatures = &[_]*const Feature {
366 &feature_db,
367 &feature_mclass,
368 &feature_hwdiv,
369 &feature_lob,
370 &feature_thumbMode,
371 &feature_thumb2,
372 &feature_ras,
373 &feature_v7clrex,
374 &feature_msecext8,
375 &feature_acquireRelease,
376 &feature_perfmon,
377 &feature_noarm,
378 &feature_v4t,
379 },
380};
381
382pub const feature_armv82A = Feature{
383 .name = "armv8.2-a",
384 .description = "ARMv82a architecture",
385 .subfeatures = &[_]*const Feature {208 .subfeatures = &[_]*const Feature {
386 &feature_db,
387 &feature_dsp,
388 &feature_hwdivArm,
389 &feature_hwdiv,
390 &feature_trustzone,
391 &feature_fpregs,
392 &feature_v4t,
393 &feature_thumb2,
394 &feature_ras,
395 &feature_v7clrex,
396 &feature_aclass,
397 &feature_crc,
398 &feature_mp,
399 &feature_acquireRelease,
400 &feature_fp16,
401 &feature_perfmon,
402 &feature_d32,
403 },209 },
404};210};
405211
406pub const feature_armv83A = Feature{212pub const feature_fpregs16 = Feature{
407 .name = "armv8.3-a",213 .name = "fpregs16",
408 .description = "ARMv83a architecture",214 .description = "Enable 16-bit FP registers",
409 .subfeatures = &[_]*const Feature {
410 &feature_db,
411 &feature_dsp,
412 &feature_hwdivArm,
413 &feature_hwdiv,
414 &feature_trustzone,
415 &feature_fpregs,
416 &feature_v4t,
417 &feature_thumb2,
418 &feature_ras,
419 &feature_v7clrex,
420 &feature_aclass,
421 &feature_crc,
422 &feature_mp,
423 &feature_acquireRelease,
424 &feature_fp16,
425 &feature_perfmon,
426 &feature_d32,
427 },
428};
429
430pub const feature_armv84A = Feature{
431 .name = "armv8.4-a",
432 .description = "ARMv84a architecture",
433 .subfeatures = &[_]*const Feature {
434 &feature_db,
435 &feature_dsp,
436 &feature_hwdivArm,
437 &feature_hwdiv,
438 &feature_trustzone,
439 &feature_fpregs,
440 &feature_v4t,
441 &feature_thumb2,
442 &feature_ras,
443 &feature_v7clrex,
444 &feature_aclass,
445 &feature_crc,
446 &feature_mp,
447 &feature_acquireRelease,
448 &feature_fp16,
449 &feature_perfmon,
450 &feature_d32,
451 },
452};
453
454pub const feature_armv85A = Feature{
455 .name = "armv8.5-a",
456 .description = "ARMv85a architecture",
457 .subfeatures = &[_]*const Feature {
458 &feature_db,
459 &feature_dsp,
460 &feature_hwdivArm,
461 &feature_hwdiv,
462 &feature_trustzone,
463 &feature_fpregs,
464 &feature_v4t,
465 &feature_thumb2,
466 &feature_ras,
467 &feature_sb,
468 &feature_aclass,
469 &feature_crc,
470 &feature_mp,
471 &feature_v7clrex,
472 &feature_fp16,
473 &feature_acquireRelease,
474 &feature_d32,
475 &feature_perfmon,
476 },
477};
478
479pub const feature_msecext8 = Feature{
480 .name = "8msecext",
481 .description = "Enable support for ARMv8-M Security Extensions",
482 .subfeatures = &[_]*const Feature {
483 },
484};
485
486pub const feature_aclass = Feature{
487 .name = "aclass",
488 .description = "Is application profile ('A' series)",
489 .subfeatures = &[_]*const Feature {
490 },
491};
492
493pub const feature_aes = Feature{
494 .name = "aes",
495 .description = "Enable AES support",
496 .subfeatures = &[_]*const Feature {
497 &feature_fpregs,
498 &feature_d32,
499 },
500};
501
502pub const feature_acquireRelease = Feature{
503 .name = "acquire-release",
504 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
505 .subfeatures = &[_]*const Feature {
506 },
507};
508
509pub const feature_avoidMovsShop = Feature{
510 .name = "avoid-movs-shop",
511 .description = "Avoid movs instructions with shifter operand",
512 .subfeatures = &[_]*const Feature {
513 },
514};
515
516pub const feature_avoidPartialCpsr = Feature{
517 .name = "avoid-partial-cpsr",
518 .description = "Avoid CPSR partial update for OOO execution",
519 .subfeatures = &[_]*const Feature {
520 },
521};
522
523pub const feature_crc = Feature{
524 .name = "crc",
525 .description = "Enable support for CRC instructions",
526 .subfeatures = &[_]*const Feature {
527 },
528};
529
530pub const feature_cheapPredicableCpsr = Feature{
531 .name = "cheap-predicable-cpsr",
532 .description = "Disable +1 predication cost for instructions updating CPSR",
533 .subfeatures = &[_]*const Feature {
534 },
535};
536
537pub const feature_vldnAlign = Feature{
538 .name = "vldn-align",
539 .description = "Check for VLDn unaligned access",
540 .subfeatures = &[_]*const Feature {
541 },
542};
543
544pub const feature_crypto = Feature{
545 .name = "crypto",
546 .description = "Enable support for Cryptography extensions",
547 .subfeatures = &[_]*const Feature {
548 &feature_fpregs,
549 &feature_d32,
550 },
551};
552
553pub const feature_d32 = Feature{
554 .name = "d32",
555 .description = "Extend FP to 32 double registers",
556 .subfeatures = &[_]*const Feature {
557 },
558};
559
560pub const feature_db = Feature{
561 .name = "db",
562 .description = "Has data barrier (dmb/dsb) instructions",
563 .subfeatures = &[_]*const Feature {
564 },
565};
566
567pub const feature_dfb = Feature{
568 .name = "dfb",
569 .description = "Has full data barrier (dfb) instruction",
570 .subfeatures = &[_]*const Feature {
571 },
572};
573
574pub const feature_dsp = Feature{
575 .name = "dsp",
576 .description = "Supports DSP instructions in ARM and/or Thumb2",
577 .subfeatures = &[_]*const Feature {
578 },
579};
580
581pub const feature_dontWidenVmovs = Feature{
582 .name = "dont-widen-vmovs",
583 .description = "Don't widen VMOVS to VMOVD",
584 .subfeatures = &[_]*const Feature {
585 },
586};
587
588pub const feature_dotprod = Feature{
589 .name = "dotprod",
590 .description = "Enable support for dot product instructions",
591 .subfeatures = &[_]*const Feature {
592 &feature_fpregs,
593 &feature_d32,
594 },
595};
596
597pub const feature_executeOnly = Feature{
598 .name = "execute-only",
599 .description = "Enable the generation of execute only code.",
600 .subfeatures = &[_]*const Feature {
601 },
602};
603
604pub const feature_expandFpMlx = Feature{
605 .name = "expand-fp-mlx",
606 .description = "Expand VFP/NEON MLA/MLS instructions",
607 .subfeatures = &[_]*const Feature {
608 },
609};
610
611pub const feature_fp16 = Feature{
612 .name = "fp16",
613 .description = "Enable half-precision floating point",
614 .subfeatures = &[_]*const Feature {
615 },
616};
617
618pub const feature_fp16fml = Feature{
619 .name = "fp16fml",
620 .description = "Enable full half-precision floating point fml instructions",
621 .subfeatures = &[_]*const Feature {
622 &feature_fp16,
623 &feature_fpregs,
624 },
625};
626
627pub const feature_fp64 = Feature{
628 .name = "fp64",
629 .description = "Floating point unit supports double precision",
630 .subfeatures = &[_]*const Feature {
631 &feature_fpregs,
632 },
633};
634
635pub const feature_fpao = Feature{
636 .name = "fpao",
637 .description = "Enable fast computation of positive address offsets",
638 .subfeatures = &[_]*const Feature {
639 },
640};
641
642pub const feature_fpArmv8 = Feature{
643 .name = "fp-armv8",
644 .description = "Enable ARMv8 FP",
645 .subfeatures = &[_]*const Feature {
646 &feature_fpregs,
647 &feature_d32,
648 &feature_fp16,
649 },
650};
651
652pub const feature_fpArmv8d16 = Feature{
653 .name = "fp-armv8d16",
654 .description = "Enable ARMv8 FP with only 16 d-registers",
655 .subfeatures = &[_]*const Feature {
656 &feature_fpregs,
657 &feature_fp16,
658 },
659};
660
661pub const feature_fpArmv8d16sp = Feature{
662 .name = "fp-armv8d16sp",
663 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
664 .subfeatures = &[_]*const Feature {
665 &feature_fp16,
666 &feature_fpregs,
667 },
668};
669
670pub const feature_fpArmv8sp = Feature{
671 .name = "fp-armv8sp",
672 .description = "Enable ARMv8 FP with no double precision",
673 .subfeatures = &[_]*const Feature {
674 &feature_fp16,
675 &feature_d32,
676 &feature_fpregs,
677 },
678};
679
680pub const feature_fpregs = Feature{
681 .name = "fpregs",
682 .description = "Enable FP registers",
683 .subfeatures = &[_]*const Feature {
684 },
685};
686
687pub const feature_fpregs16 = Feature{
688 .name = "fpregs16",
689 .description = "Enable 16-bit FP registers",
690 .subfeatures = &[_]*const Feature {
691 &feature_fpregs,
692 },
693};
694
695pub const feature_fpregs64 = Feature{
696 .name = "fpregs64",
697 .description = "Enable 64-bit FP registers",
698 .subfeatures = &[_]*const Feature {
699 &feature_fpregs,
700 },
701};
702
703pub const feature_fullfp16 = Feature{
704 .name = "fullfp16",
705 .description = "Enable full half-precision floating point",
706 .subfeatures = &[_]*const Feature {
707 &feature_fp16,
708 &feature_fpregs,
709 },
710};
711
712pub const feature_fuseAes = Feature{
713 .name = "fuse-aes",
714 .description = "CPU fuses AES crypto operations",
715 .subfeatures = &[_]*const Feature {
716 },
717};
718
719pub const feature_fuseLiterals = Feature{
720 .name = "fuse-literals",
721 .description = "CPU fuses literal generation operations",
722 .subfeatures = &[_]*const Feature {
723 },
724};
725
726pub const feature_hwdivArm = Feature{
727 .name = "hwdiv-arm",
728 .description = "Enable divide instructions in ARM mode",
729 .subfeatures = &[_]*const Feature {
730 },
731};
732
733pub const feature_hwdiv = Feature{
734 .name = "hwdiv",
735 .description = "Enable divide instructions in Thumb",
736 .subfeatures = &[_]*const Feature {
737 },
738};
739
740pub const feature_noBranchPredictor = Feature{
741 .name = "no-branch-predictor",
742 .description = "Has no branch predictor",
743 .subfeatures = &[_]*const Feature {
744 },
745};
746
747pub const feature_retAddrStack = Feature{
748 .name = "ret-addr-stack",
749 .description = "Has return address stack",
750 .subfeatures = &[_]*const Feature {
751 },
752};
753
754pub const feature_slowfpvmlx = Feature{
755 .name = "slowfpvmlx",
756 .description = "Disable VFP / NEON MAC instructions",
757 .subfeatures = &[_]*const Feature {
758 },
759};
760
761pub const feature_vmlxHazards = Feature{
762 .name = "vmlx-hazards",
763 .description = "Has VMLx hazards",
764 .subfeatures = &[_]*const Feature {
765 },
766};
767
768pub const feature_lob = Feature{
769 .name = "lob",
770 .description = "Enable Low Overhead Branch extensions",
771 .subfeatures = &[_]*const Feature {
772 },
773};
774
775pub const feature_longCalls = Feature{
776 .name = "long-calls",
777 .description = "Generate calls via indirect call instructions",
778 .subfeatures = &[_]*const Feature {
779 },
780};
781
782pub const feature_mclass = Feature{
783 .name = "mclass",
784 .description = "Is microcontroller profile ('M' series)",
785 .subfeatures = &[_]*const Feature {
786 },
787};
788
789pub const feature_mp = Feature{
790 .name = "mp",
791 .description = "Supports Multiprocessing extension",
792 .subfeatures = &[_]*const Feature {
793 },
794};
795
796pub const feature_mve1beat = Feature{
797 .name = "mve1beat",
798 .description = "Model MVE instructions as a 1 beat per tick architecture",
799 .subfeatures = &[_]*const Feature {
800 },
801};
802
803pub const feature_mve2beat = Feature{
804 .name = "mve2beat",
805 .description = "Model MVE instructions as a 2 beats per tick architecture",
806 .subfeatures = &[_]*const Feature {
807 },
808};
809
810pub const feature_mve4beat = Feature{
811 .name = "mve4beat",
812 .description = "Model MVE instructions as a 4 beats per tick architecture",
813 .subfeatures = &[_]*const Feature {
814 },
815};
816
817pub const feature_muxedUnits = Feature{
818 .name = "muxed-units",
819 .description = "Has muxed AGU and NEON/FPU",
820 .subfeatures = &[_]*const Feature {
821 },
822};
823
824pub const feature_neon = Feature{
825 .name = "neon",
826 .description = "Enable NEON instructions",
827 .subfeatures = &[_]*const Feature {
828 &feature_fpregs,
829 &feature_d32,
830 },
831};
832
833pub const feature_neonfp = Feature{
834 .name = "neonfp",
835 .description = "Use NEON for single precision FP",
836 .subfeatures = &[_]*const Feature {
837 },
838};
839
840pub const feature_neonFpmovs = Feature{
841 .name = "neon-fpmovs",
842 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
843 .subfeatures = &[_]*const Feature {
844 },
845};
846
847pub const feature_naclTrap = Feature{
848 .name = "nacl-trap",
849 .description = "NaCl trap",
850 .subfeatures = &[_]*const Feature {
851 },
852};
853
854pub const feature_noarm = Feature{
855 .name = "noarm",
856 .description = "Does not support ARM mode execution",
857 .subfeatures = &[_]*const Feature {
858 },
859};
860
861pub const feature_noMovt = Feature{
862 .name = "no-movt",
863 .description = "Don't use movt/movw pairs for 32-bit imms",
864 .subfeatures = &[_]*const Feature {
865 },
866};
867
868pub const feature_noNegImmediates = Feature{
869 .name = "no-neg-immediates",
870 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
871 .subfeatures = &[_]*const Feature {
872 },
873};
874
875pub const feature_disablePostraScheduler = Feature{
876 .name = "disable-postra-scheduler",
877 .description = "Don't schedule again after register allocation",
878 .subfeatures = &[_]*const Feature {
879 },
880};
881
882pub const feature_nonpipelinedVfp = Feature{
883 .name = "nonpipelined-vfp",
884 .description = "VFP instructions are not pipelined",
885 .subfeatures = &[_]*const Feature {
886 },
887};
888
889pub const feature_perfmon = Feature{
890 .name = "perfmon",
891 .description = "Enable support for Performance Monitor extensions",
892 .subfeatures = &[_]*const Feature {
893 },
894};
895
896pub const feature_bit32 = Feature{
897 .name = "32bit",
898 .description = "Prefer 32-bit Thumb instrs",
899 .subfeatures = &[_]*const Feature {
900 },
901};
902
903pub const feature_preferIshst = Feature{
904 .name = "prefer-ishst",
905 .description = "Prefer ISHST barriers",
906 .subfeatures = &[_]*const Feature {
907 },
908};
909
910pub const feature_loopAlign = Feature{
911 .name = "loop-align",
912 .description = "Prefer 32-bit alignment for loops",
913 .subfeatures = &[_]*const Feature {
914 },
915};
916
917pub const feature_preferVmovsr = Feature{
918 .name = "prefer-vmovsr",
919 .description = "Prefer VMOVSR",
920 .subfeatures = &[_]*const Feature {
921 },
922};
923
924pub const feature_profUnpr = Feature{
925 .name = "prof-unpr",
926 .description = "Is profitable to unpredicate",
927 .subfeatures = &[_]*const Feature {
928 },
929};
930
931pub const feature_ras = Feature{
932 .name = "ras",
933 .description = "Enable Reliability, Availability and Serviceability extensions",
934 .subfeatures = &[_]*const Feature {
935 },
936};
937
938pub const feature_rclass = Feature{
939 .name = "rclass",
940 .description = "Is realtime profile ('R' series)",
941 .subfeatures = &[_]*const Feature {
942 },
943};
944
945pub const feature_readTpHard = Feature{
946 .name = "read-tp-hard",
947 .description = "Reading thread pointer from register",
948 .subfeatures = &[_]*const Feature {
949 },
950};
951
952pub const feature_reserveR9 = Feature{
953 .name = "reserve-r9",
954 .description = "Reserve R9, making it unavailable as GPR",
955 .subfeatures = &[_]*const Feature {
956 },
957};
958
959pub const feature_sb = Feature{
960 .name = "sb",
961 .description = "Enable v8.5a Speculation Barrier",
962 .subfeatures = &[_]*const Feature {
963 },
964};
965
966pub const feature_sha2 = Feature{
967 .name = "sha2",
968 .description = "Enable SHA1 and SHA256 support",
969 .subfeatures = &[_]*const Feature {
970 &feature_fpregs,
971 &feature_d32,
972 },
973};
974
975pub const feature_slowFpBrcc = Feature{
976 .name = "slow-fp-brcc",
977 .description = "FP compare + branch is slow",
978 .subfeatures = &[_]*const Feature {
979 },
980};
981
982pub const feature_slowLoadDSubreg = Feature{
983 .name = "slow-load-D-subreg",
984 .description = "Loading into D subregs is slow",
985 .subfeatures = &[_]*const Feature {
986 },
987};
988
989pub const feature_slowOddReg = Feature{
990 .name = "slow-odd-reg",
991 .description = "VLDM/VSTM starting with an odd register is slow",
992 .subfeatures = &[_]*const Feature {
993 },
994};
995
996pub const feature_slowVdup32 = Feature{
997 .name = "slow-vdup32",
998 .description = "Has slow VDUP32 - prefer VMOV",
999 .subfeatures = &[_]*const Feature {
1000 },
1001};
1002
1003pub const feature_slowVgetlni32 = Feature{
1004 .name = "slow-vgetlni32",
1005 .description = "Has slow VGETLNi32 - prefer VMOV",
1006 .subfeatures = &[_]*const Feature {
1007 },
1008};
1009
1010pub const feature_splatVfpNeon = Feature{
1011 .name = "splat-vfp-neon",
1012 .description = "Splat register from VFP to NEON",
1013 .subfeatures = &[_]*const Feature {
1014 &feature_dontWidenVmovs,
1015 },
1016};
1017
1018pub const feature_strictAlign = Feature{
1019 .name = "strict-align",
1020 .description = "Disallow all unaligned memory access",
1021 .subfeatures = &[_]*const Feature {
1022 },
1023};
1024
1025pub const feature_thumb2 = Feature{
1026 .name = "thumb2",
1027 .description = "Enable Thumb2 instructions",
1028 .subfeatures = &[_]*const Feature {
1029 },
1030};
1031
1032pub const feature_trustzone = Feature{
1033 .name = "trustzone",
1034 .description = "Enable support for TrustZone security extensions",
1035 .subfeatures = &[_]*const Feature {
1036 },
1037};
1038
1039pub const feature_useAa = Feature{
1040 .name = "use-aa",
1041 .description = "Use alias analysis during codegen",
1042 .subfeatures = &[_]*const Feature {215 .subfeatures = &[_]*const Feature {
216 &feature_fpregs,
1043 },217 },
1044};218};
1045219
1046pub const feature_useMisched = Feature{220pub const feature_fpregs64 = Feature{
1047 .name = "use-misched",221 .name = "fpregs64",
1048 .description = "Use the MachineScheduler",222 .description = "Enable 64-bit FP registers",
1049 .subfeatures = &[_]*const Feature {223 .subfeatures = &[_]*const Feature {
224 &feature_fpregs,
1050 },225 },
1051};226};
1052227
1053pub const feature_wideStrideVfp = Feature{228pub const feature_fullfp16 = Feature{
1054 .name = "wide-stride-vfp",229 .name = "fullfp16",
1055 .description = "Use a wide stride when allocating VFP registers",230 .description = "Enable full half-precision floating point",
1056 .subfeatures = &[_]*const Feature {231 .subfeatures = &[_]*const Feature {
232 &feature_fp16,
233 &feature_fpregs,
1057 },234 },
1058};235};
1059236
1060pub const feature_v7clrex = Feature{237pub const feature_fuseAes = Feature{
1061 .name = "v7clrex",238 .name = "fuse-aes",
1062 .description = "Has v7 clrex instruction",239 .description = "CPU fuses AES crypto operations",
1063 .subfeatures = &[_]*const Feature {240 .subfeatures = &[_]*const Feature {
1064 },241 },
1065};242};
1066243
1067pub const feature_vfp2 = Feature{244pub const feature_fuseLiterals = Feature{
1068 .name = "vfp2",245 .name = "fuse-literals",
1069 .description = "Enable VFP2 instructions",246 .description = "CPU fuses literal generation operations",
1070 .subfeatures = &[_]*const Feature {247 .subfeatures = &[_]*const Feature {
1071 &feature_fpregs,
1072 },248 },
1073};249};
1074250
1075pub const feature_vfp2sp = Feature{251pub const feature_hwdivArm = Feature{
1076 .name = "vfp2sp",252 .name = "hwdiv-arm",
1077 .description = "Enable VFP2 instructions with no double precision",253 .description = "Enable divide instructions in ARM mode",
1078 .subfeatures = &[_]*const Feature {254 .subfeatures = &[_]*const Feature {
1079 &feature_fpregs,
1080 },255 },
1081};256};
1082257
1083pub const feature_vfp3 = Feature{258pub const feature_hwdiv = Feature{
1084 .name = "vfp3",259 .name = "hwdiv",
1085 .description = "Enable VFP3 instructions",260 .description = "Enable divide instructions in Thumb",
1086 .subfeatures = &[_]*const Feature {261 .subfeatures = &[_]*const Feature {
1087 &feature_fpregs,
1088 &feature_d32,
1089 },262 },
1090};263};
1091264
1092pub const feature_vfp3d16 = Feature{265pub const feature_noBranchPredictor = Feature{
1093 .name = "vfp3d16",266 .name = "no-branch-predictor",
1094 .description = "Enable VFP3 instructions with only 16 d-registers",267 .description = "Has no branch predictor",
1095 .subfeatures = &[_]*const Feature {268 .subfeatures = &[_]*const Feature {
1096 &feature_fpregs,
1097 },269 },
1098};270};
1099271
1100pub const feature_vfp3d16sp = Feature{272pub const feature_retAddrStack = Feature{
1101 .name = "vfp3d16sp",273 .name = "ret-addr-stack",
1102 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",274 .description = "Has return address stack",
1103 .subfeatures = &[_]*const Feature {275 .subfeatures = &[_]*const Feature {
1104 &feature_fpregs,
1105 },276 },
1106};277};
1107278
1108pub const feature_vfp3sp = Feature{279pub const feature_slowfpvmlx = Feature{
1109 .name = "vfp3sp",280 .name = "slowfpvmlx",
1110 .description = "Enable VFP3 instructions with no double precision",281 .description = "Disable VFP / NEON MAC instructions",
1111 .subfeatures = &[_]*const Feature {282 .subfeatures = &[_]*const Feature {
1112 &feature_fpregs,
1113 &feature_d32,
1114 },283 },
1115};284};
1116285
1117pub const feature_vfp4 = Feature{286pub const feature_vmlxHazards = Feature{
1118 .name = "vfp4",287 .name = "vmlx-hazards",
1119 .description = "Enable VFP4 instructions",288 .description = "Has VMLx hazards",
1120 .subfeatures = &[_]*const Feature {289 .subfeatures = &[_]*const Feature {
1121 &feature_fp16,
1122 &feature_d32,
1123 &feature_fpregs,
1124 },290 },
1125};291};
1126292
1127pub const feature_vfp4d16 = Feature{293pub const feature_lob = Feature{
1128 .name = "vfp4d16",294 .name = "lob",
1129 .description = "Enable VFP4 instructions with only 16 d-registers",295 .description = "Enable Low Overhead Branch extensions",
1130 .subfeatures = &[_]*const Feature {296 .subfeatures = &[_]*const Feature {
1131 &feature_fp16,
1132 &feature_fpregs,
1133 },297 },
1134};298};
1135299
1136pub const feature_vfp4d16sp = Feature{300pub const feature_longCalls = Feature{
1137 .name = "vfp4d16sp",301 .name = "long-calls",
1138 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",302 .description = "Generate calls via indirect call instructions",
1139 .subfeatures = &[_]*const Feature {303 .subfeatures = &[_]*const Feature {
1140 &feature_fp16,
1141 &feature_fpregs,
1142 },304 },
1143};305};
1144306
1145pub const feature_vfp4sp = Feature{307pub const feature_mclass = Feature{
1146 .name = "vfp4sp",308 .name = "mclass",
1147 .description = "Enable VFP4 instructions with no double precision",309 .description = "Is microcontroller profile ('M' series)",
1148 .subfeatures = &[_]*const Feature {310 .subfeatures = &[_]*const Feature {
1149 &feature_fp16,
1150 &feature_d32,
1151 &feature_fpregs,
1152 },311 },
1153};312};
1154313
1155pub const feature_vmlxForwarding = Feature{314pub const feature_mp = Feature{
1156 .name = "vmlx-forwarding",315 .name = "mp",
1157 .description = "Has multiplier accumulator forwarding",316 .description = "Supports Multiprocessing extension",
1158 .subfeatures = &[_]*const Feature {317 .subfeatures = &[_]*const Feature {
1159 },318 },
1160};319};
1161320
1162pub const feature_virtualization = Feature{321pub const feature_mve1beat = Feature{
1163 .name = "virtualization",322 .name = "mve1beat",
1164 .description = "Supports Virtualization extension",323 .description = "Model MVE instructions as a 1 beat per tick architecture",
1165 .subfeatures = &[_]*const Feature {324 .subfeatures = &[_]*const Feature {
1166 &feature_hwdivArm,
1167 &feature_hwdiv,
1168 },325 },
1169};326};
1170327
1171pub const feature_zcz = Feature{328pub const feature_mve2beat = Feature{
1172 .name = "zcz",329 .name = "mve2beat",
1173 .description = "Has zero-cycle zeroing instructions",330 .description = "Model MVE instructions as a 2 beats per tick architecture",
1174 .subfeatures = &[_]*const Feature {331 .subfeatures = &[_]*const Feature {
1175 },332 },
1176};333};
1177334
1178pub const feature_mvefp = Feature{335pub const feature_mve4beat = Feature{
1179 .name = "mve.fp",336 .name = "mve4beat",
1180 .description = "Support M-Class Vector Extension with integer and floating ops",337 .description = "Model MVE instructions as a 4 beats per tick architecture",
1181 .subfeatures = &[_]*const Feature {338 .subfeatures = &[_]*const Feature {
1182 &feature_dsp,
1183 &feature_fpregs,
1184 &feature_v4t,
1185 &feature_thumb2,
1186 &feature_v7clrex,
1187 &feature_perfmon,
1188 &feature_fp16,
1189 },339 },
1190};340};
1191341
1192pub const feature_mve = Feature{342pub const feature_muxedUnits = Feature{
1193 .name = "mve",343 .name = "muxed-units",
1194 .description = "Support M-Class Vector Extension with integer ops",344 .description = "Has muxed AGU and NEON/FPU",
1195 .subfeatures = &[_]*const Feature {345 .subfeatures = &[_]*const Feature {
1196 &feature_dsp,
1197 &feature_fpregs,
1198 &feature_thumb2,
1199 &feature_v7clrex,
1200 &feature_perfmon,
1201 &feature_v4t,
1202 },346 },
1203};347};
1204348
1205pub const feature_v4t = Feature{349pub const feature_neon = Feature{
1206 .name = "v4t",350 .name = "neon",
1207 .description = "Support ARM v4T instructions",351 .description = "Enable NEON instructions",
1208 .subfeatures = &[_]*const Feature {352 .subfeatures = &[_]*const Feature {
353 &feature_fpregs,
354 &feature_d32,
1209 },355 },
1210};356};
1211357
1212pub const feature_v5te = Feature{358pub const feature_neonfp = Feature{
1213 .name = "v5te",359 .name = "neonfp",
1214 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",360 .description = "Use NEON for single precision FP",
1215 .subfeatures = &[_]*const Feature {361 .subfeatures = &[_]*const Feature {
1216 &feature_v4t,
1217 },362 },
1218};363};
1219364
1220pub const feature_v5t = Feature{365pub const feature_neonFpmovs = Feature{
1221 .name = "v5t",366 .name = "neon-fpmovs",
1222 .description = "Support ARM v5T instructions",367 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
1223 .subfeatures = &[_]*const Feature {368 .subfeatures = &[_]*const Feature {
1224 &feature_v4t,
1225 },369 },
1226};370};
1227371
1228pub const feature_v6k = Feature{372pub const feature_naclTrap = Feature{
1229 .name = "v6k",373 .name = "nacl-trap",
1230 .description = "Support ARM v6k instructions",374 .description = "NaCl trap",
1231 .subfeatures = &[_]*const Feature {375 .subfeatures = &[_]*const Feature {
1232 &feature_v4t,
1233 },376 },
1234};377};
1235378
1236pub const feature_v6m = Feature{379pub const feature_noarm = Feature{
1237 .name = "v6m",380 .name = "noarm",
1238 .description = "Support ARM v6M instructions",381 .description = "Does not support ARM mode execution",
1239 .subfeatures = &[_]*const Feature {382 .subfeatures = &[_]*const Feature {
1240 &feature_v4t,
1241 },383 },
1242};384};
1243385
1244pub const feature_v6 = Feature{386pub const feature_noMovt = Feature{
1245 .name = "v6",387 .name = "no-movt",
1246 .description = "Support ARM v6 instructions",388 .description = "Don't use movt/movw pairs for 32-bit imms",
1247 .subfeatures = &[_]*const Feature {389 .subfeatures = &[_]*const Feature {
1248 &feature_v4t,
1249 },390 },
1250};391};
1251392
1252pub const feature_v6t2 = Feature{393pub const feature_noNegImmediates = Feature{
1253 .name = "v6t2",394 .name = "no-neg-immediates",
1254 .description = "Support ARM v6t2 instructions",395 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
1255 .subfeatures = &[_]*const Feature {396 .subfeatures = &[_]*const Feature {
1256 &feature_thumb2,
1257 &feature_v4t,
1258 },397 },
1259};398};
1260399
1261pub const feature_v7 = Feature{400pub const feature_disablePostraScheduler = Feature{
1262 .name = "v7",401 .name = "disable-postra-scheduler",
1263 .description = "Support ARM v7 instructions",402 .description = "Don't schedule again after register allocation",
1264 .subfeatures = &[_]*const Feature {403 .subfeatures = &[_]*const Feature {
1265 &feature_thumb2,
1266 &feature_v7clrex,
1267 &feature_v4t,
1268 &feature_perfmon,
1269 },404 },
1270};405};
1271406
1272pub const feature_v8m = Feature{407pub const feature_nonpipelinedVfp = Feature{
1273 .name = "v8m",408 .name = "nonpipelined-vfp",
1274 .description = "Support ARM v8M Baseline instructions",409 .description = "VFP instructions are not pipelined",
1275 .subfeatures = &[_]*const Feature {410 .subfeatures = &[_]*const Feature {
1276 &feature_v4t,
1277 },411 },
1278};412};
1279413
1280pub const feature_v8mmain = Feature{414pub const feature_perfmon = Feature{
1281 .name = "v8m.main",415 .name = "perfmon",
1282 .description = "Support ARM v8M Mainline instructions",416 .description = "Enable support for Performance Monitor extensions",
1283 .subfeatures = &[_]*const Feature {417 .subfeatures = &[_]*const Feature {
1284 &feature_thumb2,
1285 &feature_v7clrex,
1286 &feature_v4t,
1287 &feature_perfmon,
1288 },418 },
1289};419};
1290420
1291pub const feature_v8 = Feature{421pub const feature_bit32 = Feature{
1292 .name = "v8",422 .name = "32bit",
1293 .description = "Support ARM v8 instructions",423 .description = "Prefer 32-bit Thumb instrs",
1294 .subfeatures = &[_]*const Feature {424 .subfeatures = &[_]*const Feature {
1295 &feature_thumb2,
1296 &feature_v7clrex,
1297 &feature_acquireRelease,
1298 &feature_perfmon,
1299 &feature_v4t,
1300 },425 },
1301};426};
1302427
1303pub const feature_v81mmain = Feature{428pub const feature_preferIshst = Feature{
1304 .name = "v8.1m.main",429 .name = "prefer-ishst",
1305 .description = "Support ARM v8-1M Mainline instructions",430 .description = "Prefer ISHST barriers",
1306 .subfeatures = &[_]*const Feature {431 .subfeatures = &[_]*const Feature {
1307 &feature_thumb2,
1308 &feature_v7clrex,
1309 &feature_v4t,
1310 &feature_perfmon,
1311 },432 },
1312};433};
1313434
1314pub const feature_v81a = Feature{435pub const feature_loopAlign = Feature{
1315 .name = "v8.1a",436 .name = "loop-align",
1316 .description = "Support ARM v8.1a instructions",437 .description = "Prefer 32-bit alignment for loops",
1317 .subfeatures = &[_]*const Feature {438 .subfeatures = &[_]*const Feature {
1318 &feature_thumb2,
1319 &feature_v7clrex,
1320 &feature_acquireRelease,
1321 &feature_perfmon,
1322 &feature_v4t,
1323 },439 },
1324};440};
1325441
1326pub const feature_v82a = Feature{442pub const feature_preferVmovsr = Feature{
1327 .name = "v8.2a",443 .name = "prefer-vmovsr",
1328 .description = "Support ARM v8.2a instructions",444 .description = "Prefer VMOVSR",
1329 .subfeatures = &[_]*const Feature {445 .subfeatures = &[_]*const Feature {
1330 &feature_thumb2,
1331 &feature_v7clrex,
1332 &feature_acquireRelease,
1333 &feature_perfmon,
1334 &feature_v4t,
1335 },446 },
1336};447};
1337448
1338pub const feature_v83a = Feature{449pub const feature_profUnpr = Feature{
1339 .name = "v8.3a",450 .name = "prof-unpr",
1340 .description = "Support ARM v8.3a instructions",451 .description = "Is profitable to unpredicate",
1341 .subfeatures = &[_]*const Feature {452 .subfeatures = &[_]*const Feature {
1342 &feature_thumb2,
1343 &feature_v7clrex,
1344 &feature_acquireRelease,
1345 &feature_perfmon,
1346 &feature_v4t,
1347 },453 },
1348};454};
1349455
1350pub const feature_v84a = Feature{456pub const feature_ras = Feature{
1351 .name = "v8.4a",457 .name = "ras",
1352 .description = "Support ARM v8.4a instructions",458 .description = "Enable Reliability, Availability and Serviceability extensions",
1353 .subfeatures = &[_]*const Feature {459 .subfeatures = &[_]*const Feature {
1354 &feature_fpregs,
1355 &feature_thumb2,
1356 &feature_v7clrex,
1357 &feature_acquireRelease,
1358 &feature_perfmon,
1359 &feature_v4t,
1360 &feature_d32,
1361 },460 },
1362};461};
1363462
1364pub const feature_v85a = Feature{463pub const feature_rclass = Feature{
1365 .name = "v8.5a",464 .name = "rclass",
1366 .description = "Support ARM v8.5a instructions",465 .description = "Is realtime profile ('R' series)",
1367 .subfeatures = &[_]*const Feature {466 .subfeatures = &[_]*const Feature {
1368 &feature_fpregs,
1369 &feature_thumb2,
1370 &feature_sb,
1371 &feature_v7clrex,
1372 &feature_acquireRelease,
1373 &feature_perfmon,
1374 &feature_v4t,
1375 &feature_d32,
1376 },467 },
1377};468};
1378469
1379pub const feature_iwmmxt = Feature{470pub const feature_readTpHard = Feature{
1380 .name = "iwmmxt",471 .name = "read-tp-hard",
1381 .description = "ARMv5te architecture",472 .description = "Reading thread pointer from register",
1382 .subfeatures = &[_]*const Feature {473 .subfeatures = &[_]*const Feature {
1383 &feature_v4t,
1384 },474 },
1385};475};
1386476
1387pub const feature_iwmmxt2 = Feature{477pub const feature_reserveR9 = Feature{
1388 .name = "iwmmxt2",478 .name = "reserve-r9",
1389 .description = "ARMv5te architecture",479 .description = "Reserve R9, making it unavailable as GPR",
1390 .subfeatures = &[_]*const Feature {480 .subfeatures = &[_]*const Feature {
1391 &feature_v4t,
1392 },481 },
1393};482};
1394483
1395pub const feature_softFloat = Feature{484pub const feature_sb = Feature{
1396 .name = "soft-float",485 .name = "sb",
1397 .description = "Use software floating point features.",486 .description = "Enable v8.5a Speculation Barrier",
1398 .subfeatures = &[_]*const Feature {487 .subfeatures = &[_]*const Feature {
1399 },488 },
1400};489};
1401490
1402pub const feature_thumbMode = Feature{491pub const feature_sha2 = Feature{
1403 .name = "thumb-mode",492 .name = "sha2",
1404 .description = "Thumb mode",493 .description = "Enable SHA1 and SHA256 support",
1405 .subfeatures = &[_]*const Feature {494 .subfeatures = &[_]*const Feature {
495 &feature_fpregs,
496 &feature_d32,
1406 },497 },
1407};498};
1408499
1409pub const feature_a5 = Feature{500pub const feature_slowFpBrcc = Feature{
1410 .name = "a5",501 .name = "slow-fp-brcc",
1411 .description = "Cortex-A5 ARM processors",502 .description = "FP compare + branch is slow",
1412 .subfeatures = &[_]*const Feature {503 .subfeatures = &[_]*const Feature {
1413 },504 },
1414};505};
1415506
1416pub const feature_a7 = Feature{507pub const feature_slowLoadDSubreg = Feature{
1417 .name = "a7",508 .name = "slow-load-D-subreg",
1418 .description = "Cortex-A7 ARM processors",509 .description = "Loading into D subregs is slow",
1419 .subfeatures = &[_]*const Feature {510 .subfeatures = &[_]*const Feature {
1420 },511 },
1421};512};
1422513
1423pub const feature_a8 = Feature{514pub const feature_slowOddReg = Feature{
1424 .name = "a8",515 .name = "slow-odd-reg",
1425 .description = "Cortex-A8 ARM processors",516 .description = "VLDM/VSTM starting with an odd register is slow",
1426 .subfeatures = &[_]*const Feature {517 .subfeatures = &[_]*const Feature {
1427 },518 },
1428};519};
1429520
1430pub const feature_a9 = Feature{521pub const feature_slowVdup32 = Feature{
1431 .name = "a9",522 .name = "slow-vdup32",
1432 .description = "Cortex-A9 ARM processors",523 .description = "Has slow VDUP32 - prefer VMOV",
1433 .subfeatures = &[_]*const Feature {524 .subfeatures = &[_]*const Feature {
1434 },525 },
1435};526};
1436527
1437pub const feature_a12 = Feature{528pub const feature_slowVgetlni32 = Feature{
1438 .name = "a12",529 .name = "slow-vgetlni32",
1439 .description = "Cortex-A12 ARM processors",530 .description = "Has slow VGETLNi32 - prefer VMOV",
1440 .subfeatures = &[_]*const Feature {531 .subfeatures = &[_]*const Feature {
1441 },532 },
1442};533};
1443534
1444pub const feature_a15 = Feature{535pub const feature_splatVfpNeon = Feature{
1445 .name = "a15",536 .name = "splat-vfp-neon",
1446 .description = "Cortex-A15 ARM processors",537 .description = "Splat register from VFP to NEON",
1447 .subfeatures = &[_]*const Feature {538 .subfeatures = &[_]*const Feature {
539 &feature_dontWidenVmovs,
1448 },540 },
1449};541};
1450542
1451pub const feature_a17 = Feature{543pub const feature_strictAlign = Feature{
1452 .name = "a17",544 .name = "strict-align",
1453 .description = "Cortex-A17 ARM processors",545 .description = "Disallow all unaligned memory access",
1454 .subfeatures = &[_]*const Feature {546 .subfeatures = &[_]*const Feature {
1455 },547 },
1456};548};
1457549
1458pub const feature_a32 = Feature{550pub const feature_thumb2 = Feature{
1459 .name = "a32",551 .name = "thumb2",
1460 .description = "Cortex-A32 ARM processors",552 .description = "Enable Thumb2 instructions",
1461 .subfeatures = &[_]*const Feature {553 .subfeatures = &[_]*const Feature {
1462 },554 },
1463};555};
1464556
1465pub const feature_a35 = Feature{557pub const feature_trustzone = Feature{
1466 .name = "a35",558 .name = "trustzone",
1467 .description = "Cortex-A35 ARM processors",559 .description = "Enable support for TrustZone security extensions",
1468 .subfeatures = &[_]*const Feature {560 .subfeatures = &[_]*const Feature {
1469 },561 },
1470};562};
1471563
1472pub const feature_a53 = Feature{564pub const feature_useAa = Feature{
1473 .name = "a53",565 .name = "use-aa",
1474 .description = "Cortex-A53 ARM processors",566 .description = "Use alias analysis during codegen",
1475 .subfeatures = &[_]*const Feature {567 .subfeatures = &[_]*const Feature {
1476 },568 },
1477};569};
1478570
1479pub const feature_a55 = Feature{571pub const feature_useMisched = Feature{
1480 .name = "a55",572 .name = "use-misched",
1481 .description = "Cortex-A55 ARM processors",573 .description = "Use the MachineScheduler",
1482 .subfeatures = &[_]*const Feature {574 .subfeatures = &[_]*const Feature {
1483 },575 },
1484};576};
1485577
1486pub const feature_a57 = Feature{578pub const feature_wideStrideVfp = Feature{
1487 .name = "a57",579 .name = "wide-stride-vfp",
1488 .description = "Cortex-A57 ARM processors",580 .description = "Use a wide stride when allocating VFP registers",
1489 .subfeatures = &[_]*const Feature {581 .subfeatures = &[_]*const Feature {
1490 },582 },
1491};583};
1492584
1493pub const feature_a72 = Feature{585pub const feature_v7clrex = Feature{
1494 .name = "a72",586 .name = "v7clrex",
1495 .description = "Cortex-A72 ARM processors",587 .description = "Has v7 clrex instruction",
1496 .subfeatures = &[_]*const Feature {588 .subfeatures = &[_]*const Feature {
1497 },589 },
1498};590};
1499591
1500pub const feature_a73 = Feature{592pub const feature_vfp2 = Feature{
1501 .name = "a73",593 .name = "vfp2",
1502 .description = "Cortex-A73 ARM processors",594 .description = "Enable VFP2 instructions",
1503 .subfeatures = &[_]*const Feature {595 .subfeatures = &[_]*const Feature {
596 &feature_fpregs,
1504 },597 },
1505};598};
1506599
1507pub const feature_a75 = Feature{600pub const feature_vfp2sp = Feature{
1508 .name = "a75",601 .name = "vfp2sp",
1509 .description = "Cortex-A75 ARM processors",602 .description = "Enable VFP2 instructions with no double precision",
1510 .subfeatures = &[_]*const Feature {603 .subfeatures = &[_]*const Feature {
604 &feature_fpregs,
1511 },605 },
1512};606};
1513607
1514pub const feature_a76 = Feature{608pub const feature_vfp3 = Feature{
1515 .name = "a76",609 .name = "vfp3",
1516 .description = "Cortex-A76 ARM processors",610 .description = "Enable VFP3 instructions",
1517 .subfeatures = &[_]*const Feature {611 .subfeatures = &[_]*const Feature {
612 &feature_fpregs,
613 &feature_d32,
1518 },614 },
1519};615};
1520616
1521pub const feature_exynos = Feature{617pub const feature_vfp3d16 = Feature{
1522 .name = "exynos",618 .name = "vfp3d16",
1523 .description = "Samsung Exynos processors",619 .description = "Enable VFP3 instructions with only 16 d-registers",
1524 .subfeatures = &[_]*const Feature {620 .subfeatures = &[_]*const Feature {
1525 &feature_useAa,
1526 &feature_hwdivArm,
1527 &feature_zcz,
1528 &feature_hwdiv,
1529 &feature_expandFpMlx,
1530 &feature_slowVdup32,
1531 &feature_fpregs,621 &feature_fpregs,
1532 &feature_slowVgetlni32,
1533 &feature_profUnpr,
1534 &feature_wideStrideVfp,
1535 &feature_retAddrStack,
1536 &feature_fuseAes,
1537 &feature_fuseLiterals,
1538 &feature_crc,
1539 &feature_slowfpvmlx,
1540 &feature_slowFpBrcc,
1541 &feature_dontWidenVmovs,
1542 &feature_d32,
1543 },622 },
1544};623};
1545624
1546pub const feature_krait = Feature{625pub const feature_vfp3d16sp = Feature{
1547 .name = "krait",626 .name = "vfp3d16sp",
1548 .description = "Qualcomm Krait processors",627 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
1549 .subfeatures = &[_]*const Feature {628 .subfeatures = &[_]*const Feature {
629 &feature_fpregs,
1550 },630 },
1551};631};
1552632
1553pub const feature_kryo = Feature{633pub const feature_vfp3sp = Feature{
1554 .name = "kryo",634 .name = "vfp3sp",
1555 .description = "Qualcomm Kryo processors",635 .description = "Enable VFP3 instructions with no double precision",
1556 .subfeatures = &[_]*const Feature {636 .subfeatures = &[_]*const Feature {
637 &feature_fpregs,
638 &feature_d32,
1557 },639 },
1558};640};
1559641
1560pub const feature_m3 = Feature{642pub const feature_vfp4 = Feature{
1561 .name = "m3",643 .name = "vfp4",
1562 .description = "Cortex-M3 ARM processors",644 .description = "Enable VFP4 instructions",
1563 .subfeatures = &[_]*const Feature {645 .subfeatures = &[_]*const Feature {
646 &feature_fp16,
647 &feature_fpregs,
648 &feature_d32,
1564 },649 },
1565};650};
1566651
1567pub const feature_r4 = Feature{652pub const feature_vfp4d16 = Feature{
1568 .name = "r4",653 .name = "vfp4d16",
1569 .description = "Cortex-R4 ARM processors",654 .description = "Enable VFP4 instructions with only 16 d-registers",
1570 .subfeatures = &[_]*const Feature {655 .subfeatures = &[_]*const Feature {
656 &feature_fp16,
657 &feature_fpregs,
1571 },658 },
1572};659};
1573660
1574pub const feature_r5 = Feature{661pub const feature_vfp4d16sp = Feature{
1575 .name = "r5",662 .name = "vfp4d16sp",
1576 .description = "Cortex-R5 ARM processors",663 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
1577 .subfeatures = &[_]*const Feature {664 .subfeatures = &[_]*const Feature {
665 &feature_fp16,
666 &feature_fpregs,
1578 },667 },
1579};668};
1580669
1581pub const feature_r7 = Feature{670pub const feature_vfp4sp = Feature{
1582 .name = "r7",671 .name = "vfp4sp",
1583 .description = "Cortex-R7 ARM processors",672 .description = "Enable VFP4 instructions with no double precision",
1584 .subfeatures = &[_]*const Feature {673 .subfeatures = &[_]*const Feature {
674 &feature_fp16,
675 &feature_fpregs,
676 &feature_d32,
1585 },677 },
1586};678};
1587679
1588pub const feature_r52 = Feature{680pub const feature_vmlxForwarding = Feature{
1589 .name = "r52",681 .name = "vmlx-forwarding",
1590 .description = "Cortex-R52 ARM processors",682 .description = "Has multiplier accumulator forwarding",
1591 .subfeatures = &[_]*const Feature {683 .subfeatures = &[_]*const Feature {
1592 },684 },
1593};685};
1594686
1595pub const feature_swift = Feature{687pub const feature_virtualization = Feature{
1596 .name = "swift",688 .name = "virtualization",
1597 .description = "Swift ARM processors",689 .description = "Supports Virtualization extension",
1598 .subfeatures = &[_]*const Feature {690 .subfeatures = &[_]*const Feature {
691 &feature_hwdiv,
692 &feature_hwdivArm,
1599 },693 },
1600};694};
1601695
1602pub const feature_xscale = Feature{696pub const feature_zcz = Feature{
1603 .name = "xscale",697 .name = "zcz",
1604 .description = "ARMv5te architecture",698 .description = "Has zero-cycle zeroing instructions",
1605 .subfeatures = &[_]*const Feature {699 .subfeatures = &[_]*const Feature {
1606 &feature_v4t,
1607 },700 },
1608};701};
1609702
1610pub const features = &[_]*const Feature {703pub const features = &[_]*const Feature {
1611 &feature_armv2,
1612 &feature_armv2a,
1613 &feature_armv3,
1614 &feature_armv3m,
1615 &feature_armv4,
1616 &feature_armv4t,
1617 &feature_armv5t,
1618 &feature_armv5te,
1619 &feature_armv5tej,
1620 &feature_armv6,
1621 &feature_armv6j,
1622 &feature_armv6k,
1623 &feature_armv6kz,
1624 &feature_armv6M,
1625 &feature_armv6sM,
1626 &feature_armv6t2,
1627 &feature_armv7A,
1628 &feature_armv7eM,
1629 &feature_armv7k,
1630 &feature_armv7M,
1631 &feature_armv7R,
1632 &feature_armv7s,
1633 &feature_armv7ve,
1634 &feature_armv8A,
1635 &feature_armv8Mbase,
1636 &feature_armv8Mmain,
1637 &feature_armv8R,
1638 &feature_armv81A,
1639 &feature_armv81Mmain,
1640 &feature_armv82A,
1641 &feature_armv83A,
1642 &feature_armv84A,
1643 &feature_armv85A,
1644 &feature_msecext8,704 &feature_msecext8,
1645 &feature_aclass,705 &feature_aclass,
1646 &feature_aes,706 &feature_aes,
...@@ -1734,63 +794,12 @@ pub const features = &[_]*const Feature {...@@ -1734,63 +794,12 @@ pub const features = &[_]*const Feature {
1734 &feature_vmlxForwarding,794 &feature_vmlxForwarding,
1735 &feature_virtualization,795 &feature_virtualization,
1736 &feature_zcz,796 &feature_zcz,
1737 &feature_mvefp,
1738 &feature_mve,
1739 &feature_v4t,
1740 &feature_v5te,
1741 &feature_v5t,
1742 &feature_v6k,
1743 &feature_v6m,
1744 &feature_v6,
1745 &feature_v6t2,
1746 &feature_v7,
1747 &feature_v8m,
1748 &feature_v8mmain,
1749 &feature_v8,
1750 &feature_v81mmain,
1751 &feature_v81a,
1752 &feature_v82a,
1753 &feature_v83a,
1754 &feature_v84a,
1755 &feature_v85a,
1756 &feature_iwmmxt,
1757 &feature_iwmmxt2,
1758 &feature_softFloat,
1759 &feature_thumbMode,
1760 &feature_a5,
1761 &feature_a7,
1762 &feature_a8,
1763 &feature_a9,
1764 &feature_a12,
1765 &feature_a15,
1766 &feature_a17,
1767 &feature_a32,
1768 &feature_a35,
1769 &feature_a53,
1770 &feature_a55,
1771 &feature_a57,
1772 &feature_a72,
1773 &feature_a73,
1774 &feature_a75,
1775 &feature_a76,
1776 &feature_exynos,
1777 &feature_krait,
1778 &feature_kryo,
1779 &feature_m3,
1780 &feature_r4,
1781 &feature_r5,
1782 &feature_r7,
1783 &feature_r52,
1784 &feature_swift,
1785 &feature_xscale,
1786};797};
1787798
1788pub const cpu_arm1020e = Cpu{799pub const cpu_arm1020e = Cpu{
1789 .name = "arm1020e",800 .name = "arm1020e",
1790 .llvm_name = "arm1020e",801 .llvm_name = "arm1020e",
1791 .subfeatures = &[_]*const Feature {802 .subfeatures = &[_]*const Feature {
1792 &feature_v4t,
1793 &feature_armv5te,
1794 },803 },
1795};804};
1796805
...@@ -1798,8 +807,6 @@ pub const cpu_arm1020t = Cpu{...@@ -1798,8 +807,6 @@ pub const cpu_arm1020t = Cpu{
1798 .name = "arm1020t",807 .name = "arm1020t",
1799 .llvm_name = "arm1020t",808 .llvm_name = "arm1020t",
1800 .subfeatures = &[_]*const Feature {809 .subfeatures = &[_]*const Feature {
1801 &feature_v4t,
1802 &feature_armv5t,
1803 },810 },
1804};811};
1805812
...@@ -1807,8 +814,6 @@ pub const cpu_arm1022e = Cpu{...@@ -1807,8 +814,6 @@ pub const cpu_arm1022e = Cpu{
1807 .name = "arm1022e",814 .name = "arm1022e",
1808 .llvm_name = "arm1022e",815 .llvm_name = "arm1022e",
1809 .subfeatures = &[_]*const Feature {816 .subfeatures = &[_]*const Feature {
1810 &feature_v4t,
1811 &feature_armv5te,
1812 },817 },
1813};818};
1814819
...@@ -1816,8 +821,6 @@ pub const cpu_arm10e = Cpu{...@@ -1816,8 +821,6 @@ pub const cpu_arm10e = Cpu{
1816 .name = "arm10e",821 .name = "arm10e",
1817 .llvm_name = "arm10e",822 .llvm_name = "arm10e",
1818 .subfeatures = &[_]*const Feature {823 .subfeatures = &[_]*const Feature {
1819 &feature_v4t,
1820 &feature_armv5te,
1821 },824 },
1822};825};
1823826
...@@ -1825,8 +828,6 @@ pub const cpu_arm10tdmi = Cpu{...@@ -1825,8 +828,6 @@ pub const cpu_arm10tdmi = Cpu{
1825 .name = "arm10tdmi",828 .name = "arm10tdmi",
1826 .llvm_name = "arm10tdmi",829 .llvm_name = "arm10tdmi",
1827 .subfeatures = &[_]*const Feature {830 .subfeatures = &[_]*const Feature {
1828 &feature_v4t,
1829 &feature_armv5t,
1830 },831 },
1831};832};
1832833
...@@ -1834,9 +835,7 @@ pub const cpu_arm1136jS = Cpu{...@@ -1834,9 +835,7 @@ pub const cpu_arm1136jS = Cpu{
1834 .name = "arm1136j-s",835 .name = "arm1136j-s",
1835 .llvm_name = "arm1136j-s",836 .llvm_name = "arm1136j-s",
1836 .subfeatures = &[_]*const Feature {837 .subfeatures = &[_]*const Feature {
1837 &feature_v4t,
1838 &feature_dsp,838 &feature_dsp,
1839 &feature_armv6,
1840 },839 },
1841};840};
1842841
...@@ -1844,9 +843,7 @@ pub const cpu_arm1136jfS = Cpu{...@@ -1844,9 +843,7 @@ pub const cpu_arm1136jfS = Cpu{
1844 .name = "arm1136jf-s",843 .name = "arm1136jf-s",
1845 .llvm_name = "arm1136jf-s",844 .llvm_name = "arm1136jf-s",
1846 .subfeatures = &[_]*const Feature {845 .subfeatures = &[_]*const Feature {
1847 &feature_v4t,
1848 &feature_dsp,846 &feature_dsp,
1849 &feature_armv6,
1850 &feature_slowfpvmlx,847 &feature_slowfpvmlx,
1851 &feature_fpregs,848 &feature_fpregs,
1852 &feature_vfp2,849 &feature_vfp2,
...@@ -1857,10 +854,8 @@ pub const cpu_arm1156t2S = Cpu{...@@ -1857,10 +854,8 @@ pub const cpu_arm1156t2S = Cpu{
1857 .name = "arm1156t2-s",854 .name = "arm1156t2-s",
1858 .llvm_name = "arm1156t2-s",855 .llvm_name = "arm1156t2-s",
1859 .subfeatures = &[_]*const Feature {856 .subfeatures = &[_]*const Feature {
1860 &feature_thumb2,
1861 &feature_dsp,857 &feature_dsp,
1862 &feature_v4t,858 &feature_thumb2,
1863 &feature_armv6t2,
1864 },859 },
1865};860};
1866861
...@@ -1868,10 +863,8 @@ pub const cpu_arm1156t2fS = Cpu{...@@ -1868,10 +863,8 @@ pub const cpu_arm1156t2fS = Cpu{
1868 .name = "arm1156t2f-s",863 .name = "arm1156t2f-s",
1869 .llvm_name = "arm1156t2f-s",864 .llvm_name = "arm1156t2f-s",
1870 .subfeatures = &[_]*const Feature {865 .subfeatures = &[_]*const Feature {
1871 &feature_thumb2,
1872 &feature_dsp,866 &feature_dsp,
1873 &feature_v4t,867 &feature_thumb2,
1874 &feature_armv6t2,
1875 &feature_slowfpvmlx,868 &feature_slowfpvmlx,
1876 &feature_fpregs,869 &feature_fpregs,
1877 &feature_vfp2,870 &feature_vfp2,
...@@ -1882,9 +875,7 @@ pub const cpu_arm1176jS = Cpu{...@@ -1882,9 +875,7 @@ pub const cpu_arm1176jS = Cpu{
1882 .name = "arm1176j-s",875 .name = "arm1176j-s",
1883 .llvm_name = "arm1176j-s",876 .llvm_name = "arm1176j-s",
1884 .subfeatures = &[_]*const Feature {877 .subfeatures = &[_]*const Feature {
1885 &feature_v4t,
1886 &feature_trustzone,878 &feature_trustzone,
1887 &feature_armv6kz,
1888 },879 },
1889};880};
1890881
...@@ -1892,9 +883,7 @@ pub const cpu_arm1176jzS = Cpu{...@@ -1892,9 +883,7 @@ pub const cpu_arm1176jzS = Cpu{
1892 .name = "arm1176jz-s",883 .name = "arm1176jz-s",
1893 .llvm_name = "arm1176jz-s",884 .llvm_name = "arm1176jz-s",
1894 .subfeatures = &[_]*const Feature {885 .subfeatures = &[_]*const Feature {
1895 &feature_v4t,
1896 &feature_trustzone,886 &feature_trustzone,
1897 &feature_armv6kz,
1898 },887 },
1899};888};
1900889
...@@ -1902,9 +891,7 @@ pub const cpu_arm1176jzfS = Cpu{...@@ -1902,9 +891,7 @@ pub const cpu_arm1176jzfS = Cpu{
1902 .name = "arm1176jzf-s",891 .name = "arm1176jzf-s",
1903 .llvm_name = "arm1176jzf-s",892 .llvm_name = "arm1176jzf-s",
1904 .subfeatures = &[_]*const Feature {893 .subfeatures = &[_]*const Feature {
1905 &feature_v4t,
1906 &feature_trustzone,894 &feature_trustzone,
1907 &feature_armv6kz,
1908 &feature_slowfpvmlx,895 &feature_slowfpvmlx,
1909 &feature_fpregs,896 &feature_fpregs,
1910 &feature_vfp2,897 &feature_vfp2,
...@@ -1915,8 +902,6 @@ pub const cpu_arm710t = Cpu{...@@ -1915,8 +902,6 @@ pub const cpu_arm710t = Cpu{
1915 .name = "arm710t",902 .name = "arm710t",
1916 .llvm_name = "arm710t",903 .llvm_name = "arm710t",
1917 .subfeatures = &[_]*const Feature {904 .subfeatures = &[_]*const Feature {
1918 &feature_v4t,
1919 &feature_armv4t,
1920 },905 },
1921};906};
1922907
...@@ -1924,8 +909,6 @@ pub const cpu_arm720t = Cpu{...@@ -1924,8 +909,6 @@ pub const cpu_arm720t = Cpu{
1924 .name = "arm720t",909 .name = "arm720t",
1925 .llvm_name = "arm720t",910 .llvm_name = "arm720t",
1926 .subfeatures = &[_]*const Feature {911 .subfeatures = &[_]*const Feature {
1927 &feature_v4t,
1928 &feature_armv4t,
1929 },912 },
1930};913};
1931914
...@@ -1933,8 +916,6 @@ pub const cpu_arm7tdmi = Cpu{...@@ -1933,8 +916,6 @@ pub const cpu_arm7tdmi = Cpu{
1933 .name = "arm7tdmi",916 .name = "arm7tdmi",
1934 .llvm_name = "arm7tdmi",917 .llvm_name = "arm7tdmi",
1935 .subfeatures = &[_]*const Feature {918 .subfeatures = &[_]*const Feature {
1936 &feature_v4t,
1937 &feature_armv4t,
1938 },919 },
1939};920};
1940921
...@@ -1942,8 +923,6 @@ pub const cpu_arm7tdmiS = Cpu{...@@ -1942,8 +923,6 @@ pub const cpu_arm7tdmiS = Cpu{
1942 .name = "arm7tdmi-s",923 .name = "arm7tdmi-s",
1943 .llvm_name = "arm7tdmi-s",924 .llvm_name = "arm7tdmi-s",
1944 .subfeatures = &[_]*const Feature {925 .subfeatures = &[_]*const Feature {
1945 &feature_v4t,
1946 &feature_armv4t,
1947 },926 },
1948};927};
1949928
...@@ -1951,7 +930,6 @@ pub const cpu_arm8 = Cpu{...@@ -1951,7 +930,6 @@ pub const cpu_arm8 = Cpu{
1951 .name = "arm8",930 .name = "arm8",
1952 .llvm_name = "arm8",931 .llvm_name = "arm8",
1953 .subfeatures = &[_]*const Feature {932 .subfeatures = &[_]*const Feature {
1954 &feature_armv4,
1955 },933 },
1956};934};
1957935
...@@ -1959,7 +937,6 @@ pub const cpu_arm810 = Cpu{...@@ -1959,7 +937,6 @@ pub const cpu_arm810 = Cpu{
1959 .name = "arm810",937 .name = "arm810",
1960 .llvm_name = "arm810",938 .llvm_name = "arm810",
1961 .subfeatures = &[_]*const Feature {939 .subfeatures = &[_]*const Feature {
1962 &feature_armv4,
1963 },940 },
1964};941};
1965942
...@@ -1967,8 +944,6 @@ pub const cpu_arm9 = Cpu{...@@ -1967,8 +944,6 @@ pub const cpu_arm9 = Cpu{
1967 .name = "arm9",944 .name = "arm9",
1968 .llvm_name = "arm9",945 .llvm_name = "arm9",
1969 .subfeatures = &[_]*const Feature {946 .subfeatures = &[_]*const Feature {
1970 &feature_v4t,
1971 &feature_armv4t,
1972 },947 },
1973};948};
1974949
...@@ -1976,8 +951,6 @@ pub const cpu_arm920 = Cpu{...@@ -1976,8 +951,6 @@ pub const cpu_arm920 = Cpu{
1976 .name = "arm920",951 .name = "arm920",
1977 .llvm_name = "arm920",952 .llvm_name = "arm920",
1978 .subfeatures = &[_]*const Feature {953 .subfeatures = &[_]*const Feature {
1979 &feature_v4t,
1980 &feature_armv4t,
1981 },954 },
1982};955};
1983956
...@@ -1985,8 +958,6 @@ pub const cpu_arm920t = Cpu{...@@ -1985,8 +958,6 @@ pub const cpu_arm920t = Cpu{
1985 .name = "arm920t",958 .name = "arm920t",
1986 .llvm_name = "arm920t",959 .llvm_name = "arm920t",
1987 .subfeatures = &[_]*const Feature {960 .subfeatures = &[_]*const Feature {
1988 &feature_v4t,
1989 &feature_armv4t,
1990 },961 },
1991};962};
1992963
...@@ -1994,8 +965,6 @@ pub const cpu_arm922t = Cpu{...@@ -1994,8 +965,6 @@ pub const cpu_arm922t = Cpu{
1994 .name = "arm922t",965 .name = "arm922t",
1995 .llvm_name = "arm922t",966 .llvm_name = "arm922t",
1996 .subfeatures = &[_]*const Feature {967 .subfeatures = &[_]*const Feature {
1997 &feature_v4t,
1998 &feature_armv4t,
1999 },968 },
2000};969};
2001970
...@@ -2003,8 +972,6 @@ pub const cpu_arm926ejS = Cpu{...@@ -2003,8 +972,6 @@ pub const cpu_arm926ejS = Cpu{
2003 .name = "arm926ej-s",972 .name = "arm926ej-s",
2004 .llvm_name = "arm926ej-s",973 .llvm_name = "arm926ej-s",
2005 .subfeatures = &[_]*const Feature {974 .subfeatures = &[_]*const Feature {
2006 &feature_v4t,
2007 &feature_armv5te,
2008 },975 },
2009};976};
2010977
...@@ -2012,8 +979,6 @@ pub const cpu_arm940t = Cpu{...@@ -2012,8 +979,6 @@ pub const cpu_arm940t = Cpu{
2012 .name = "arm940t",979 .name = "arm940t",
2013 .llvm_name = "arm940t",980 .llvm_name = "arm940t",
2014 .subfeatures = &[_]*const Feature {981 .subfeatures = &[_]*const Feature {
2015 &feature_v4t,
2016 &feature_armv4t,
2017 },982 },
2018};983};
2019984
...@@ -2021,8 +986,6 @@ pub const cpu_arm946eS = Cpu{...@@ -2021,8 +986,6 @@ pub const cpu_arm946eS = Cpu{
2021 .name = "arm946e-s",986 .name = "arm946e-s",
2022 .llvm_name = "arm946e-s",987 .llvm_name = "arm946e-s",
2023 .subfeatures = &[_]*const Feature {988 .subfeatures = &[_]*const Feature {
2024 &feature_v4t,
2025 &feature_armv5te,
2026 },989 },
2027};990};
2028991
...@@ -2030,8 +993,6 @@ pub const cpu_arm966eS = Cpu{...@@ -2030,8 +993,6 @@ pub const cpu_arm966eS = Cpu{
2030 .name = "arm966e-s",993 .name = "arm966e-s",
2031 .llvm_name = "arm966e-s",994 .llvm_name = "arm966e-s",
2032 .subfeatures = &[_]*const Feature {995 .subfeatures = &[_]*const Feature {
2033 &feature_v4t,
2034 &feature_armv5te,
2035 },996 },
2036};997};
2037998
...@@ -2039,8 +1000,6 @@ pub const cpu_arm968eS = Cpu{...@@ -2039,8 +1000,6 @@ pub const cpu_arm968eS = Cpu{
2039 .name = "arm968e-s",1000 .name = "arm968e-s",
2040 .llvm_name = "arm968e-s",1001 .llvm_name = "arm968e-s",
2041 .subfeatures = &[_]*const Feature {1002 .subfeatures = &[_]*const Feature {
2042 &feature_v4t,
2043 &feature_armv5te,
2044 },1003 },
2045};1004};
20461005
...@@ -2048,8 +1007,6 @@ pub const cpu_arm9e = Cpu{...@@ -2048,8 +1007,6 @@ pub const cpu_arm9e = Cpu{
2048 .name = "arm9e",1007 .name = "arm9e",
2049 .llvm_name = "arm9e",1008 .llvm_name = "arm9e",
2050 .subfeatures = &[_]*const Feature {1009 .subfeatures = &[_]*const Feature {
2051 &feature_v4t,
2052 &feature_armv5te,
2053 },1010 },
2054};1011};
20551012
...@@ -2057,8 +1014,6 @@ pub const cpu_arm9tdmi = Cpu{...@@ -2057,8 +1014,6 @@ pub const cpu_arm9tdmi = Cpu{
2057 .name = "arm9tdmi",1014 .name = "arm9tdmi",
2058 .llvm_name = "arm9tdmi",1015 .llvm_name = "arm9tdmi",
2059 .subfeatures = &[_]*const Feature {1016 .subfeatures = &[_]*const Feature {
2060 &feature_v4t,
2061 &feature_armv4t,
2062 },1017 },
2063};1018};
20641019
...@@ -2066,16 +1021,14 @@ pub const cpu_cortexA12 = Cpu{...@@ -2066,16 +1021,14 @@ pub const cpu_cortexA12 = Cpu{
2066 .name = "cortex-a12",1021 .name = "cortex-a12",
2067 .llvm_name = "cortex-a12",1022 .llvm_name = "cortex-a12",
2068 .subfeatures = &[_]*const Feature {1023 .subfeatures = &[_]*const Feature {
1024 &feature_fpregs,
2069 &feature_db,1025 &feature_db,
1026 &feature_d32,
1027 &feature_perfmon,
2070 &feature_dsp,1028 &feature_dsp,
2071 &feature_fpregs,
2072 &feature_thumb2,
2073 &feature_v7clrex,
2074 &feature_aclass,1029 &feature_aclass,
2075 &feature_perfmon,1030 &feature_v7clrex,
2076 &feature_v4t,1031 &feature_thumb2,
2077 &feature_d32,
2078 &feature_armv7A,
2079 &feature_avoidPartialCpsr,1032 &feature_avoidPartialCpsr,
2080 &feature_retAddrStack,1033 &feature_retAddrStack,
2081 &feature_mp,1034 &feature_mp,
...@@ -2083,10 +1036,9 @@ pub const cpu_cortexA12 = Cpu{...@@ -2083,10 +1036,9 @@ pub const cpu_cortexA12 = Cpu{
2083 &feature_fp16,1036 &feature_fp16,
2084 &feature_vfp4,1037 &feature_vfp4,
2085 &feature_vmlxForwarding,1038 &feature_vmlxForwarding,
2086 &feature_hwdivArm,
2087 &feature_hwdiv,1039 &feature_hwdiv,
1040 &feature_hwdivArm,
2088 &feature_virtualization,1041 &feature_virtualization,
2089 &feature_a12,
2090 },1042 },
2091};1043};
20921044
...@@ -2094,16 +1046,14 @@ pub const cpu_cortexA15 = Cpu{...@@ -2094,16 +1046,14 @@ pub const cpu_cortexA15 = Cpu{
2094 .name = "cortex-a15",1046 .name = "cortex-a15",
2095 .llvm_name = "cortex-a15",1047 .llvm_name = "cortex-a15",
2096 .subfeatures = &[_]*const Feature {1048 .subfeatures = &[_]*const Feature {
1049 &feature_fpregs,
2097 &feature_db,1050 &feature_db,
1051 &feature_d32,
1052 &feature_perfmon,
2098 &feature_dsp,1053 &feature_dsp,
2099 &feature_fpregs,
2100 &feature_thumb2,
2101 &feature_v7clrex,
2102 &feature_aclass,1054 &feature_aclass,
2103 &feature_perfmon,1055 &feature_v7clrex,
2104 &feature_v4t,1056 &feature_thumb2,
2105 &feature_d32,
2106 &feature_armv7A,
2107 &feature_avoidPartialCpsr,1057 &feature_avoidPartialCpsr,
2108 &feature_vldnAlign,1058 &feature_vldnAlign,
2109 &feature_dontWidenVmovs,1059 &feature_dontWidenVmovs,
...@@ -2114,10 +1064,9 @@ pub const cpu_cortexA15 = Cpu{...@@ -2114,10 +1064,9 @@ pub const cpu_cortexA15 = Cpu{
2114 &feature_trustzone,1064 &feature_trustzone,
2115 &feature_fp16,1065 &feature_fp16,
2116 &feature_vfp4,1066 &feature_vfp4,
2117 &feature_hwdivArm,
2118 &feature_hwdiv,1067 &feature_hwdiv,
1068 &feature_hwdivArm,
2119 &feature_virtualization,1069 &feature_virtualization,
2120 &feature_a15,
2121 },1070 },
2122};1071};
21231072
...@@ -2125,16 +1074,14 @@ pub const cpu_cortexA17 = Cpu{...@@ -2125,16 +1074,14 @@ pub const cpu_cortexA17 = Cpu{
2125 .name = "cortex-a17",1074 .name = "cortex-a17",
2126 .llvm_name = "cortex-a17",1075 .llvm_name = "cortex-a17",
2127 .subfeatures = &[_]*const Feature {1076 .subfeatures = &[_]*const Feature {
1077 &feature_fpregs,
2128 &feature_db,1078 &feature_db,
1079 &feature_d32,
1080 &feature_perfmon,
2129 &feature_dsp,1081 &feature_dsp,
2130 &feature_fpregs,
2131 &feature_thumb2,
2132 &feature_v7clrex,
2133 &feature_aclass,1082 &feature_aclass,
2134 &feature_perfmon,1083 &feature_v7clrex,
2135 &feature_v4t,1084 &feature_thumb2,
2136 &feature_d32,
2137 &feature_armv7A,
2138 &feature_avoidPartialCpsr,1085 &feature_avoidPartialCpsr,
2139 &feature_retAddrStack,1086 &feature_retAddrStack,
2140 &feature_mp,1087 &feature_mp,
...@@ -2142,10 +1089,9 @@ pub const cpu_cortexA17 = Cpu{...@@ -2142,10 +1089,9 @@ pub const cpu_cortexA17 = Cpu{
2142 &feature_fp16,1089 &feature_fp16,
2143 &feature_vfp4,1090 &feature_vfp4,
2144 &feature_vmlxForwarding,1091 &feature_vmlxForwarding,
2145 &feature_hwdivArm,
2146 &feature_hwdiv,1092 &feature_hwdiv,
1093 &feature_hwdivArm,
2147 &feature_virtualization,1094 &feature_virtualization,
2148 &feature_a17,
2149 },1095 },
2150};1096};
21511097
...@@ -2153,23 +1099,21 @@ pub const cpu_cortexA32 = Cpu{...@@ -2153,23 +1099,21 @@ pub const cpu_cortexA32 = Cpu{
2153 .name = "cortex-a32",1099 .name = "cortex-a32",
2154 .llvm_name = "cortex-a32",1100 .llvm_name = "cortex-a32",
2155 .subfeatures = &[_]*const Feature {1101 .subfeatures = &[_]*const Feature {
2156 &feature_db,
2157 &feature_dsp,
2158 &feature_hwdivArm,
2159 &feature_hwdiv,1102 &feature_hwdiv,
2160 &feature_trustzone,1103 &feature_trustzone,
2161 &feature_fpregs,1104 &feature_fpregs,
2162 &feature_v4t,1105 &feature_db,
2163 &feature_thumb2,
2164 &feature_v7clrex,
2165 &feature_aclass,
2166 &feature_crc,
2167 &feature_mp,
2168 &feature_acquireRelease,1106 &feature_acquireRelease,
2169 &feature_fp16,
2170 &feature_perfmon,
2171 &feature_d32,1107 &feature_d32,
2172 &feature_armv8A,1108 &feature_perfmon,
1109 &feature_mp,
1110 &feature_hwdivArm,
1111 &feature_dsp,
1112 &feature_aclass,
1113 &feature_fp16,
1114 &feature_v7clrex,
1115 &feature_crc,
1116 &feature_thumb2,
2173 &feature_crypto,1117 &feature_crypto,
2174 },1118 },
2175};1119};
...@@ -2178,25 +1122,22 @@ pub const cpu_cortexA35 = Cpu{...@@ -2178,25 +1122,22 @@ pub const cpu_cortexA35 = Cpu{
2178 .name = "cortex-a35",1122 .name = "cortex-a35",
2179 .llvm_name = "cortex-a35",1123 .llvm_name = "cortex-a35",
2180 .subfeatures = &[_]*const Feature {1124 .subfeatures = &[_]*const Feature {
2181 &feature_db,
2182 &feature_dsp,
2183 &feature_hwdivArm,
2184 &feature_hwdiv,1125 &feature_hwdiv,
2185 &feature_trustzone,1126 &feature_trustzone,
2186 &feature_fpregs,1127 &feature_fpregs,
2187 &feature_v4t,1128 &feature_db,
2188 &feature_thumb2,
2189 &feature_v7clrex,
2190 &feature_aclass,
2191 &feature_crc,
2192 &feature_mp,
2193 &feature_acquireRelease,1129 &feature_acquireRelease,
2194 &feature_fp16,
2195 &feature_perfmon,
2196 &feature_d32,1130 &feature_d32,
2197 &feature_armv8A,1131 &feature_perfmon,
1132 &feature_mp,
1133 &feature_hwdivArm,
1134 &feature_dsp,
1135 &feature_aclass,
1136 &feature_fp16,
1137 &feature_v7clrex,
1138 &feature_crc,
1139 &feature_thumb2,
2198 &feature_crypto,1140 &feature_crypto,
2199 &feature_a35,
2200 },1141 },
2201};1142};
22021143
...@@ -2204,16 +1145,14 @@ pub const cpu_cortexA5 = Cpu{...@@ -2204,16 +1145,14 @@ pub const cpu_cortexA5 = Cpu{
2204 .name = "cortex-a5",1145 .name = "cortex-a5",
2205 .llvm_name = "cortex-a5",1146 .llvm_name = "cortex-a5",
2206 .subfeatures = &[_]*const Feature {1147 .subfeatures = &[_]*const Feature {
1148 &feature_fpregs,
2207 &feature_db,1149 &feature_db,
1150 &feature_d32,
1151 &feature_perfmon,
2208 &feature_dsp,1152 &feature_dsp,
2209 &feature_fpregs,
2210 &feature_thumb2,
2211 &feature_v7clrex,
2212 &feature_aclass,1153 &feature_aclass,
2213 &feature_perfmon,1154 &feature_v7clrex,
2214 &feature_v4t,1155 &feature_thumb2,
2215 &feature_d32,
2216 &feature_armv7A,
2217 &feature_retAddrStack,1156 &feature_retAddrStack,
2218 &feature_slowfpvmlx,1157 &feature_slowfpvmlx,
2219 &feature_mp,1158 &feature_mp,
...@@ -2222,7 +1161,6 @@ pub const cpu_cortexA5 = Cpu{...@@ -2222,7 +1161,6 @@ pub const cpu_cortexA5 = Cpu{
2222 &feature_fp16,1161 &feature_fp16,
2223 &feature_vfp4,1162 &feature_vfp4,
2224 &feature_vmlxForwarding,1163 &feature_vmlxForwarding,
2225 &feature_a5,
2226 },1164 },
2227};1165};
22281166
...@@ -2230,26 +1168,23 @@ pub const cpu_cortexA53 = Cpu{...@@ -2230,26 +1168,23 @@ pub const cpu_cortexA53 = Cpu{
2230 .name = "cortex-a53",1168 .name = "cortex-a53",
2231 .llvm_name = "cortex-a53",1169 .llvm_name = "cortex-a53",
2232 .subfeatures = &[_]*const Feature {1170 .subfeatures = &[_]*const Feature {
2233 &feature_db,
2234 &feature_dsp,
2235 &feature_hwdivArm,
2236 &feature_hwdiv,1171 &feature_hwdiv,
2237 &feature_trustzone,1172 &feature_trustzone,
2238 &feature_fpregs,1173 &feature_fpregs,
2239 &feature_v4t,1174 &feature_db,
2240 &feature_thumb2,
2241 &feature_v7clrex,
2242 &feature_aclass,
2243 &feature_crc,
2244 &feature_mp,
2245 &feature_acquireRelease,1175 &feature_acquireRelease,
2246 &feature_fp16,
2247 &feature_perfmon,
2248 &feature_d32,1176 &feature_d32,
2249 &feature_armv8A,1177 &feature_perfmon,
1178 &feature_mp,
1179 &feature_hwdivArm,
1180 &feature_dsp,
1181 &feature_aclass,
1182 &feature_fp16,
1183 &feature_v7clrex,
1184 &feature_crc,
1185 &feature_thumb2,
2250 &feature_crypto,1186 &feature_crypto,
2251 &feature_fpao,1187 &feature_fpao,
2252 &feature_a53,
2253 },1188 },
2254};1189};
22551190
...@@ -2257,26 +1192,23 @@ pub const cpu_cortexA55 = Cpu{...@@ -2257,26 +1192,23 @@ pub const cpu_cortexA55 = Cpu{
2257 .name = "cortex-a55",1192 .name = "cortex-a55",
2258 .llvm_name = "cortex-a55",1193 .llvm_name = "cortex-a55",
2259 .subfeatures = &[_]*const Feature {1194 .subfeatures = &[_]*const Feature {
2260 &feature_db,
2261 &feature_dsp,
2262 &feature_hwdivArm,
2263 &feature_hwdiv,1195 &feature_hwdiv,
2264 &feature_trustzone,1196 &feature_trustzone,
2265 &feature_fpregs,1197 &feature_fpregs,
2266 &feature_v4t,1198 &feature_db,
2267 &feature_thumb2,1199 &feature_acquireRelease,
1200 &feature_d32,
1201 &feature_perfmon,
1202 &feature_mp,
2268 &feature_ras,1203 &feature_ras,
2269 &feature_v7clrex,1204 &feature_hwdivArm,
1205 &feature_dsp,
2270 &feature_aclass,1206 &feature_aclass,
2271 &feature_crc,
2272 &feature_mp,
2273 &feature_acquireRelease,
2274 &feature_fp16,1207 &feature_fp16,
2275 &feature_perfmon,1208 &feature_v7clrex,
2276 &feature_d32,1209 &feature_crc,
2277 &feature_armv82A,1210 &feature_thumb2,
2278 &feature_dotprod,1211 &feature_dotprod,
2279 &feature_a55,
2280 },1212 },
2281};1213};
22821214
...@@ -2284,28 +1216,25 @@ pub const cpu_cortexA57 = Cpu{...@@ -2284,28 +1216,25 @@ pub const cpu_cortexA57 = Cpu{
2284 .name = "cortex-a57",1216 .name = "cortex-a57",
2285 .llvm_name = "cortex-a57",1217 .llvm_name = "cortex-a57",
2286 .subfeatures = &[_]*const Feature {1218 .subfeatures = &[_]*const Feature {
2287 &feature_db,
2288 &feature_dsp,
2289 &feature_hwdivArm,
2290 &feature_hwdiv,1219 &feature_hwdiv,
2291 &feature_trustzone,1220 &feature_trustzone,
2292 &feature_fpregs,1221 &feature_fpregs,
2293 &feature_v4t,1222 &feature_db,
2294 &feature_thumb2,
2295 &feature_v7clrex,
2296 &feature_aclass,
2297 &feature_crc,
2298 &feature_mp,
2299 &feature_acquireRelease,1223 &feature_acquireRelease,
2300 &feature_fp16,
2301 &feature_perfmon,
2302 &feature_d32,1224 &feature_d32,
2303 &feature_armv8A,1225 &feature_perfmon,
1226 &feature_mp,
1227 &feature_hwdivArm,
1228 &feature_dsp,
1229 &feature_aclass,
1230 &feature_fp16,
1231 &feature_v7clrex,
1232 &feature_crc,
1233 &feature_thumb2,
2304 &feature_avoidPartialCpsr,1234 &feature_avoidPartialCpsr,
2305 &feature_cheapPredicableCpsr,1235 &feature_cheapPredicableCpsr,
2306 &feature_crypto,1236 &feature_crypto,
2307 &feature_fpao,1237 &feature_fpao,
2308 &feature_a57,
2309 },1238 },
2310};1239};
23111240
...@@ -2313,16 +1242,14 @@ pub const cpu_cortexA7 = Cpu{...@@ -2313,16 +1242,14 @@ pub const cpu_cortexA7 = Cpu{
2313 .name = "cortex-a7",1242 .name = "cortex-a7",
2314 .llvm_name = "cortex-a7",1243 .llvm_name = "cortex-a7",
2315 .subfeatures = &[_]*const Feature {1244 .subfeatures = &[_]*const Feature {
1245 &feature_fpregs,
2316 &feature_db,1246 &feature_db,
1247 &feature_d32,
1248 &feature_perfmon,
2317 &feature_dsp,1249 &feature_dsp,
2318 &feature_fpregs,
2319 &feature_thumb2,
2320 &feature_v7clrex,
2321 &feature_aclass,1250 &feature_aclass,
2322 &feature_perfmon,1251 &feature_v7clrex,
2323 &feature_v4t,1252 &feature_thumb2,
2324 &feature_d32,
2325 &feature_armv7A,
2326 &feature_retAddrStack,1253 &feature_retAddrStack,
2327 &feature_slowfpvmlx,1254 &feature_slowfpvmlx,
2328 &feature_vmlxHazards,1255 &feature_vmlxHazards,
...@@ -2332,10 +1259,9 @@ pub const cpu_cortexA7 = Cpu{...@@ -2332,10 +1259,9 @@ pub const cpu_cortexA7 = Cpu{
2332 &feature_fp16,1259 &feature_fp16,
2333 &feature_vfp4,1260 &feature_vfp4,
2334 &feature_vmlxForwarding,1261 &feature_vmlxForwarding,
2335 &feature_hwdivArm,
2336 &feature_hwdiv,1262 &feature_hwdiv,
1263 &feature_hwdivArm,
2337 &feature_virtualization,1264 &feature_virtualization,
2338 &feature_a7,
2339 },1265 },
2340};1266};
23411267
...@@ -2343,25 +1269,22 @@ pub const cpu_cortexA72 = Cpu{...@@ -2343,25 +1269,22 @@ pub const cpu_cortexA72 = Cpu{
2343 .name = "cortex-a72",1269 .name = "cortex-a72",
2344 .llvm_name = "cortex-a72",1270 .llvm_name = "cortex-a72",
2345 .subfeatures = &[_]*const Feature {1271 .subfeatures = &[_]*const Feature {
2346 &feature_db,
2347 &feature_dsp,
2348 &feature_hwdivArm,
2349 &feature_hwdiv,1272 &feature_hwdiv,
2350 &feature_trustzone,1273 &feature_trustzone,
2351 &feature_fpregs,1274 &feature_fpregs,
2352 &feature_v4t,1275 &feature_db,
2353 &feature_thumb2,
2354 &feature_v7clrex,
2355 &feature_aclass,
2356 &feature_crc,
2357 &feature_mp,
2358 &feature_acquireRelease,1276 &feature_acquireRelease,
2359 &feature_fp16,
2360 &feature_perfmon,
2361 &feature_d32,1277 &feature_d32,
2362 &feature_armv8A,1278 &feature_perfmon,
1279 &feature_mp,
1280 &feature_hwdivArm,
1281 &feature_dsp,
1282 &feature_aclass,
1283 &feature_fp16,
1284 &feature_v7clrex,
1285 &feature_crc,
1286 &feature_thumb2,
2363 &feature_crypto,1287 &feature_crypto,
2364 &feature_a72,
2365 },1288 },
2366};1289};
23671290
...@@ -2369,25 +1292,22 @@ pub const cpu_cortexA73 = Cpu{...@@ -2369,25 +1292,22 @@ pub const cpu_cortexA73 = Cpu{
2369 .name = "cortex-a73",1292 .name = "cortex-a73",
2370 .llvm_name = "cortex-a73",1293 .llvm_name = "cortex-a73",
2371 .subfeatures = &[_]*const Feature {1294 .subfeatures = &[_]*const Feature {
2372 &feature_db,
2373 &feature_dsp,
2374 &feature_hwdivArm,
2375 &feature_hwdiv,1295 &feature_hwdiv,
2376 &feature_trustzone,1296 &feature_trustzone,
2377 &feature_fpregs,1297 &feature_fpregs,
2378 &feature_v4t,1298 &feature_db,
2379 &feature_thumb2,
2380 &feature_v7clrex,
2381 &feature_aclass,
2382 &feature_crc,
2383 &feature_mp,
2384 &feature_acquireRelease,1299 &feature_acquireRelease,
2385 &feature_fp16,
2386 &feature_perfmon,
2387 &feature_d32,1300 &feature_d32,
2388 &feature_armv8A,1301 &feature_perfmon,
1302 &feature_mp,
1303 &feature_hwdivArm,
1304 &feature_dsp,
1305 &feature_aclass,
1306 &feature_fp16,
1307 &feature_v7clrex,
1308 &feature_crc,
1309 &feature_thumb2,
2389 &feature_crypto,1310 &feature_crypto,
2390 &feature_a73,
2391 },1311 },
2392};1312};
23931313
...@@ -2395,26 +1315,23 @@ pub const cpu_cortexA75 = Cpu{...@@ -2395,26 +1315,23 @@ pub const cpu_cortexA75 = Cpu{
2395 .name = "cortex-a75",1315 .name = "cortex-a75",
2396 .llvm_name = "cortex-a75",1316 .llvm_name = "cortex-a75",
2397 .subfeatures = &[_]*const Feature {1317 .subfeatures = &[_]*const Feature {
2398 &feature_db,
2399 &feature_dsp,
2400 &feature_hwdivArm,
2401 &feature_hwdiv,1318 &feature_hwdiv,
2402 &feature_trustzone,1319 &feature_trustzone,
2403 &feature_fpregs,1320 &feature_fpregs,
2404 &feature_v4t,1321 &feature_db,
2405 &feature_thumb2,1322 &feature_acquireRelease,
1323 &feature_d32,
1324 &feature_perfmon,
1325 &feature_mp,
2406 &feature_ras,1326 &feature_ras,
2407 &feature_v7clrex,1327 &feature_hwdivArm,
1328 &feature_dsp,
2408 &feature_aclass,1329 &feature_aclass,
2409 &feature_crc,
2410 &feature_mp,
2411 &feature_acquireRelease,
2412 &feature_fp16,1330 &feature_fp16,
2413 &feature_perfmon,1331 &feature_v7clrex,
2414 &feature_d32,1332 &feature_crc,
2415 &feature_armv82A,1333 &feature_thumb2,
2416 &feature_dotprod,1334 &feature_dotprod,
2417 &feature_a75,
2418 },1335 },
2419};1336};
24201337
...@@ -2422,28 +1339,25 @@ pub const cpu_cortexA76 = Cpu{...@@ -2422,28 +1339,25 @@ pub const cpu_cortexA76 = Cpu{
2422 .name = "cortex-a76",1339 .name = "cortex-a76",
2423 .llvm_name = "cortex-a76",1340 .llvm_name = "cortex-a76",
2424 .subfeatures = &[_]*const Feature {1341 .subfeatures = &[_]*const Feature {
2425 &feature_db,
2426 &feature_dsp,
2427 &feature_hwdivArm,
2428 &feature_hwdiv,1342 &feature_hwdiv,
2429 &feature_trustzone,1343 &feature_trustzone,
2430 &feature_fpregs,1344 &feature_fpregs,
2431 &feature_v4t,1345 &feature_db,
2432 &feature_thumb2,1346 &feature_acquireRelease,
1347 &feature_d32,
1348 &feature_perfmon,
1349 &feature_mp,
2433 &feature_ras,1350 &feature_ras,
2434 &feature_v7clrex,1351 &feature_hwdivArm,
1352 &feature_dsp,
2435 &feature_aclass,1353 &feature_aclass,
2436 &feature_crc,
2437 &feature_mp,
2438 &feature_acquireRelease,
2439 &feature_fp16,1354 &feature_fp16,
2440 &feature_perfmon,1355 &feature_v7clrex,
2441 &feature_d32,1356 &feature_crc,
2442 &feature_armv82A,1357 &feature_thumb2,
2443 &feature_crypto,1358 &feature_crypto,
2444 &feature_dotprod,1359 &feature_dotprod,
2445 &feature_fullfp16,1360 &feature_fullfp16,
2446 &feature_a76,
2447 },1361 },
2448};1362};
24491363
...@@ -2451,28 +1365,25 @@ pub const cpu_cortexA76ae = Cpu{...@@ -2451,28 +1365,25 @@ pub const cpu_cortexA76ae = Cpu{
2451 .name = "cortex-a76ae",1365 .name = "cortex-a76ae",
2452 .llvm_name = "cortex-a76ae",1366 .llvm_name = "cortex-a76ae",
2453 .subfeatures = &[_]*const Feature {1367 .subfeatures = &[_]*const Feature {
2454 &feature_db,
2455 &feature_dsp,
2456 &feature_hwdivArm,
2457 &feature_hwdiv,1368 &feature_hwdiv,
2458 &feature_trustzone,1369 &feature_trustzone,
2459 &feature_fpregs,1370 &feature_fpregs,
2460 &feature_v4t,1371 &feature_db,
2461 &feature_thumb2,1372 &feature_acquireRelease,
1373 &feature_d32,
1374 &feature_perfmon,
1375 &feature_mp,
2462 &feature_ras,1376 &feature_ras,
2463 &feature_v7clrex,1377 &feature_hwdivArm,
1378 &feature_dsp,
2464 &feature_aclass,1379 &feature_aclass,
2465 &feature_crc,
2466 &feature_mp,
2467 &feature_acquireRelease,
2468 &feature_fp16,1380 &feature_fp16,
2469 &feature_perfmon,1381 &feature_v7clrex,
2470 &feature_d32,1382 &feature_crc,
2471 &feature_armv82A,1383 &feature_thumb2,
2472 &feature_crypto,1384 &feature_crypto,
2473 &feature_dotprod,1385 &feature_dotprod,
2474 &feature_fullfp16,1386 &feature_fullfp16,
2475 &feature_a76,
2476 },1387 },
2477};1388};
24781389
...@@ -2480,16 +1391,14 @@ pub const cpu_cortexA8 = Cpu{...@@ -2480,16 +1391,14 @@ pub const cpu_cortexA8 = Cpu{
2480 .name = "cortex-a8",1391 .name = "cortex-a8",
2481 .llvm_name = "cortex-a8",1392 .llvm_name = "cortex-a8",
2482 .subfeatures = &[_]*const Feature {1393 .subfeatures = &[_]*const Feature {
1394 &feature_fpregs,
2483 &feature_db,1395 &feature_db,
1396 &feature_d32,
1397 &feature_perfmon,
2484 &feature_dsp,1398 &feature_dsp,
2485 &feature_fpregs,
2486 &feature_thumb2,
2487 &feature_v7clrex,
2488 &feature_aclass,1399 &feature_aclass,
2489 &feature_perfmon,1400 &feature_v7clrex,
2490 &feature_v4t,1401 &feature_thumb2,
2491 &feature_d32,
2492 &feature_armv7A,
2493 &feature_retAddrStack,1402 &feature_retAddrStack,
2494 &feature_slowfpvmlx,1403 &feature_slowfpvmlx,
2495 &feature_vmlxHazards,1404 &feature_vmlxHazards,
...@@ -2497,7 +1406,6 @@ pub const cpu_cortexA8 = Cpu{...@@ -2497,7 +1406,6 @@ pub const cpu_cortexA8 = Cpu{
2497 &feature_slowFpBrcc,1406 &feature_slowFpBrcc,
2498 &feature_trustzone,1407 &feature_trustzone,
2499 &feature_vmlxForwarding,1408 &feature_vmlxForwarding,
2500 &feature_a8,
2501 },1409 },
2502};1410};
25031411
...@@ -2505,16 +1413,14 @@ pub const cpu_cortexA9 = Cpu{...@@ -2505,16 +1413,14 @@ pub const cpu_cortexA9 = Cpu{
2505 .name = "cortex-a9",1413 .name = "cortex-a9",
2506 .llvm_name = "cortex-a9",1414 .llvm_name = "cortex-a9",
2507 .subfeatures = &[_]*const Feature {1415 .subfeatures = &[_]*const Feature {
1416 &feature_fpregs,
2508 &feature_db,1417 &feature_db,
1418 &feature_d32,
1419 &feature_perfmon,
2509 &feature_dsp,1420 &feature_dsp,
2510 &feature_fpregs,
2511 &feature_thumb2,
2512 &feature_v7clrex,
2513 &feature_aclass,1421 &feature_aclass,
2514 &feature_perfmon,1422 &feature_v7clrex,
2515 &feature_v4t,1423 &feature_thumb2,
2516 &feature_d32,
2517 &feature_armv7A,
2518 &feature_avoidPartialCpsr,1424 &feature_avoidPartialCpsr,
2519 &feature_vldnAlign,1425 &feature_vldnAlign,
2520 &feature_expandFpMlx,1426 &feature_expandFpMlx,
...@@ -2527,7 +1433,6 @@ pub const cpu_cortexA9 = Cpu{...@@ -2527,7 +1433,6 @@ pub const cpu_cortexA9 = Cpu{
2527 &feature_preferVmovsr,1433 &feature_preferVmovsr,
2528 &feature_trustzone,1434 &feature_trustzone,
2529 &feature_vmlxForwarding,1435 &feature_vmlxForwarding,
2530 &feature_a9,
2531 },1436 },
2532};1437};
25331438
...@@ -2536,12 +1441,9 @@ pub const cpu_cortexM0 = Cpu{...@@ -2536,12 +1441,9 @@ pub const cpu_cortexM0 = Cpu{
2536 .llvm_name = "cortex-m0",1441 .llvm_name = "cortex-m0",
2537 .subfeatures = &[_]*const Feature {1442 .subfeatures = &[_]*const Feature {
2538 &feature_db,1443 &feature_db,
2539 &feature_mclass,
2540 &feature_thumbMode,
2541 &feature_strictAlign,1444 &feature_strictAlign,
2542 &feature_noarm,1445 &feature_noarm,
2543 &feature_v4t,1446 &feature_mclass,
2544 &feature_armv6M,
2545 },1447 },
2546};1448};
25471449
...@@ -2550,12 +1452,9 @@ pub const cpu_cortexM0plus = Cpu{...@@ -2550,12 +1452,9 @@ pub const cpu_cortexM0plus = Cpu{
2550 .llvm_name = "cortex-m0plus",1452 .llvm_name = "cortex-m0plus",
2551 .subfeatures = &[_]*const Feature {1453 .subfeatures = &[_]*const Feature {
2552 &feature_db,1454 &feature_db,
2553 &feature_mclass,
2554 &feature_thumbMode,
2555 &feature_strictAlign,1455 &feature_strictAlign,
2556 &feature_noarm,1456 &feature_noarm,
2557 &feature_v4t,1457 &feature_mclass,
2558 &feature_armv6M,
2559 },1458 },
2560};1459};
25611460
...@@ -2564,12 +1463,9 @@ pub const cpu_cortexM1 = Cpu{...@@ -2564,12 +1463,9 @@ pub const cpu_cortexM1 = Cpu{
2564 .llvm_name = "cortex-m1",1463 .llvm_name = "cortex-m1",
2565 .subfeatures = &[_]*const Feature {1464 .subfeatures = &[_]*const Feature {
2566 &feature_db,1465 &feature_db,
2567 &feature_mclass,
2568 &feature_thumbMode,
2569 &feature_strictAlign,1466 &feature_strictAlign,
2570 &feature_noarm,1467 &feature_noarm,
2571 &feature_v4t,1468 &feature_mclass,
2572 &feature_armv6M,
2573 },1469 },
2574};1470};
25751471
...@@ -2577,17 +1473,14 @@ pub const cpu_cortexM23 = Cpu{...@@ -2577,17 +1473,14 @@ pub const cpu_cortexM23 = Cpu{
2577 .name = "cortex-m23",1473 .name = "cortex-m23",
2578 .llvm_name = "cortex-m23",1474 .llvm_name = "cortex-m23",
2579 .subfeatures = &[_]*const Feature {1475 .subfeatures = &[_]*const Feature {
2580 &feature_db,
2581 &feature_mclass,
2582 &feature_hwdiv,1476 &feature_hwdiv,
2583 &feature_thumbMode,
2584 &feature_strictAlign,
2585 &feature_v7clrex,
2586 &feature_msecext8,1477 &feature_msecext8,
1478 &feature_db,
1479 &feature_strictAlign,
2587 &feature_acquireRelease,1480 &feature_acquireRelease,
2588 &feature_noarm,1481 &feature_noarm,
2589 &feature_v4t,1482 &feature_v7clrex,
2590 &feature_armv8Mbase,1483 &feature_mclass,
2591 &feature_noMovt,1484 &feature_noMovt,
2592 },1485 },
2593};1486};
...@@ -2596,21 +1489,17 @@ pub const cpu_cortexM3 = Cpu{...@@ -2596,21 +1489,17 @@ pub const cpu_cortexM3 = Cpu{
2596 .name = "cortex-m3",1489 .name = "cortex-m3",
2597 .llvm_name = "cortex-m3",1490 .llvm_name = "cortex-m3",
2598 .subfeatures = &[_]*const Feature {1491 .subfeatures = &[_]*const Feature {
2599 &feature_db,
2600 &feature_mclass,
2601 &feature_hwdiv,1492 &feature_hwdiv,
2602 &feature_thumbMode,1493 &feature_db,
2603 &feature_thumb2,
2604 &feature_v7clrex,
2605 &feature_perfmon,1494 &feature_perfmon,
2606 &feature_noarm,1495 &feature_noarm,
2607 &feature_v4t,1496 &feature_v7clrex,
2608 &feature_armv7M,1497 &feature_mclass,
1498 &feature_thumb2,
2609 &feature_noBranchPredictor,1499 &feature_noBranchPredictor,
2610 &feature_loopAlign,1500 &feature_loopAlign,
2611 &feature_useAa,1501 &feature_useAa,
2612 &feature_useMisched,1502 &feature_useMisched,
2613 &feature_m3,
2614 },1503 },
2615};1504};
26161505
...@@ -2618,18 +1507,15 @@ pub const cpu_cortexM33 = Cpu{...@@ -2618,18 +1507,15 @@ pub const cpu_cortexM33 = Cpu{
2618 .name = "cortex-m33",1507 .name = "cortex-m33",
2619 .llvm_name = "cortex-m33",1508 .llvm_name = "cortex-m33",
2620 .subfeatures = &[_]*const Feature {1509 .subfeatures = &[_]*const Feature {
2621 &feature_db,
2622 &feature_mclass,
2623 &feature_hwdiv,1510 &feature_hwdiv,
2624 &feature_thumbMode,
2625 &feature_thumb2,
2626 &feature_v7clrex,
2627 &feature_msecext8,1511 &feature_msecext8,
1512 &feature_db,
2628 &feature_acquireRelease,1513 &feature_acquireRelease,
2629 &feature_perfmon,1514 &feature_perfmon,
2630 &feature_noarm,1515 &feature_noarm,
2631 &feature_v4t,1516 &feature_v7clrex,
2632 &feature_armv8Mmain,1517 &feature_mclass,
1518 &feature_thumb2,
2633 &feature_dsp,1519 &feature_dsp,
2634 &feature_fp16,1520 &feature_fp16,
2635 &feature_fpregs,1521 &feature_fpregs,
...@@ -2646,18 +1532,15 @@ pub const cpu_cortexM35p = Cpu{...@@ -2646,18 +1532,15 @@ pub const cpu_cortexM35p = Cpu{
2646 .name = "cortex-m35p",1532 .name = "cortex-m35p",
2647 .llvm_name = "cortex-m35p",1533 .llvm_name = "cortex-m35p",
2648 .subfeatures = &[_]*const Feature {1534 .subfeatures = &[_]*const Feature {
2649 &feature_db,
2650 &feature_mclass,
2651 &feature_hwdiv,1535 &feature_hwdiv,
2652 &feature_thumbMode,
2653 &feature_thumb2,
2654 &feature_v7clrex,
2655 &feature_msecext8,1536 &feature_msecext8,
1537 &feature_db,
2656 &feature_acquireRelease,1538 &feature_acquireRelease,
2657 &feature_perfmon,1539 &feature_perfmon,
2658 &feature_noarm,1540 &feature_noarm,
2659 &feature_v4t,1541 &feature_v7clrex,
2660 &feature_armv8Mmain,1542 &feature_mclass,
1543 &feature_thumb2,
2661 &feature_dsp,1544 &feature_dsp,
2662 &feature_fp16,1545 &feature_fp16,
2663 &feature_fpregs,1546 &feature_fpregs,
...@@ -2674,17 +1557,14 @@ pub const cpu_cortexM4 = Cpu{...@@ -2674,17 +1557,14 @@ pub const cpu_cortexM4 = Cpu{
2674 .name = "cortex-m4",1557 .name = "cortex-m4",
2675 .llvm_name = "cortex-m4",1558 .llvm_name = "cortex-m4",
2676 .subfeatures = &[_]*const Feature {1559 .subfeatures = &[_]*const Feature {
2677 &feature_db,
2678 &feature_mclass,
2679 &feature_hwdiv,1560 &feature_hwdiv,
2680 &feature_dsp,1561 &feature_db,
2681 &feature_thumbMode,
2682 &feature_thumb2,
2683 &feature_v7clrex,
2684 &feature_perfmon,1562 &feature_perfmon,
2685 &feature_noarm,1563 &feature_noarm,
2686 &feature_v4t,1564 &feature_dsp,
2687 &feature_armv7eM,1565 &feature_v7clrex,
1566 &feature_mclass,
1567 &feature_thumb2,
2688 &feature_noBranchPredictor,1568 &feature_noBranchPredictor,
2689 &feature_slowfpvmlx,1569 &feature_slowfpvmlx,
2690 &feature_loopAlign,1570 &feature_loopAlign,
...@@ -2700,19 +1580,16 @@ pub const cpu_cortexM7 = Cpu{...@@ -2700,19 +1580,16 @@ pub const cpu_cortexM7 = Cpu{
2700 .name = "cortex-m7",1580 .name = "cortex-m7",
2701 .llvm_name = "cortex-m7",1581 .llvm_name = "cortex-m7",
2702 .subfeatures = &[_]*const Feature {1582 .subfeatures = &[_]*const Feature {
2703 &feature_db,
2704 &feature_mclass,
2705 &feature_hwdiv,1583 &feature_hwdiv,
2706 &feature_dsp,1584 &feature_db,
2707 &feature_thumbMode,
2708 &feature_thumb2,
2709 &feature_v7clrex,
2710 &feature_perfmon,1585 &feature_perfmon,
2711 &feature_noarm,1586 &feature_noarm,
2712 &feature_v4t,1587 &feature_dsp,
2713 &feature_armv7eM,1588 &feature_v7clrex,
2714 &feature_fpregs,1589 &feature_mclass,
1590 &feature_thumb2,
2715 &feature_fp16,1591 &feature_fp16,
1592 &feature_fpregs,
2716 &feature_fpArmv8d16,1593 &feature_fpArmv8d16,
2717 },1594 },
2718};1595};
...@@ -2721,18 +1598,15 @@ pub const cpu_cortexR4 = Cpu{...@@ -2721,18 +1598,15 @@ pub const cpu_cortexR4 = Cpu{
2721 .name = "cortex-r4",1598 .name = "cortex-r4",
2722 .llvm_name = "cortex-r4",1599 .llvm_name = "cortex-r4",
2723 .subfeatures = &[_]*const Feature {1600 .subfeatures = &[_]*const Feature {
2724 &feature_db,
2725 &feature_dsp,
2726 &feature_hwdiv,1601 &feature_hwdiv,
2727 &feature_rclass,1602 &feature_rclass,
2728 &feature_thumb2,1603 &feature_db,
2729 &feature_v7clrex,
2730 &feature_perfmon,1604 &feature_perfmon,
2731 &feature_v4t,1605 &feature_dsp,
2732 &feature_armv7R,1606 &feature_v7clrex,
1607 &feature_thumb2,
2733 &feature_avoidPartialCpsr,1608 &feature_avoidPartialCpsr,
2734 &feature_retAddrStack,1609 &feature_retAddrStack,
2735 &feature_r4,
2736 },1610 },
2737};1611};
27381612
...@@ -2740,22 +1614,19 @@ pub const cpu_cortexR4f = Cpu{...@@ -2740,22 +1614,19 @@ pub const cpu_cortexR4f = Cpu{
2740 .name = "cortex-r4f",1614 .name = "cortex-r4f",
2741 .llvm_name = "cortex-r4f",1615 .llvm_name = "cortex-r4f",
2742 .subfeatures = &[_]*const Feature {1616 .subfeatures = &[_]*const Feature {
2743 &feature_db,
2744 &feature_dsp,
2745 &feature_hwdiv,1617 &feature_hwdiv,
2746 &feature_rclass,1618 &feature_rclass,
2747 &feature_thumb2,1619 &feature_db,
2748 &feature_v7clrex,
2749 &feature_perfmon,1620 &feature_perfmon,
2750 &feature_v4t,1621 &feature_dsp,
2751 &feature_armv7R,1622 &feature_v7clrex,
1623 &feature_thumb2,
2752 &feature_avoidPartialCpsr,1624 &feature_avoidPartialCpsr,
2753 &feature_retAddrStack,1625 &feature_retAddrStack,
2754 &feature_slowfpvmlx,1626 &feature_slowfpvmlx,
2755 &feature_slowFpBrcc,1627 &feature_slowFpBrcc,
2756 &feature_fpregs,1628 &feature_fpregs,
2757 &feature_vfp3d16,1629 &feature_vfp3d16,
2758 &feature_r4,
2759 },1630 },
2760};1631};
27611632
...@@ -2763,15 +1634,13 @@ pub const cpu_cortexR5 = Cpu{...@@ -2763,15 +1634,13 @@ pub const cpu_cortexR5 = Cpu{
2763 .name = "cortex-r5",1634 .name = "cortex-r5",
2764 .llvm_name = "cortex-r5",1635 .llvm_name = "cortex-r5",
2765 .subfeatures = &[_]*const Feature {1636 .subfeatures = &[_]*const Feature {
2766 &feature_db,
2767 &feature_dsp,
2768 &feature_hwdiv,1637 &feature_hwdiv,
2769 &feature_rclass,1638 &feature_rclass,
2770 &feature_thumb2,1639 &feature_db,
2771 &feature_v7clrex,
2772 &feature_perfmon,1640 &feature_perfmon,
2773 &feature_v4t,1641 &feature_dsp,
2774 &feature_armv7R,1642 &feature_v7clrex,
1643 &feature_thumb2,
2775 &feature_avoidPartialCpsr,1644 &feature_avoidPartialCpsr,
2776 &feature_hwdivArm,1645 &feature_hwdivArm,
2777 &feature_retAddrStack,1646 &feature_retAddrStack,
...@@ -2779,7 +1648,6 @@ pub const cpu_cortexR5 = Cpu{...@@ -2779,7 +1648,6 @@ pub const cpu_cortexR5 = Cpu{
2779 &feature_slowFpBrcc,1648 &feature_slowFpBrcc,
2780 &feature_fpregs,1649 &feature_fpregs,
2781 &feature_vfp3d16,1650 &feature_vfp3d16,
2782 &feature_r5,
2783 },1651 },
2784};1652};
27851653
...@@ -2787,27 +1655,24 @@ pub const cpu_cortexR52 = Cpu{...@@ -2787,27 +1655,24 @@ pub const cpu_cortexR52 = Cpu{
2787 .name = "cortex-r52",1655 .name = "cortex-r52",
2788 .llvm_name = "cortex-r52",1656 .llvm_name = "cortex-r52",
2789 .subfeatures = &[_]*const Feature {1657 .subfeatures = &[_]*const Feature {
2790 &feature_db,
2791 &feature_dsp,
2792 &feature_hwdivArm,
2793 &feature_hwdiv,1658 &feature_hwdiv,
2794 &feature_rclass,1659 &feature_rclass,
2795 &feature_fpregs,1660 &feature_fpregs,
2796 &feature_v4t,1661 &feature_db,
2797 &feature_dfb,1662 &feature_acquireRelease,
2798 &feature_thumb2,1663 &feature_d32,
2799 &feature_v7clrex,
2800 &feature_perfmon,1664 &feature_perfmon,
2801 &feature_crc,
2802 &feature_mp,1665 &feature_mp,
2803 &feature_acquireRelease,1666 &feature_dfb,
1667 &feature_hwdivArm,
1668 &feature_dsp,
2804 &feature_fp16,1669 &feature_fp16,
2805 &feature_d32,1670 &feature_v7clrex,
2806 &feature_armv8R,1671 &feature_crc,
1672 &feature_thumb2,
2807 &feature_fpao,1673 &feature_fpao,
2808 &feature_useAa,1674 &feature_useAa,
2809 &feature_useMisched,1675 &feature_useMisched,
2810 &feature_r52,
2811 },1676 },
2812};1677};
28131678
...@@ -2815,15 +1680,13 @@ pub const cpu_cortexR7 = Cpu{...@@ -2815,15 +1680,13 @@ pub const cpu_cortexR7 = Cpu{
2815 .name = "cortex-r7",1680 .name = "cortex-r7",
2816 .llvm_name = "cortex-r7",1681 .llvm_name = "cortex-r7",
2817 .subfeatures = &[_]*const Feature {1682 .subfeatures = &[_]*const Feature {
2818 &feature_db,
2819 &feature_dsp,
2820 &feature_hwdiv,1683 &feature_hwdiv,
2821 &feature_rclass,1684 &feature_rclass,
2822 &feature_thumb2,1685 &feature_db,
2823 &feature_v7clrex,
2824 &feature_perfmon,1686 &feature_perfmon,
2825 &feature_v4t,1687 &feature_dsp,
2826 &feature_armv7R,1688 &feature_v7clrex,
1689 &feature_thumb2,
2827 &feature_avoidPartialCpsr,1690 &feature_avoidPartialCpsr,
2828 &feature_fp16,1691 &feature_fp16,
2829 &feature_hwdivArm,1692 &feature_hwdivArm,
...@@ -2833,7 +1696,6 @@ pub const cpu_cortexR7 = Cpu{...@@ -2833,7 +1696,6 @@ pub const cpu_cortexR7 = Cpu{
2833 &feature_slowFpBrcc,1696 &feature_slowFpBrcc,
2834 &feature_fpregs,1697 &feature_fpregs,
2835 &feature_vfp3d16,1698 &feature_vfp3d16,
2836 &feature_r7,
2837 },1699 },
2838};1700};
28391701
...@@ -2841,15 +1703,13 @@ pub const cpu_cortexR8 = Cpu{...@@ -2841,15 +1703,13 @@ pub const cpu_cortexR8 = Cpu{
2841 .name = "cortex-r8",1703 .name = "cortex-r8",
2842 .llvm_name = "cortex-r8",1704 .llvm_name = "cortex-r8",
2843 .subfeatures = &[_]*const Feature {1705 .subfeatures = &[_]*const Feature {
2844 &feature_db,
2845 &feature_dsp,
2846 &feature_hwdiv,1706 &feature_hwdiv,
2847 &feature_rclass,1707 &feature_rclass,
2848 &feature_thumb2,1708 &feature_db,
2849 &feature_v7clrex,
2850 &feature_perfmon,1709 &feature_perfmon,
2851 &feature_v4t,1710 &feature_dsp,
2852 &feature_armv7R,1711 &feature_v7clrex,
1712 &feature_thumb2,
2853 &feature_avoidPartialCpsr,1713 &feature_avoidPartialCpsr,
2854 &feature_fp16,1714 &feature_fp16,
2855 &feature_hwdivArm,1715 &feature_hwdivArm,
...@@ -2866,23 +1726,21 @@ pub const cpu_cyclone = Cpu{...@@ -2866,23 +1726,21 @@ pub const cpu_cyclone = Cpu{
2866 .name = "cyclone",1726 .name = "cyclone",
2867 .llvm_name = "cyclone",1727 .llvm_name = "cyclone",
2868 .subfeatures = &[_]*const Feature {1728 .subfeatures = &[_]*const Feature {
1729 &feature_hwdiv,
1730 &feature_trustzone,
1731 &feature_fpregs,
2869 &feature_db,1732 &feature_db,
2870 &feature_dsp,1733 &feature_acquireRelease,
1734 &feature_d32,
1735 &feature_perfmon,
1736 &feature_mp,
2871 &feature_hwdivArm,1737 &feature_hwdivArm,
2872 &feature_hwdiv,1738 &feature_dsp,
2873 &feature_trustzone,
2874 &feature_fpregs,
2875 &feature_v4t,
2876 &feature_thumb2,
2877 &feature_v7clrex,
2878 &feature_aclass,1739 &feature_aclass,
2879 &feature_crc,
2880 &feature_mp,
2881 &feature_acquireRelease,
2882 &feature_fp16,1740 &feature_fp16,
2883 &feature_perfmon,1741 &feature_v7clrex,
2884 &feature_d32,1742 &feature_crc,
2885 &feature_armv8A,1743 &feature_thumb2,
2886 &feature_avoidMovsShop,1744 &feature_avoidMovsShop,
2887 &feature_avoidPartialCpsr,1745 &feature_avoidPartialCpsr,
2888 &feature_crypto,1746 &feature_crypto,
...@@ -2893,7 +1751,6 @@ pub const cpu_cyclone = Cpu{...@@ -2893,7 +1751,6 @@ pub const cpu_cyclone = Cpu{
2893 &feature_useMisched,1751 &feature_useMisched,
2894 &feature_vfp4,1752 &feature_vfp4,
2895 &feature_zcz,1753 &feature_zcz,
2896 &feature_swift,
2897 },1754 },
2898};1755};
28991756
...@@ -2901,8 +1758,6 @@ pub const cpu_ep9312 = Cpu{...@@ -2901,8 +1758,6 @@ pub const cpu_ep9312 = Cpu{
2901 .name = "ep9312",1758 .name = "ep9312",
2902 .llvm_name = "ep9312",1759 .llvm_name = "ep9312",
2903 .subfeatures = &[_]*const Feature {1760 .subfeatures = &[_]*const Feature {
2904 &feature_v4t,
2905 &feature_armv4t,
2906 },1761 },
2907};1762};
29081763
...@@ -2910,37 +1765,34 @@ pub const cpu_exynosM1 = Cpu{...@@ -2910,37 +1765,34 @@ pub const cpu_exynosM1 = Cpu{
2910 .name = "exynos-m1",1765 .name = "exynos-m1",
2911 .llvm_name = "exynos-m1",1766 .llvm_name = "exynos-m1",
2912 .subfeatures = &[_]*const Feature {1767 .subfeatures = &[_]*const Feature {
2913 &feature_db,
2914 &feature_dsp,
2915 &feature_hwdivArm,
2916 &feature_hwdiv,1768 &feature_hwdiv,
2917 &feature_trustzone,1769 &feature_trustzone,
2918 &feature_fpregs,1770 &feature_fpregs,
2919 &feature_v4t,1771 &feature_db,
2920 &feature_thumb2,
2921 &feature_v7clrex,
2922 &feature_aclass,
2923 &feature_crc,
2924 &feature_mp,
2925 &feature_acquireRelease,1772 &feature_acquireRelease,
2926 &feature_fp16,
2927 &feature_perfmon,
2928 &feature_d32,1773 &feature_d32,
2929 &feature_armv8A,1774 &feature_perfmon,
2930 &feature_useAa,1775 &feature_mp,
2931 &feature_zcz,1776 &feature_hwdivArm,
2932 &feature_expandFpMlx,1777 &feature_dsp,
1778 &feature_aclass,
1779 &feature_fp16,
1780 &feature_v7clrex,
1781 &feature_crc,
1782 &feature_thumb2,
2933 &feature_slowVdup32,1783 &feature_slowVdup32,
1784 &feature_expandFpMlx,
2934 &feature_slowVgetlni32,1785 &feature_slowVgetlni32,
2935 &feature_profUnpr,1786 &feature_fuseLiterals,
2936 &feature_wideStrideVfp,1787 &feature_wideStrideVfp,
1788 &feature_slowFpBrcc,
2937 &feature_retAddrStack,1789 &feature_retAddrStack,
1790 &feature_dontWidenVmovs,
1791 &feature_zcz,
2938 &feature_fuseAes,1792 &feature_fuseAes,
2939 &feature_fuseLiterals,
2940 &feature_slowfpvmlx,1793 &feature_slowfpvmlx,
2941 &feature_slowFpBrcc,1794 &feature_profUnpr,
2942 &feature_dontWidenVmovs,1795 &feature_useAa,
2943 &feature_exynos,
2944 },1796 },
2945};1797};
29461798
...@@ -2948,37 +1800,34 @@ pub const cpu_exynosM2 = Cpu{...@@ -2948,37 +1800,34 @@ pub const cpu_exynosM2 = Cpu{
2948 .name = "exynos-m2",1800 .name = "exynos-m2",
2949 .llvm_name = "exynos-m2",1801 .llvm_name = "exynos-m2",
2950 .subfeatures = &[_]*const Feature {1802 .subfeatures = &[_]*const Feature {
2951 &feature_db,
2952 &feature_dsp,
2953 &feature_hwdivArm,
2954 &feature_hwdiv,1803 &feature_hwdiv,
2955 &feature_trustzone,1804 &feature_trustzone,
2956 &feature_fpregs,1805 &feature_fpregs,
2957 &feature_v4t,1806 &feature_db,
2958 &feature_thumb2,
2959 &feature_v7clrex,
2960 &feature_aclass,
2961 &feature_crc,
2962 &feature_mp,
2963 &feature_acquireRelease,1807 &feature_acquireRelease,
2964 &feature_fp16,
2965 &feature_perfmon,
2966 &feature_d32,1808 &feature_d32,
2967 &feature_armv8A,1809 &feature_perfmon,
2968 &feature_useAa,1810 &feature_mp,
2969 &feature_zcz,1811 &feature_hwdivArm,
2970 &feature_expandFpMlx,1812 &feature_dsp,
1813 &feature_aclass,
1814 &feature_fp16,
1815 &feature_v7clrex,
1816 &feature_crc,
1817 &feature_thumb2,
2971 &feature_slowVdup32,1818 &feature_slowVdup32,
1819 &feature_expandFpMlx,
2972 &feature_slowVgetlni32,1820 &feature_slowVgetlni32,
2973 &feature_profUnpr,1821 &feature_fuseLiterals,
2974 &feature_wideStrideVfp,1822 &feature_wideStrideVfp,
1823 &feature_slowFpBrcc,
2975 &feature_retAddrStack,1824 &feature_retAddrStack,
1825 &feature_dontWidenVmovs,
1826 &feature_zcz,
2976 &feature_fuseAes,1827 &feature_fuseAes,
2977 &feature_fuseLiterals,
2978 &feature_slowfpvmlx,1828 &feature_slowfpvmlx,
2979 &feature_slowFpBrcc,1829 &feature_profUnpr,
2980 &feature_dontWidenVmovs,1830 &feature_useAa,
2981 &feature_exynos,
2982 },1831 },
2983};1832};
29841833
...@@ -2986,37 +1835,34 @@ pub const cpu_exynosM3 = Cpu{...@@ -2986,37 +1835,34 @@ pub const cpu_exynosM3 = Cpu{
2986 .name = "exynos-m3",1835 .name = "exynos-m3",
2987 .llvm_name = "exynos-m3",1836 .llvm_name = "exynos-m3",
2988 .subfeatures = &[_]*const Feature {1837 .subfeatures = &[_]*const Feature {
2989 &feature_db,
2990 &feature_dsp,
2991 &feature_hwdivArm,
2992 &feature_hwdiv,1838 &feature_hwdiv,
2993 &feature_trustzone,1839 &feature_trustzone,
2994 &feature_fpregs,1840 &feature_fpregs,
2995 &feature_v4t,1841 &feature_db,
2996 &feature_thumb2,
2997 &feature_v7clrex,
2998 &feature_aclass,
2999 &feature_crc,
3000 &feature_mp,
3001 &feature_acquireRelease,1842 &feature_acquireRelease,
3002 &feature_fp16,
3003 &feature_perfmon,
3004 &feature_d32,1843 &feature_d32,
3005 &feature_armv8A,1844 &feature_perfmon,
3006 &feature_useAa,1845 &feature_mp,
3007 &feature_zcz,1846 &feature_hwdivArm,
3008 &feature_expandFpMlx,1847 &feature_dsp,
1848 &feature_aclass,
1849 &feature_fp16,
1850 &feature_v7clrex,
1851 &feature_crc,
1852 &feature_thumb2,
3009 &feature_slowVdup32,1853 &feature_slowVdup32,
1854 &feature_expandFpMlx,
3010 &feature_slowVgetlni32,1855 &feature_slowVgetlni32,
3011 &feature_profUnpr,1856 &feature_fuseLiterals,
3012 &feature_wideStrideVfp,1857 &feature_wideStrideVfp,
1858 &feature_slowFpBrcc,
3013 &feature_retAddrStack,1859 &feature_retAddrStack,
1860 &feature_dontWidenVmovs,
1861 &feature_zcz,
3014 &feature_fuseAes,1862 &feature_fuseAes,
3015 &feature_fuseLiterals,
3016 &feature_slowfpvmlx,1863 &feature_slowfpvmlx,
3017 &feature_slowFpBrcc,1864 &feature_profUnpr,
3018 &feature_dontWidenVmovs,1865 &feature_useAa,
3019 &feature_exynos,
3020 },1866 },
3021};1867};
30221868
...@@ -3024,40 +1870,37 @@ pub const cpu_exynosM4 = Cpu{...@@ -3024,40 +1870,37 @@ pub const cpu_exynosM4 = Cpu{
3024 .name = "exynos-m4",1870 .name = "exynos-m4",
3025 .llvm_name = "exynos-m4",1871 .llvm_name = "exynos-m4",
3026 .subfeatures = &[_]*const Feature {1872 .subfeatures = &[_]*const Feature {
3027 &feature_db,
3028 &feature_dsp,
3029 &feature_hwdivArm,
3030 &feature_hwdiv,1873 &feature_hwdiv,
3031 &feature_trustzone,1874 &feature_trustzone,
3032 &feature_fpregs,1875 &feature_fpregs,
3033 &feature_v4t,1876 &feature_db,
3034 &feature_thumb2,1877 &feature_acquireRelease,
1878 &feature_d32,
1879 &feature_perfmon,
1880 &feature_mp,
3035 &feature_ras,1881 &feature_ras,
3036 &feature_v7clrex,1882 &feature_hwdivArm,
1883 &feature_dsp,
3037 &feature_aclass,1884 &feature_aclass,
3038 &feature_crc,
3039 &feature_mp,
3040 &feature_acquireRelease,
3041 &feature_fp16,1885 &feature_fp16,
3042 &feature_perfmon,1886 &feature_v7clrex,
3043 &feature_d32,1887 &feature_crc,
3044 &feature_armv82A,1888 &feature_thumb2,
3045 &feature_dotprod,1889 &feature_dotprod,
3046 &feature_fullfp16,1890 &feature_fullfp16,
3047 &feature_useAa,
3048 &feature_zcz,
3049 &feature_expandFpMlx,
3050 &feature_slowVdup32,1891 &feature_slowVdup32,
1892 &feature_expandFpMlx,
3051 &feature_slowVgetlni32,1893 &feature_slowVgetlni32,
3052 &feature_profUnpr,1894 &feature_fuseLiterals,
3053 &feature_wideStrideVfp,1895 &feature_wideStrideVfp,
1896 &feature_slowFpBrcc,
3054 &feature_retAddrStack,1897 &feature_retAddrStack,
1898 &feature_dontWidenVmovs,
1899 &feature_zcz,
3055 &feature_fuseAes,1900 &feature_fuseAes,
3056 &feature_fuseLiterals,
3057 &feature_slowfpvmlx,1901 &feature_slowfpvmlx,
3058 &feature_slowFpBrcc,1902 &feature_profUnpr,
3059 &feature_dontWidenVmovs,1903 &feature_useAa,
3060 &feature_exynos,
3061 },1904 },
3062};1905};
30631906
...@@ -3065,40 +1908,37 @@ pub const cpu_exynosM5 = Cpu{...@@ -3065,40 +1908,37 @@ pub const cpu_exynosM5 = Cpu{
3065 .name = "exynos-m5",1908 .name = "exynos-m5",
3066 .llvm_name = "exynos-m5",1909 .llvm_name = "exynos-m5",
3067 .subfeatures = &[_]*const Feature {1910 .subfeatures = &[_]*const Feature {
3068 &feature_db,
3069 &feature_dsp,
3070 &feature_hwdivArm,
3071 &feature_hwdiv,1911 &feature_hwdiv,
3072 &feature_trustzone,1912 &feature_trustzone,
3073 &feature_fpregs,1913 &feature_fpregs,
3074 &feature_v4t,1914 &feature_db,
3075 &feature_thumb2,1915 &feature_acquireRelease,
1916 &feature_d32,
1917 &feature_perfmon,
1918 &feature_mp,
3076 &feature_ras,1919 &feature_ras,
3077 &feature_v7clrex,1920 &feature_hwdivArm,
1921 &feature_dsp,
3078 &feature_aclass,1922 &feature_aclass,
3079 &feature_crc,
3080 &feature_mp,
3081 &feature_acquireRelease,
3082 &feature_fp16,1923 &feature_fp16,
3083 &feature_perfmon,1924 &feature_v7clrex,
3084 &feature_d32,1925 &feature_crc,
3085 &feature_armv82A,1926 &feature_thumb2,
3086 &feature_dotprod,1927 &feature_dotprod,
3087 &feature_fullfp16,1928 &feature_fullfp16,
3088 &feature_useAa,
3089 &feature_zcz,
3090 &feature_expandFpMlx,
3091 &feature_slowVdup32,1929 &feature_slowVdup32,
1930 &feature_expandFpMlx,
3092 &feature_slowVgetlni32,1931 &feature_slowVgetlni32,
3093 &feature_profUnpr,1932 &feature_fuseLiterals,
3094 &feature_wideStrideVfp,1933 &feature_wideStrideVfp,
1934 &feature_slowFpBrcc,
3095 &feature_retAddrStack,1935 &feature_retAddrStack,
1936 &feature_dontWidenVmovs,
1937 &feature_zcz,
3096 &feature_fuseAes,1938 &feature_fuseAes,
3097 &feature_fuseLiterals,
3098 &feature_slowfpvmlx,1939 &feature_slowfpvmlx,
3099 &feature_slowFpBrcc,1940 &feature_profUnpr,
3100 &feature_dontWidenVmovs,1941 &feature_useAa,
3101 &feature_exynos,
3102 },1942 },
3103};1943};
31041944
...@@ -3113,8 +1953,6 @@ pub const cpu_iwmmxt = Cpu{...@@ -3113,8 +1953,6 @@ pub const cpu_iwmmxt = Cpu{
3113 .name = "iwmmxt",1953 .name = "iwmmxt",
3114 .llvm_name = "iwmmxt",1954 .llvm_name = "iwmmxt",
3115 .subfeatures = &[_]*const Feature {1955 .subfeatures = &[_]*const Feature {
3116 &feature_v4t,
3117 &feature_armv5te,
3118 },1956 },
3119};1957};
31201958
...@@ -3122,16 +1960,14 @@ pub const cpu_krait = Cpu{...@@ -3122,16 +1960,14 @@ pub const cpu_krait = Cpu{
3122 .name = "krait",1960 .name = "krait",
3123 .llvm_name = "krait",1961 .llvm_name = "krait",
3124 .subfeatures = &[_]*const Feature {1962 .subfeatures = &[_]*const Feature {
1963 &feature_fpregs,
3125 &feature_db,1964 &feature_db,
1965 &feature_d32,
1966 &feature_perfmon,
3126 &feature_dsp,1967 &feature_dsp,
3127 &feature_fpregs,
3128 &feature_thumb2,
3129 &feature_v7clrex,
3130 &feature_aclass,1968 &feature_aclass,
3131 &feature_perfmon,1969 &feature_v7clrex,
3132 &feature_v4t,1970 &feature_thumb2,
3133 &feature_d32,
3134 &feature_armv7A,
3135 &feature_avoidPartialCpsr,1971 &feature_avoidPartialCpsr,
3136 &feature_vldnAlign,1972 &feature_vldnAlign,
3137 &feature_fp16,1973 &feature_fp16,
...@@ -3141,7 +1977,6 @@ pub const cpu_krait = Cpu{...@@ -3141,7 +1977,6 @@ pub const cpu_krait = Cpu{
3141 &feature_muxedUnits,1977 &feature_muxedUnits,
3142 &feature_vfp4,1978 &feature_vfp4,
3143 &feature_vmlxForwarding,1979 &feature_vmlxForwarding,
3144 &feature_krait,
3145 },1980 },
3146};1981};
31471982
...@@ -3149,25 +1984,22 @@ pub const cpu_kryo = Cpu{...@@ -3149,25 +1984,22 @@ pub const cpu_kryo = Cpu{
3149 .name = "kryo",1984 .name = "kryo",
3150 .llvm_name = "kryo",1985 .llvm_name = "kryo",
3151 .subfeatures = &[_]*const Feature {1986 .subfeatures = &[_]*const Feature {
3152 &feature_db,
3153 &feature_dsp,
3154 &feature_hwdivArm,
3155 &feature_hwdiv,1987 &feature_hwdiv,
3156 &feature_trustzone,1988 &feature_trustzone,
3157 &feature_fpregs,1989 &feature_fpregs,
3158 &feature_v4t,1990 &feature_db,
3159 &feature_thumb2,
3160 &feature_v7clrex,
3161 &feature_aclass,
3162 &feature_crc,
3163 &feature_mp,
3164 &feature_acquireRelease,1991 &feature_acquireRelease,
3165 &feature_fp16,
3166 &feature_perfmon,
3167 &feature_d32,1992 &feature_d32,
3168 &feature_armv8A,1993 &feature_perfmon,
1994 &feature_mp,
1995 &feature_hwdivArm,
1996 &feature_dsp,
1997 &feature_aclass,
1998 &feature_fp16,
1999 &feature_v7clrex,
2000 &feature_crc,
2001 &feature_thumb2,
3169 &feature_crypto,2002 &feature_crypto,
3170 &feature_kryo,
3171 },2003 },
3172};2004};
31732005
...@@ -3175,8 +2007,6 @@ pub const cpu_mpcore = Cpu{...@@ -3175,8 +2007,6 @@ pub const cpu_mpcore = Cpu{
3175 .name = "mpcore",2007 .name = "mpcore",
3176 .llvm_name = "mpcore",2008 .llvm_name = "mpcore",
3177 .subfeatures = &[_]*const Feature {2009 .subfeatures = &[_]*const Feature {
3178 &feature_v4t,
3179 &feature_armv6k,
3180 &feature_slowfpvmlx,2010 &feature_slowfpvmlx,
3181 &feature_fpregs,2011 &feature_fpregs,
3182 &feature_vfp2,2012 &feature_vfp2,
...@@ -3187,8 +2017,6 @@ pub const cpu_mpcorenovfp = Cpu{...@@ -3187,8 +2017,6 @@ pub const cpu_mpcorenovfp = Cpu{
3187 .name = "mpcorenovfp",2017 .name = "mpcorenovfp",
3188 .llvm_name = "mpcorenovfp",2018 .llvm_name = "mpcorenovfp",
3189 .subfeatures = &[_]*const Feature {2019 .subfeatures = &[_]*const Feature {
3190 &feature_v4t,
3191 &feature_armv6k,
3192 },2020 },
3193};2021};
31942022
...@@ -3196,24 +2024,22 @@ pub const cpu_neoverseN1 = Cpu{...@@ -3196,24 +2024,22 @@ pub const cpu_neoverseN1 = Cpu{
3196 .name = "neoverse-n1",2024 .name = "neoverse-n1",
3197 .llvm_name = "neoverse-n1",2025 .llvm_name = "neoverse-n1",
3198 .subfeatures = &[_]*const Feature {2026 .subfeatures = &[_]*const Feature {
3199 &feature_db,
3200 &feature_dsp,
3201 &feature_hwdivArm,
3202 &feature_hwdiv,2027 &feature_hwdiv,
3203 &feature_trustzone,2028 &feature_trustzone,
3204 &feature_fpregs,2029 &feature_fpregs,
3205 &feature_v4t,2030 &feature_db,
3206 &feature_thumb2,2031 &feature_acquireRelease,
2032 &feature_d32,
2033 &feature_perfmon,
2034 &feature_mp,
3207 &feature_ras,2035 &feature_ras,
3208 &feature_v7clrex,2036 &feature_hwdivArm,
2037 &feature_dsp,
3209 &feature_aclass,2038 &feature_aclass,
3210 &feature_crc,
3211 &feature_mp,
3212 &feature_acquireRelease,
3213 &feature_fp16,2039 &feature_fp16,
3214 &feature_perfmon,2040 &feature_v7clrex,
3215 &feature_d32,2041 &feature_crc,
3216 &feature_armv82A,2042 &feature_thumb2,
3217 &feature_crypto,2043 &feature_crypto,
3218 &feature_dotprod,2044 &feature_dotprod,
3219 },2045 },
...@@ -3224,12 +2050,9 @@ pub const cpu_sc000 = Cpu{...@@ -3224,12 +2050,9 @@ pub const cpu_sc000 = Cpu{
3224 .llvm_name = "sc000",2050 .llvm_name = "sc000",
3225 .subfeatures = &[_]*const Feature {2051 .subfeatures = &[_]*const Feature {
3226 &feature_db,2052 &feature_db,
3227 &feature_mclass,
3228 &feature_thumbMode,
3229 &feature_strictAlign,2053 &feature_strictAlign,
3230 &feature_noarm,2054 &feature_noarm,
3231 &feature_v4t,2055 &feature_mclass,
3232 &feature_armv6M,
3233 },2056 },
3234};2057};
32352058
...@@ -3237,20 +2060,16 @@ pub const cpu_sc300 = Cpu{...@@ -3237,20 +2060,16 @@ pub const cpu_sc300 = Cpu{
3237 .name = "sc300",2060 .name = "sc300",
3238 .llvm_name = "sc300",2061 .llvm_name = "sc300",
3239 .subfeatures = &[_]*const Feature {2062 .subfeatures = &[_]*const Feature {
3240 &feature_db,
3241 &feature_mclass,
3242 &feature_hwdiv,2063 &feature_hwdiv,
3243 &feature_thumbMode,2064 &feature_db,
3244 &feature_thumb2,
3245 &feature_v7clrex,
3246 &feature_perfmon,2065 &feature_perfmon,
3247 &feature_noarm,2066 &feature_noarm,
3248 &feature_v4t,2067 &feature_v7clrex,
3249 &feature_armv7M,2068 &feature_mclass,
2069 &feature_thumb2,
3250 &feature_noBranchPredictor,2070 &feature_noBranchPredictor,
3251 &feature_useAa,2071 &feature_useAa,
3252 &feature_useMisched,2072 &feature_useMisched,
3253 &feature_m3,
3254 },2073 },
3255};2074};
32562075
...@@ -3258,7 +2077,6 @@ pub const cpu_strongarm = Cpu{...@@ -3258,7 +2077,6 @@ pub const cpu_strongarm = Cpu{
3258 .name = "strongarm",2077 .name = "strongarm",
3259 .llvm_name = "strongarm",2078 .llvm_name = "strongarm",
3260 .subfeatures = &[_]*const Feature {2079 .subfeatures = &[_]*const Feature {
3261 &feature_armv4,
3262 },2080 },
3263};2081};
32642082
...@@ -3266,7 +2084,6 @@ pub const cpu_strongarm110 = Cpu{...@@ -3266,7 +2084,6 @@ pub const cpu_strongarm110 = Cpu{
3266 .name = "strongarm110",2084 .name = "strongarm110",
3267 .llvm_name = "strongarm110",2085 .llvm_name = "strongarm110",
3268 .subfeatures = &[_]*const Feature {2086 .subfeatures = &[_]*const Feature {
3269 &feature_armv4,
3270 },2087 },
3271};2088};
32722089
...@@ -3274,7 +2091,6 @@ pub const cpu_strongarm1100 = Cpu{...@@ -3274,7 +2091,6 @@ pub const cpu_strongarm1100 = Cpu{
3274 .name = "strongarm1100",2091 .name = "strongarm1100",
3275 .llvm_name = "strongarm1100",2092 .llvm_name = "strongarm1100",
3276 .subfeatures = &[_]*const Feature {2093 .subfeatures = &[_]*const Feature {
3277 &feature_armv4,
3278 },2094 },
3279};2095};
32802096
...@@ -3282,7 +2098,6 @@ pub const cpu_strongarm1110 = Cpu{...@@ -3282,7 +2098,6 @@ pub const cpu_strongarm1110 = Cpu{
3282 .name = "strongarm1110",2098 .name = "strongarm1110",
3283 .llvm_name = "strongarm1110",2099 .llvm_name = "strongarm1110",
3284 .subfeatures = &[_]*const Feature {2100 .subfeatures = &[_]*const Feature {
3285 &feature_armv4,
3286 },2101 },
3287};2102};
32882103
...@@ -3290,16 +2105,14 @@ pub const cpu_swift = Cpu{...@@ -3290,16 +2105,14 @@ pub const cpu_swift = Cpu{
3290 .name = "swift",2105 .name = "swift",
3291 .llvm_name = "swift",2106 .llvm_name = "swift",
3292 .subfeatures = &[_]*const Feature {2107 .subfeatures = &[_]*const Feature {
2108 &feature_fpregs,
3293 &feature_db,2109 &feature_db,
2110 &feature_d32,
2111 &feature_perfmon,
3294 &feature_dsp,2112 &feature_dsp,
3295 &feature_fpregs,
3296 &feature_thumb2,
3297 &feature_v7clrex,
3298 &feature_aclass,2113 &feature_aclass,
3299 &feature_perfmon,2114 &feature_v7clrex,
3300 &feature_v4t,2115 &feature_thumb2,
3301 &feature_d32,
3302 &feature_armv7A,
3303 &feature_avoidMovsShop,2116 &feature_avoidMovsShop,
3304 &feature_avoidPartialCpsr,2117 &feature_avoidPartialCpsr,
3305 &feature_hwdivArm,2118 &feature_hwdivArm,
...@@ -3320,7 +2133,6 @@ pub const cpu_swift = Cpu{...@@ -3320,7 +2133,6 @@ pub const cpu_swift = Cpu{
3320 &feature_wideStrideVfp,2133 &feature_wideStrideVfp,
3321 &feature_fp16,2134 &feature_fp16,
3322 &feature_vfp4,2135 &feature_vfp4,
3323 &feature_swift,
3324 },2136 },
3325};2137};
33262138
...@@ -3328,8 +2140,6 @@ pub const cpu_xscale = Cpu{...@@ -3328,8 +2140,6 @@ pub const cpu_xscale = Cpu{
3328 .name = "xscale",2140 .name = "xscale",
3329 .llvm_name = "xscale",2141 .llvm_name = "xscale",
3330 .subfeatures = &[_]*const Feature {2142 .subfeatures = &[_]*const Feature {
3331 &feature_v4t,
3332 &feature_armv5te,
3333 },2143 },
3334};2144};
33352145
lib/std/target/avr.zig+1389-2161
...@@ -1,227 +1,6 @@...@@ -1,227 +1,6 @@
1const Feature = @import("std").target.Feature;1const Feature = @import("std").target.Feature;
2const Cpu = @import("std").target.Cpu;2const Cpu = @import("std").target.Cpu;
33
4pub const feature_avr0 = Feature{
5 .name = "avr0",
6 .description = "The device is a part of the avr0 family",
7 .subfeatures = &[_]*const Feature {
8 },
9};
10
11pub const feature_avr1 = Feature{
12 .name = "avr1",
13 .description = "The device is a part of the avr1 family",
14 .subfeatures = &[_]*const Feature {
15 &feature_lpm,
16 &feature_avr0,
17 },
18};
19
20pub const feature_avr2 = Feature{
21 .name = "avr2",
22 .description = "The device is a part of the avr2 family",
23 .subfeatures = &[_]*const Feature {
24 &feature_ijmpcall,
25 &feature_sram,
26 &feature_addsubiw,
27 &feature_lpm,
28 &feature_avr0,
29 },
30};
31
32pub const feature_avr3 = Feature{
33 .name = "avr3",
34 .description = "The device is a part of the avr3 family",
35 .subfeatures = &[_]*const Feature {
36 &feature_ijmpcall,
37 &feature_jmpcall,
38 &feature_sram,
39 &feature_addsubiw,
40 &feature_lpm,
41 &feature_avr0,
42 },
43};
44
45pub const feature_avr4 = Feature{
46 .name = "avr4",
47 .description = "The device is a part of the avr4 family",
48 .subfeatures = &[_]*const Feature {
49 &feature_spm,
50 &feature_lpmx,
51 &feature_ijmpcall,
52 &feature_sram,
53 &feature_addsubiw,
54 &feature_mul,
55 &feature_break,
56 &feature_lpm,
57 &feature_avr0,
58 &feature_movw,
59 },
60};
61
62pub const feature_avr5 = Feature{
63 .name = "avr5",
64 .description = "The device is a part of the avr5 family",
65 .subfeatures = &[_]*const Feature {
66 &feature_spm,
67 &feature_lpmx,
68 &feature_ijmpcall,
69 &feature_jmpcall,
70 &feature_sram,
71 &feature_addsubiw,
72 &feature_mul,
73 &feature_break,
74 &feature_lpm,
75 &feature_avr0,
76 &feature_movw,
77 },
78};
79
80pub const feature_avr6 = Feature{
81 .name = "avr6",
82 .description = "The device is a part of the avr6 family",
83 .subfeatures = &[_]*const Feature {
84 &feature_spm,
85 &feature_lpmx,
86 &feature_ijmpcall,
87 &feature_jmpcall,
88 &feature_sram,
89 &feature_addsubiw,
90 &feature_elpm,
91 &feature_mul,
92 &feature_break,
93 &feature_lpm,
94 &feature_elpmx,
95 &feature_avr0,
96 &feature_movw,
97 },
98};
99
100pub const feature_avr25 = Feature{
101 .name = "avr25",
102 .description = "The device is a part of the avr25 family",
103 .subfeatures = &[_]*const Feature {
104 &feature_spm,
105 &feature_lpmx,
106 &feature_ijmpcall,
107 &feature_sram,
108 &feature_addsubiw,
109 &feature_break,
110 &feature_lpm,
111 &feature_avr0,
112 &feature_movw,
113 },
114};
115
116pub const feature_avr31 = Feature{
117 .name = "avr31",
118 .description = "The device is a part of the avr31 family",
119 .subfeatures = &[_]*const Feature {
120 &feature_ijmpcall,
121 &feature_jmpcall,
122 &feature_sram,
123 &feature_addsubiw,
124 &feature_elpm,
125 &feature_lpm,
126 &feature_avr0,
127 },
128};
129
130pub const feature_avr35 = Feature{
131 .name = "avr35",
132 .description = "The device is a part of the avr35 family",
133 .subfeatures = &[_]*const Feature {
134 &feature_spm,
135 &feature_lpmx,
136 &feature_ijmpcall,
137 &feature_jmpcall,
138 &feature_sram,
139 &feature_addsubiw,
140 &feature_break,
141 &feature_lpm,
142 &feature_avr0,
143 &feature_movw,
144 },
145};
146
147pub const feature_avr51 = Feature{
148 .name = "avr51",
149 .description = "The device is a part of the avr51 family",
150 .subfeatures = &[_]*const Feature {
151 &feature_spm,
152 &feature_lpmx,
153 &feature_ijmpcall,
154 &feature_jmpcall,
155 &feature_sram,
156 &feature_addsubiw,
157 &feature_elpm,
158 &feature_mul,
159 &feature_break,
160 &feature_lpm,
161 &feature_elpmx,
162 &feature_avr0,
163 &feature_movw,
164 },
165};
166
167pub const feature_avrtiny = Feature{
168 .name = "avrtiny",
169 .description = "The device is a part of the avrtiny family",
170 .subfeatures = &[_]*const Feature {
171 &feature_avr0,
172 &feature_sram,
173 &feature_tinyencoding,
174 &feature_break,
175 },
176};
177
178pub const feature_xmega = Feature{
179 .name = "xmega",
180 .description = "The device is a part of the xmega family",
181 .subfeatures = &[_]*const Feature {
182 &feature_spm,
183 &feature_lpmx,
184 &feature_des,
185 &feature_ijmpcall,
186 &feature_jmpcall,
187 &feature_sram,
188 &feature_addsubiw,
189 &feature_elpm,
190 &feature_eijmpcall,
191 &feature_mul,
192 &feature_break,
193 &feature_lpm,
194 &feature_elpmx,
195 &feature_avr0,
196 &feature_movw,
197 &feature_spmx,
198 },
199};
200
201pub const feature_xmegau = Feature{
202 .name = "xmegau",
203 .description = "The device is a part of the xmegau family",
204 .subfeatures = &[_]*const Feature {
205 &feature_spm,
206 &feature_lpmx,
207 &feature_des,
208 &feature_ijmpcall,
209 &feature_jmpcall,
210 &feature_sram,
211 &feature_rmw,
212 &feature_addsubiw,
213 &feature_elpm,
214 &feature_eijmpcall,
215 &feature_mul,
216 &feature_break,
217 &feature_lpm,
218 &feature_elpmx,
219 &feature_avr0,
220 &feature_movw,
221 &feature_spmx,
222 },
223};
224
225pub const feature_addsubiw = Feature{4pub const feature_addsubiw = Feature{
226 .name = "addsubiw",5 .name = "addsubiw",
227 .description = "Enable 16-bit register-immediate addition and subtraction instructions",6 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
...@@ -334,29 +113,6 @@ pub const feature_sram = Feature{...@@ -334,29 +113,6 @@ pub const feature_sram = Feature{
334 },113 },
335};114};
336115
337pub const feature_special = Feature{
338 .name = "special",
339 .description = "Enable use of the entire instruction set - used for debugging",
340 .subfeatures = &[_]*const Feature {
341 &feature_spm,
342 &feature_lpmx,
343 &feature_des,
344 &feature_ijmpcall,
345 &feature_jmpcall,
346 &feature_rmw,
347 &feature_sram,
348 &feature_elpm,
349 &feature_addsubiw,
350 &feature_eijmpcall,
351 &feature_elpmx,
352 &feature_break,
353 &feature_lpm,
354 &feature_mul,
355 &feature_movw,
356 &feature_spmx,
357 },
358};
359
360pub const feature_smallstack = Feature{116pub const feature_smallstack = Feature{
361 .name = "smallstack",117 .name = "smallstack",
362 .description = "The device has an 8-bit stack pointer",118 .description = "The device has an 8-bit stack pointer",
...@@ -372,20 +128,6 @@ pub const feature_tinyencoding = Feature{...@@ -372,20 +128,6 @@ pub const feature_tinyencoding = Feature{
372};128};
373129
374pub const features = &[_]*const Feature {130pub const features = &[_]*const Feature {
375 &feature_avr0,
376 &feature_avr1,
377 &feature_avr2,
378 &feature_avr3,
379 &feature_avr4,
380 &feature_avr5,
381 &feature_avr6,
382 &feature_avr25,
383 &feature_avr31,
384 &feature_avr35,
385 &feature_avr51,
386 &feature_avrtiny,
387 &feature_xmega,
388 &feature_xmegau,
389 &feature_addsubiw,131 &feature_addsubiw,
390 &feature_break,132 &feature_break,
391 &feature_des,133 &feature_des,
...@@ -402,7 +144,6 @@ pub const features = &[_]*const Feature {...@@ -402,7 +144,6 @@ pub const features = &[_]*const Feature {
402 &feature_spm,144 &feature_spm,
403 &feature_spmx,145 &feature_spmx,
404 &feature_sram,146 &feature_sram,
405 &feature_special,
406 &feature_smallstack,147 &feature_smallstack,
407 &feature_tinyencoding,148 &feature_tinyencoding,
408};149};
...@@ -411,14 +152,12 @@ pub const cpu_at43usb320 = Cpu{...@@ -411,14 +152,12 @@ pub const cpu_at43usb320 = Cpu{
411 .name = "at43usb320",152 .name = "at43usb320",
412 .llvm_name = "at43usb320",153 .llvm_name = "at43usb320",
413 .subfeatures = &[_]*const Feature {154 .subfeatures = &[_]*const Feature {
414 &feature_ijmpcall,
415 &feature_jmpcall,
416 &feature_sram,
417 &feature_addsubiw,155 &feature_addsubiw,
418 &feature_elpm,156 &feature_jmpcall,
419 &feature_lpm,157 &feature_lpm,
420 &feature_avr0,158 &feature_elpm,
421 &feature_avr31,159 &feature_sram,
160 &feature_ijmpcall,
422 },161 },
423};162};
424163
...@@ -426,13 +165,11 @@ pub const cpu_at43usb355 = Cpu{...@@ -426,13 +165,11 @@ pub const cpu_at43usb355 = Cpu{
426 .name = "at43usb355",165 .name = "at43usb355",
427 .llvm_name = "at43usb355",166 .llvm_name = "at43usb355",
428 .subfeatures = &[_]*const Feature {167 .subfeatures = &[_]*const Feature {
429 &feature_ijmpcall,
430 &feature_jmpcall,
431 &feature_sram,
432 &feature_addsubiw,168 &feature_addsubiw,
169 &feature_jmpcall,
433 &feature_lpm,170 &feature_lpm,
434 &feature_avr0,171 &feature_sram,
435 &feature_avr3,172 &feature_ijmpcall,
436 },173 },
437};174};
438175
...@@ -440,13 +177,11 @@ pub const cpu_at76c711 = Cpu{...@@ -440,13 +177,11 @@ pub const cpu_at76c711 = Cpu{
440 .name = "at76c711",177 .name = "at76c711",
441 .llvm_name = "at76c711",178 .llvm_name = "at76c711",
442 .subfeatures = &[_]*const Feature {179 .subfeatures = &[_]*const Feature {
443 &feature_ijmpcall,
444 &feature_jmpcall,
445 &feature_sram,
446 &feature_addsubiw,180 &feature_addsubiw,
181 &feature_jmpcall,
447 &feature_lpm,182 &feature_lpm,
448 &feature_avr0,183 &feature_sram,
449 &feature_avr3,184 &feature_ijmpcall,
450 },185 },
451};186};
452187
...@@ -454,12 +189,10 @@ pub const cpu_at86rf401 = Cpu{...@@ -454,12 +189,10 @@ pub const cpu_at86rf401 = Cpu{
454 .name = "at86rf401",189 .name = "at86rf401",
455 .llvm_name = "at86rf401",190 .llvm_name = "at86rf401",
456 .subfeatures = &[_]*const Feature {191 .subfeatures = &[_]*const Feature {
457 &feature_ijmpcall,
458 &feature_sram,
459 &feature_addsubiw,192 &feature_addsubiw,
460 &feature_lpm,193 &feature_lpm,
461 &feature_avr0,194 &feature_sram,
462 &feature_avr2,195 &feature_ijmpcall,
463 &feature_lpmx,196 &feature_lpmx,
464 &feature_movw,197 &feature_movw,
465 },198 },
...@@ -469,12 +202,10 @@ pub const cpu_at90c8534 = Cpu{...@@ -469,12 +202,10 @@ pub const cpu_at90c8534 = Cpu{
469 .name = "at90c8534",202 .name = "at90c8534",
470 .llvm_name = "at90c8534",203 .llvm_name = "at90c8534",
471 .subfeatures = &[_]*const Feature {204 .subfeatures = &[_]*const Feature {
472 &feature_ijmpcall,
473 &feature_sram,
474 &feature_addsubiw,205 &feature_addsubiw,
475 &feature_lpm,206 &feature_lpm,
476 &feature_avr0,207 &feature_sram,
477 &feature_avr2,208 &feature_ijmpcall,
478 },209 },
479};210};
480211
...@@ -482,20 +213,18 @@ pub const cpu_at90can128 = Cpu{...@@ -482,20 +213,18 @@ pub const cpu_at90can128 = Cpu{
482 .name = "at90can128",213 .name = "at90can128",
483 .llvm_name = "at90can128",214 .llvm_name = "at90can128",
484 .subfeatures = &[_]*const Feature {215 .subfeatures = &[_]*const Feature {
485 &feature_spm,
486 &feature_lpmx,216 &feature_lpmx,
487 &feature_ijmpcall,217 &feature_spm,
488 &feature_jmpcall,
489 &feature_sram,
490 &feature_addsubiw,218 &feature_addsubiw,
491 &feature_elpm,219 &feature_jmpcall,
492 &feature_mul,
493 &feature_break,
494 &feature_lpm,220 &feature_lpm,
221 &feature_break,
222 &feature_mul,
223 &feature_elpm,
495 &feature_elpmx,224 &feature_elpmx,
496 &feature_avr0,225 &feature_sram,
226 &feature_ijmpcall,
497 &feature_movw,227 &feature_movw,
498 &feature_avr51,
499 },228 },
500};229};
501230
...@@ -503,18 +232,16 @@ pub const cpu_at90can32 = Cpu{...@@ -503,18 +232,16 @@ pub const cpu_at90can32 = Cpu{
503 .name = "at90can32",232 .name = "at90can32",
504 .llvm_name = "at90can32",233 .llvm_name = "at90can32",
505 .subfeatures = &[_]*const Feature {234 .subfeatures = &[_]*const Feature {
506 &feature_spm,
507 &feature_lpmx,235 &feature_lpmx,
508 &feature_ijmpcall,236 &feature_spm,
509 &feature_jmpcall,
510 &feature_sram,
511 &feature_addsubiw,237 &feature_addsubiw,
512 &feature_mul,238 &feature_jmpcall,
513 &feature_break,
514 &feature_lpm,239 &feature_lpm,
515 &feature_avr0,240 &feature_break,
241 &feature_mul,
242 &feature_sram,
243 &feature_ijmpcall,
516 &feature_movw,244 &feature_movw,
517 &feature_avr5,
518 },245 },
519};246};
520247
...@@ -522,18 +249,16 @@ pub const cpu_at90can64 = Cpu{...@@ -522,18 +249,16 @@ pub const cpu_at90can64 = Cpu{
522 .name = "at90can64",249 .name = "at90can64",
523 .llvm_name = "at90can64",250 .llvm_name = "at90can64",
524 .subfeatures = &[_]*const Feature {251 .subfeatures = &[_]*const Feature {
525 &feature_spm,
526 &feature_lpmx,252 &feature_lpmx,
527 &feature_ijmpcall,253 &feature_spm,
528 &feature_jmpcall,
529 &feature_sram,
530 &feature_addsubiw,254 &feature_addsubiw,
531 &feature_mul,255 &feature_jmpcall,
532 &feature_break,
533 &feature_lpm,256 &feature_lpm,
534 &feature_avr0,257 &feature_break,
258 &feature_mul,
259 &feature_sram,
260 &feature_ijmpcall,
535 &feature_movw,261 &feature_movw,
536 &feature_avr5,
537 },262 },
538};263};
539264
...@@ -541,17 +266,15 @@ pub const cpu_at90pwm1 = Cpu{...@@ -541,17 +266,15 @@ pub const cpu_at90pwm1 = Cpu{
541 .name = "at90pwm1",266 .name = "at90pwm1",
542 .llvm_name = "at90pwm1",267 .llvm_name = "at90pwm1",
543 .subfeatures = &[_]*const Feature {268 .subfeatures = &[_]*const Feature {
544 &feature_spm,
545 &feature_lpmx,269 &feature_lpmx,
546 &feature_ijmpcall,270 &feature_spm,
547 &feature_sram,
548 &feature_addsubiw,271 &feature_addsubiw,
549 &feature_mul,
550 &feature_break,272 &feature_break,
551 &feature_lpm,273 &feature_lpm,
552 &feature_avr0,274 &feature_mul,
275 &feature_sram,
276 &feature_ijmpcall,
553 &feature_movw,277 &feature_movw,
554 &feature_avr4,
555 },278 },
556};279};
557280
...@@ -559,18 +282,16 @@ pub const cpu_at90pwm161 = Cpu{...@@ -559,18 +282,16 @@ pub const cpu_at90pwm161 = Cpu{
559 .name = "at90pwm161",282 .name = "at90pwm161",
560 .llvm_name = "at90pwm161",283 .llvm_name = "at90pwm161",
561 .subfeatures = &[_]*const Feature {284 .subfeatures = &[_]*const Feature {
562 &feature_spm,
563 &feature_lpmx,285 &feature_lpmx,
564 &feature_ijmpcall,286 &feature_spm,
565 &feature_jmpcall,
566 &feature_sram,
567 &feature_addsubiw,287 &feature_addsubiw,
568 &feature_mul,288 &feature_jmpcall,
569 &feature_break,
570 &feature_lpm,289 &feature_lpm,
571 &feature_avr0,290 &feature_break,
291 &feature_mul,
292 &feature_sram,
293 &feature_ijmpcall,
572 &feature_movw,294 &feature_movw,
573 &feature_avr5,
574 },295 },
575};296};
576297
...@@ -578,17 +299,15 @@ pub const cpu_at90pwm2 = Cpu{...@@ -578,17 +299,15 @@ pub const cpu_at90pwm2 = Cpu{
578 .name = "at90pwm2",299 .name = "at90pwm2",
579 .llvm_name = "at90pwm2",300 .llvm_name = "at90pwm2",
580 .subfeatures = &[_]*const Feature {301 .subfeatures = &[_]*const Feature {
581 &feature_spm,
582 &feature_lpmx,302 &feature_lpmx,
583 &feature_ijmpcall,303 &feature_spm,
584 &feature_sram,
585 &feature_addsubiw,304 &feature_addsubiw,
586 &feature_mul,
587 &feature_break,305 &feature_break,
588 &feature_lpm,306 &feature_lpm,
589 &feature_avr0,307 &feature_mul,
308 &feature_sram,
309 &feature_ijmpcall,
590 &feature_movw,310 &feature_movw,
591 &feature_avr4,
592 },311 },
593};312};
594313
...@@ -596,18 +315,16 @@ pub const cpu_at90pwm216 = Cpu{...@@ -596,18 +315,16 @@ pub const cpu_at90pwm216 = Cpu{
596 .name = "at90pwm216",315 .name = "at90pwm216",
597 .llvm_name = "at90pwm216",316 .llvm_name = "at90pwm216",
598 .subfeatures = &[_]*const Feature {317 .subfeatures = &[_]*const Feature {
599 &feature_spm,
600 &feature_lpmx,318 &feature_lpmx,
601 &feature_ijmpcall,319 &feature_spm,
602 &feature_jmpcall,
603 &feature_sram,
604 &feature_addsubiw,320 &feature_addsubiw,
605 &feature_mul,321 &feature_jmpcall,
606 &feature_break,
607 &feature_lpm,322 &feature_lpm,
608 &feature_avr0,323 &feature_break,
324 &feature_mul,
325 &feature_sram,
326 &feature_ijmpcall,
609 &feature_movw,327 &feature_movw,
610 &feature_avr5,
611 },328 },
612};329};
613330
...@@ -615,17 +332,15 @@ pub const cpu_at90pwm2b = Cpu{...@@ -615,17 +332,15 @@ pub const cpu_at90pwm2b = Cpu{
615 .name = "at90pwm2b",332 .name = "at90pwm2b",
616 .llvm_name = "at90pwm2b",333 .llvm_name = "at90pwm2b",
617 .subfeatures = &[_]*const Feature {334 .subfeatures = &[_]*const Feature {
618 &feature_spm,
619 &feature_lpmx,335 &feature_lpmx,
620 &feature_ijmpcall,336 &feature_spm,
621 &feature_sram,
622 &feature_addsubiw,337 &feature_addsubiw,
623 &feature_mul,
624 &feature_break,338 &feature_break,
625 &feature_lpm,339 &feature_lpm,
626 &feature_avr0,340 &feature_mul,
341 &feature_sram,
342 &feature_ijmpcall,
627 &feature_movw,343 &feature_movw,
628 &feature_avr4,
629 },344 },
630};345};
631346
...@@ -633,17 +348,15 @@ pub const cpu_at90pwm3 = Cpu{...@@ -633,17 +348,15 @@ pub const cpu_at90pwm3 = Cpu{
633 .name = "at90pwm3",348 .name = "at90pwm3",
634 .llvm_name = "at90pwm3",349 .llvm_name = "at90pwm3",
635 .subfeatures = &[_]*const Feature {350 .subfeatures = &[_]*const Feature {
636 &feature_spm,
637 &feature_lpmx,351 &feature_lpmx,
638 &feature_ijmpcall,352 &feature_spm,
639 &feature_sram,
640 &feature_addsubiw,353 &feature_addsubiw,
641 &feature_mul,
642 &feature_break,354 &feature_break,
643 &feature_lpm,355 &feature_lpm,
644 &feature_avr0,356 &feature_mul,
357 &feature_sram,
358 &feature_ijmpcall,
645 &feature_movw,359 &feature_movw,
646 &feature_avr4,
647 },360 },
648};361};
649362
...@@ -651,18 +364,16 @@ pub const cpu_at90pwm316 = Cpu{...@@ -651,18 +364,16 @@ pub const cpu_at90pwm316 = Cpu{
651 .name = "at90pwm316",364 .name = "at90pwm316",
652 .llvm_name = "at90pwm316",365 .llvm_name = "at90pwm316",
653 .subfeatures = &[_]*const Feature {366 .subfeatures = &[_]*const Feature {
654 &feature_spm,
655 &feature_lpmx,367 &feature_lpmx,
656 &feature_ijmpcall,368 &feature_spm,
657 &feature_jmpcall,
658 &feature_sram,
659 &feature_addsubiw,369 &feature_addsubiw,
660 &feature_mul,370 &feature_jmpcall,
661 &feature_break,
662 &feature_lpm,371 &feature_lpm,
663 &feature_avr0,372 &feature_break,
373 &feature_mul,
374 &feature_sram,
375 &feature_ijmpcall,
664 &feature_movw,376 &feature_movw,
665 &feature_avr5,
666 },377 },
667};378};
668379
...@@ -670,17 +381,15 @@ pub const cpu_at90pwm3b = Cpu{...@@ -670,17 +381,15 @@ pub const cpu_at90pwm3b = Cpu{
670 .name = "at90pwm3b",381 .name = "at90pwm3b",
671 .llvm_name = "at90pwm3b",382 .llvm_name = "at90pwm3b",
672 .subfeatures = &[_]*const Feature {383 .subfeatures = &[_]*const Feature {
673 &feature_spm,
674 &feature_lpmx,384 &feature_lpmx,
675 &feature_ijmpcall,385 &feature_spm,
676 &feature_sram,
677 &feature_addsubiw,386 &feature_addsubiw,
678 &feature_mul,
679 &feature_break,387 &feature_break,
680 &feature_lpm,388 &feature_lpm,
681 &feature_avr0,389 &feature_mul,
390 &feature_sram,
391 &feature_ijmpcall,
682 &feature_movw,392 &feature_movw,
683 &feature_avr4,
684 },393 },
685};394};
686395
...@@ -688,17 +397,15 @@ pub const cpu_at90pwm81 = Cpu{...@@ -688,17 +397,15 @@ pub const cpu_at90pwm81 = Cpu{
688 .name = "at90pwm81",397 .name = "at90pwm81",
689 .llvm_name = "at90pwm81",398 .llvm_name = "at90pwm81",
690 .subfeatures = &[_]*const Feature {399 .subfeatures = &[_]*const Feature {
691 &feature_spm,
692 &feature_lpmx,400 &feature_lpmx,
693 &feature_ijmpcall,401 &feature_spm,
694 &feature_sram,
695 &feature_addsubiw,402 &feature_addsubiw,
696 &feature_mul,
697 &feature_break,403 &feature_break,
698 &feature_lpm,404 &feature_lpm,
699 &feature_avr0,405 &feature_mul,
406 &feature_sram,
407 &feature_ijmpcall,
700 &feature_movw,408 &feature_movw,
701 &feature_avr4,
702 },409 },
703};410};
704411
...@@ -706,7 +413,6 @@ pub const cpu_at90s1200 = Cpu{...@@ -706,7 +413,6 @@ pub const cpu_at90s1200 = Cpu{
706 .name = "at90s1200",413 .name = "at90s1200",
707 .llvm_name = "at90s1200",414 .llvm_name = "at90s1200",
708 .subfeatures = &[_]*const Feature {415 .subfeatures = &[_]*const Feature {
709 &feature_avr0,
710 },416 },
711};417};
712418
...@@ -714,12 +420,10 @@ pub const cpu_at90s2313 = Cpu{...@@ -714,12 +420,10 @@ pub const cpu_at90s2313 = Cpu{
714 .name = "at90s2313",420 .name = "at90s2313",
715 .llvm_name = "at90s2313",421 .llvm_name = "at90s2313",
716 .subfeatures = &[_]*const Feature {422 .subfeatures = &[_]*const Feature {
717 &feature_ijmpcall,
718 &feature_sram,
719 &feature_addsubiw,423 &feature_addsubiw,
720 &feature_lpm,424 &feature_lpm,
721 &feature_avr0,425 &feature_sram,
722 &feature_avr2,426 &feature_ijmpcall,
723 },427 },
724};428};
725429
...@@ -727,12 +431,10 @@ pub const cpu_at90s2323 = Cpu{...@@ -727,12 +431,10 @@ pub const cpu_at90s2323 = Cpu{
727 .name = "at90s2323",431 .name = "at90s2323",
728 .llvm_name = "at90s2323",432 .llvm_name = "at90s2323",
729 .subfeatures = &[_]*const Feature {433 .subfeatures = &[_]*const Feature {
730 &feature_ijmpcall,
731 &feature_sram,
732 &feature_addsubiw,434 &feature_addsubiw,
733 &feature_lpm,435 &feature_lpm,
734 &feature_avr0,436 &feature_sram,
735 &feature_avr2,437 &feature_ijmpcall,
736 },438 },
737};439};
738440
...@@ -740,12 +442,10 @@ pub const cpu_at90s2333 = Cpu{...@@ -740,12 +442,10 @@ pub const cpu_at90s2333 = Cpu{
740 .name = "at90s2333",442 .name = "at90s2333",
741 .llvm_name = "at90s2333",443 .llvm_name = "at90s2333",
742 .subfeatures = &[_]*const Feature {444 .subfeatures = &[_]*const Feature {
743 &feature_ijmpcall,
744 &feature_sram,
745 &feature_addsubiw,445 &feature_addsubiw,
746 &feature_lpm,446 &feature_lpm,
747 &feature_avr0,447 &feature_sram,
748 &feature_avr2,448 &feature_ijmpcall,
749 },449 },
750};450};
751451
...@@ -753,12 +453,10 @@ pub const cpu_at90s2343 = Cpu{...@@ -753,12 +453,10 @@ pub const cpu_at90s2343 = Cpu{
753 .name = "at90s2343",453 .name = "at90s2343",
754 .llvm_name = "at90s2343",454 .llvm_name = "at90s2343",
755 .subfeatures = &[_]*const Feature {455 .subfeatures = &[_]*const Feature {
756 &feature_ijmpcall,
757 &feature_sram,
758 &feature_addsubiw,456 &feature_addsubiw,
759 &feature_lpm,457 &feature_lpm,
760 &feature_avr0,458 &feature_sram,
761 &feature_avr2,459 &feature_ijmpcall,
762 },460 },
763};461};
764462
...@@ -766,12 +464,10 @@ pub const cpu_at90s4414 = Cpu{...@@ -766,12 +464,10 @@ pub const cpu_at90s4414 = Cpu{
766 .name = "at90s4414",464 .name = "at90s4414",
767 .llvm_name = "at90s4414",465 .llvm_name = "at90s4414",
768 .subfeatures = &[_]*const Feature {466 .subfeatures = &[_]*const Feature {
769 &feature_ijmpcall,
770 &feature_sram,
771 &feature_addsubiw,467 &feature_addsubiw,
772 &feature_lpm,468 &feature_lpm,
773 &feature_avr0,469 &feature_sram,
774 &feature_avr2,470 &feature_ijmpcall,
775 },471 },
776};472};
777473
...@@ -779,12 +475,10 @@ pub const cpu_at90s4433 = Cpu{...@@ -779,12 +475,10 @@ pub const cpu_at90s4433 = Cpu{
779 .name = "at90s4433",475 .name = "at90s4433",
780 .llvm_name = "at90s4433",476 .llvm_name = "at90s4433",
781 .subfeatures = &[_]*const Feature {477 .subfeatures = &[_]*const Feature {
782 &feature_ijmpcall,
783 &feature_sram,
784 &feature_addsubiw,478 &feature_addsubiw,
785 &feature_lpm,479 &feature_lpm,
786 &feature_avr0,480 &feature_sram,
787 &feature_avr2,481 &feature_ijmpcall,
788 },482 },
789};483};
790484
...@@ -792,12 +486,10 @@ pub const cpu_at90s4434 = Cpu{...@@ -792,12 +486,10 @@ pub const cpu_at90s4434 = Cpu{
792 .name = "at90s4434",486 .name = "at90s4434",
793 .llvm_name = "at90s4434",487 .llvm_name = "at90s4434",
794 .subfeatures = &[_]*const Feature {488 .subfeatures = &[_]*const Feature {
795 &feature_ijmpcall,
796 &feature_sram,
797 &feature_addsubiw,489 &feature_addsubiw,
798 &feature_lpm,490 &feature_lpm,
799 &feature_avr0,491 &feature_sram,
800 &feature_avr2,492 &feature_ijmpcall,
801 },493 },
802};494};
803495
...@@ -805,12 +497,10 @@ pub const cpu_at90s8515 = Cpu{...@@ -805,12 +497,10 @@ pub const cpu_at90s8515 = Cpu{
805 .name = "at90s8515",497 .name = "at90s8515",
806 .llvm_name = "at90s8515",498 .llvm_name = "at90s8515",
807 .subfeatures = &[_]*const Feature {499 .subfeatures = &[_]*const Feature {
808 &feature_ijmpcall,
809 &feature_sram,
810 &feature_addsubiw,500 &feature_addsubiw,
811 &feature_lpm,501 &feature_lpm,
812 &feature_avr0,502 &feature_sram,
813 &feature_avr2,503 &feature_ijmpcall,
814 },504 },
815};505};
816506
...@@ -818,12 +508,10 @@ pub const cpu_at90s8535 = Cpu{...@@ -818,12 +508,10 @@ pub const cpu_at90s8535 = Cpu{
818 .name = "at90s8535",508 .name = "at90s8535",
819 .llvm_name = "at90s8535",509 .llvm_name = "at90s8535",
820 .subfeatures = &[_]*const Feature {510 .subfeatures = &[_]*const Feature {
821 &feature_ijmpcall,
822 &feature_sram,
823 &feature_addsubiw,511 &feature_addsubiw,
824 &feature_lpm,512 &feature_lpm,
825 &feature_avr0,513 &feature_sram,
826 &feature_avr2,514 &feature_ijmpcall,
827 },515 },
828};516};
829517
...@@ -831,18 +519,16 @@ pub const cpu_at90scr100 = Cpu{...@@ -831,18 +519,16 @@ pub const cpu_at90scr100 = Cpu{
831 .name = "at90scr100",519 .name = "at90scr100",
832 .llvm_name = "at90scr100",520 .llvm_name = "at90scr100",
833 .subfeatures = &[_]*const Feature {521 .subfeatures = &[_]*const Feature {
834 &feature_spm,
835 &feature_lpmx,522 &feature_lpmx,
836 &feature_ijmpcall,523 &feature_spm,
837 &feature_jmpcall,
838 &feature_sram,
839 &feature_addsubiw,524 &feature_addsubiw,
840 &feature_mul,525 &feature_jmpcall,
841 &feature_break,
842 &feature_lpm,526 &feature_lpm,
843 &feature_avr0,527 &feature_break,
528 &feature_mul,
529 &feature_sram,
530 &feature_ijmpcall,
844 &feature_movw,531 &feature_movw,
845 &feature_avr5,
846 },532 },
847};533};
848534
...@@ -850,20 +536,18 @@ pub const cpu_at90usb1286 = Cpu{...@@ -850,20 +536,18 @@ pub const cpu_at90usb1286 = Cpu{
850 .name = "at90usb1286",536 .name = "at90usb1286",
851 .llvm_name = "at90usb1286",537 .llvm_name = "at90usb1286",
852 .subfeatures = &[_]*const Feature {538 .subfeatures = &[_]*const Feature {
853 &feature_spm,
854 &feature_lpmx,539 &feature_lpmx,
855 &feature_ijmpcall,540 &feature_spm,
856 &feature_jmpcall,
857 &feature_sram,
858 &feature_addsubiw,541 &feature_addsubiw,
859 &feature_elpm,542 &feature_jmpcall,
860 &feature_mul,
861 &feature_break,
862 &feature_lpm,543 &feature_lpm,
544 &feature_break,
545 &feature_mul,
546 &feature_elpm,
863 &feature_elpmx,547 &feature_elpmx,
864 &feature_avr0,548 &feature_sram,
549 &feature_ijmpcall,
865 &feature_movw,550 &feature_movw,
866 &feature_avr51,
867 },551 },
868};552};
869553
...@@ -871,20 +555,18 @@ pub const cpu_at90usb1287 = Cpu{...@@ -871,20 +555,18 @@ pub const cpu_at90usb1287 = Cpu{
871 .name = "at90usb1287",555 .name = "at90usb1287",
872 .llvm_name = "at90usb1287",556 .llvm_name = "at90usb1287",
873 .subfeatures = &[_]*const Feature {557 .subfeatures = &[_]*const Feature {
874 &feature_spm,
875 &feature_lpmx,558 &feature_lpmx,
876 &feature_ijmpcall,559 &feature_spm,
877 &feature_jmpcall,
878 &feature_sram,
879 &feature_addsubiw,560 &feature_addsubiw,
880 &feature_elpm,561 &feature_jmpcall,
881 &feature_mul,
882 &feature_break,
883 &feature_lpm,562 &feature_lpm,
563 &feature_break,
564 &feature_mul,
565 &feature_elpm,
884 &feature_elpmx,566 &feature_elpmx,
885 &feature_avr0,567 &feature_sram,
568 &feature_ijmpcall,
886 &feature_movw,569 &feature_movw,
887 &feature_avr51,
888 },570 },
889};571};
890572
...@@ -892,17 +574,15 @@ pub const cpu_at90usb162 = Cpu{...@@ -892,17 +574,15 @@ pub const cpu_at90usb162 = Cpu{
892 .name = "at90usb162",574 .name = "at90usb162",
893 .llvm_name = "at90usb162",575 .llvm_name = "at90usb162",
894 .subfeatures = &[_]*const Feature {576 .subfeatures = &[_]*const Feature {
895 &feature_spm,
896 &feature_lpmx,577 &feature_lpmx,
897 &feature_ijmpcall,578 &feature_spm,
898 &feature_jmpcall,
899 &feature_sram,
900 &feature_addsubiw,579 &feature_addsubiw,
901 &feature_break,580 &feature_jmpcall,
902 &feature_lpm,581 &feature_lpm,
903 &feature_avr0,582 &feature_break,
583 &feature_sram,
584 &feature_ijmpcall,
904 &feature_movw,585 &feature_movw,
905 &feature_avr35,
906 },586 },
907};587};
908588
...@@ -910,18 +590,16 @@ pub const cpu_at90usb646 = Cpu{...@@ -910,18 +590,16 @@ pub const cpu_at90usb646 = Cpu{
910 .name = "at90usb646",590 .name = "at90usb646",
911 .llvm_name = "at90usb646",591 .llvm_name = "at90usb646",
912 .subfeatures = &[_]*const Feature {592 .subfeatures = &[_]*const Feature {
913 &feature_spm,
914 &feature_lpmx,593 &feature_lpmx,
915 &feature_ijmpcall,594 &feature_spm,
916 &feature_jmpcall,
917 &feature_sram,
918 &feature_addsubiw,595 &feature_addsubiw,
919 &feature_mul,596 &feature_jmpcall,
920 &feature_break,
921 &feature_lpm,597 &feature_lpm,
922 &feature_avr0,598 &feature_break,
599 &feature_mul,
600 &feature_sram,
601 &feature_ijmpcall,
923 &feature_movw,602 &feature_movw,
924 &feature_avr5,
925 },603 },
926};604};
927605
...@@ -929,18 +607,16 @@ pub const cpu_at90usb647 = Cpu{...@@ -929,18 +607,16 @@ pub const cpu_at90usb647 = Cpu{
929 .name = "at90usb647",607 .name = "at90usb647",
930 .llvm_name = "at90usb647",608 .llvm_name = "at90usb647",
931 .subfeatures = &[_]*const Feature {609 .subfeatures = &[_]*const Feature {
932 &feature_spm,
933 &feature_lpmx,610 &feature_lpmx,
934 &feature_ijmpcall,611 &feature_spm,
935 &feature_jmpcall,
936 &feature_sram,
937 &feature_addsubiw,612 &feature_addsubiw,
938 &feature_mul,613 &feature_jmpcall,
939 &feature_break,
940 &feature_lpm,614 &feature_lpm,
941 &feature_avr0,615 &feature_break,
616 &feature_mul,
617 &feature_sram,
618 &feature_ijmpcall,
942 &feature_movw,619 &feature_movw,
943 &feature_avr5,
944 },620 },
945};621};
946622
...@@ -948,17 +624,15 @@ pub const cpu_at90usb82 = Cpu{...@@ -948,17 +624,15 @@ pub const cpu_at90usb82 = Cpu{
948 .name = "at90usb82",624 .name = "at90usb82",
949 .llvm_name = "at90usb82",625 .llvm_name = "at90usb82",
950 .subfeatures = &[_]*const Feature {626 .subfeatures = &[_]*const Feature {
951 &feature_spm,
952 &feature_lpmx,627 &feature_lpmx,
953 &feature_ijmpcall,628 &feature_spm,
954 &feature_jmpcall,
955 &feature_sram,
956 &feature_addsubiw,629 &feature_addsubiw,
957 &feature_break,630 &feature_jmpcall,
958 &feature_lpm,631 &feature_lpm,
959 &feature_avr0,632 &feature_break,
633 &feature_sram,
634 &feature_ijmpcall,
960 &feature_movw,635 &feature_movw,
961 &feature_avr35,
962 },636 },
963};637};
964638
...@@ -966,13 +640,11 @@ pub const cpu_at94k = Cpu{...@@ -966,13 +640,11 @@ pub const cpu_at94k = Cpu{
966 .name = "at94k",640 .name = "at94k",
967 .llvm_name = "at94k",641 .llvm_name = "at94k",
968 .subfeatures = &[_]*const Feature {642 .subfeatures = &[_]*const Feature {
969 &feature_ijmpcall,
970 &feature_jmpcall,
971 &feature_sram,
972 &feature_addsubiw,643 &feature_addsubiw,
644 &feature_jmpcall,
973 &feature_lpm,645 &feature_lpm,
974 &feature_avr0,646 &feature_sram,
975 &feature_avr3,647 &feature_ijmpcall,
976 &feature_lpmx,648 &feature_lpmx,
977 &feature_movw,649 &feature_movw,
978 &feature_mul,650 &feature_mul,
...@@ -983,16 +655,14 @@ pub const cpu_ata5272 = Cpu{...@@ -983,16 +655,14 @@ pub const cpu_ata5272 = Cpu{
983 .name = "ata5272",655 .name = "ata5272",
984 .llvm_name = "ata5272",656 .llvm_name = "ata5272",
985 .subfeatures = &[_]*const Feature {657 .subfeatures = &[_]*const Feature {
986 &feature_spm,
987 &feature_lpmx,658 &feature_lpmx,
988 &feature_ijmpcall,659 &feature_spm,
989 &feature_sram,
990 &feature_addsubiw,660 &feature_addsubiw,
991 &feature_break,661 &feature_break,
992 &feature_lpm,662 &feature_lpm,
993 &feature_avr0,663 &feature_sram,
664 &feature_ijmpcall,
994 &feature_movw,665 &feature_movw,
995 &feature_avr25,
996 },666 },
997};667};
998668
...@@ -1000,17 +670,15 @@ pub const cpu_ata5505 = Cpu{...@@ -1000,17 +670,15 @@ pub const cpu_ata5505 = Cpu{
1000 .name = "ata5505",670 .name = "ata5505",
1001 .llvm_name = "ata5505",671 .llvm_name = "ata5505",
1002 .subfeatures = &[_]*const Feature {672 .subfeatures = &[_]*const Feature {
1003 &feature_spm,
1004 &feature_lpmx,673 &feature_lpmx,
1005 &feature_ijmpcall,674 &feature_spm,
1006 &feature_jmpcall,
1007 &feature_sram,
1008 &feature_addsubiw,675 &feature_addsubiw,
1009 &feature_break,676 &feature_jmpcall,
1010 &feature_lpm,677 &feature_lpm,
1011 &feature_avr0,678 &feature_break,
679 &feature_sram,
680 &feature_ijmpcall,
1012 &feature_movw,681 &feature_movw,
1013 &feature_avr35,
1014 },682 },
1015};683};
1016684
...@@ -1018,18 +686,16 @@ pub const cpu_ata5790 = Cpu{...@@ -1018,18 +686,16 @@ pub const cpu_ata5790 = Cpu{
1018 .name = "ata5790",686 .name = "ata5790",
1019 .llvm_name = "ata5790",687 .llvm_name = "ata5790",
1020 .subfeatures = &[_]*const Feature {688 .subfeatures = &[_]*const Feature {
1021 &feature_spm,
1022 &feature_lpmx,689 &feature_lpmx,
1023 &feature_ijmpcall,690 &feature_spm,
1024 &feature_jmpcall,
1025 &feature_sram,
1026 &feature_addsubiw,691 &feature_addsubiw,
1027 &feature_mul,692 &feature_jmpcall,
1028 &feature_break,
1029 &feature_lpm,693 &feature_lpm,
1030 &feature_avr0,694 &feature_break,
695 &feature_mul,
696 &feature_sram,
697 &feature_ijmpcall,
1031 &feature_movw,698 &feature_movw,
1032 &feature_avr5,
1033 },699 },
1034};700};
1035701
...@@ -1037,36 +703,32 @@ pub const cpu_ata5795 = Cpu{...@@ -1037,36 +703,32 @@ pub const cpu_ata5795 = Cpu{
1037 .name = "ata5795",703 .name = "ata5795",
1038 .llvm_name = "ata5795",704 .llvm_name = "ata5795",
1039 .subfeatures = &[_]*const Feature {705 .subfeatures = &[_]*const Feature {
1040 &feature_spm,
1041 &feature_lpmx,706 &feature_lpmx,
1042 &feature_ijmpcall,707 &feature_spm,
1043 &feature_jmpcall,
1044 &feature_sram,
1045 &feature_addsubiw,708 &feature_addsubiw,
1046 &feature_mul,709 &feature_jmpcall,
1047 &feature_break,
1048 &feature_lpm,710 &feature_lpm,
1049 &feature_avr0,711 &feature_break,
1050 &feature_movw,712 &feature_mul,
1051 &feature_avr5,713 &feature_sram,
1052 },714 &feature_ijmpcall,
1053};715 &feature_movw,
716 },
717};
1054718
1055pub const cpu_ata6285 = Cpu{719pub const cpu_ata6285 = Cpu{
1056 .name = "ata6285",720 .name = "ata6285",
1057 .llvm_name = "ata6285",721 .llvm_name = "ata6285",
1058 .subfeatures = &[_]*const Feature {722 .subfeatures = &[_]*const Feature {
1059 &feature_spm,
1060 &feature_lpmx,723 &feature_lpmx,
1061 &feature_ijmpcall,724 &feature_spm,
1062 &feature_sram,
1063 &feature_addsubiw,725 &feature_addsubiw,
1064 &feature_mul,
1065 &feature_break,726 &feature_break,
1066 &feature_lpm,727 &feature_lpm,
1067 &feature_avr0,728 &feature_mul,
729 &feature_sram,
730 &feature_ijmpcall,
1068 &feature_movw,731 &feature_movw,
1069 &feature_avr4,
1070 },732 },
1071};733};
1072734
...@@ -1074,17 +736,15 @@ pub const cpu_ata6286 = Cpu{...@@ -1074,17 +736,15 @@ pub const cpu_ata6286 = Cpu{
1074 .name = "ata6286",736 .name = "ata6286",
1075 .llvm_name = "ata6286",737 .llvm_name = "ata6286",
1076 .subfeatures = &[_]*const Feature {738 .subfeatures = &[_]*const Feature {
1077 &feature_spm,
1078 &feature_lpmx,739 &feature_lpmx,
1079 &feature_ijmpcall,740 &feature_spm,
1080 &feature_sram,
1081 &feature_addsubiw,741 &feature_addsubiw,
1082 &feature_mul,
1083 &feature_break,742 &feature_break,
1084 &feature_lpm,743 &feature_lpm,
1085 &feature_avr0,744 &feature_mul,
745 &feature_sram,
746 &feature_ijmpcall,
1086 &feature_movw,747 &feature_movw,
1087 &feature_avr4,
1088 },748 },
1089};749};
1090750
...@@ -1092,17 +752,15 @@ pub const cpu_ata6289 = Cpu{...@@ -1092,17 +752,15 @@ pub const cpu_ata6289 = Cpu{
1092 .name = "ata6289",752 .name = "ata6289",
1093 .llvm_name = "ata6289",753 .llvm_name = "ata6289",
1094 .subfeatures = &[_]*const Feature {754 .subfeatures = &[_]*const Feature {
1095 &feature_spm,
1096 &feature_lpmx,755 &feature_lpmx,
1097 &feature_ijmpcall,756 &feature_spm,
1098 &feature_sram,
1099 &feature_addsubiw,757 &feature_addsubiw,
1100 &feature_mul,
1101 &feature_break,758 &feature_break,
1102 &feature_lpm,759 &feature_lpm,
1103 &feature_avr0,760 &feature_mul,
761 &feature_sram,
762 &feature_ijmpcall,
1104 &feature_movw,763 &feature_movw,
1105 &feature_avr4,
1106 },764 },
1107};765};
1108766
...@@ -1110,14 +768,12 @@ pub const cpu_atmega103 = Cpu{...@@ -1110,14 +768,12 @@ pub const cpu_atmega103 = Cpu{
1110 .name = "atmega103",768 .name = "atmega103",
1111 .llvm_name = "atmega103",769 .llvm_name = "atmega103",
1112 .subfeatures = &[_]*const Feature {770 .subfeatures = &[_]*const Feature {
1113 &feature_ijmpcall,
1114 &feature_jmpcall,
1115 &feature_sram,
1116 &feature_addsubiw,771 &feature_addsubiw,
1117 &feature_elpm,772 &feature_jmpcall,
1118 &feature_lpm,773 &feature_lpm,
1119 &feature_avr0,774 &feature_elpm,
1120 &feature_avr31,775 &feature_sram,
776 &feature_ijmpcall,
1121 },777 },
1122};778};
1123779
...@@ -1125,20 +781,18 @@ pub const cpu_atmega128 = Cpu{...@@ -1125,20 +781,18 @@ pub const cpu_atmega128 = Cpu{
1125 .name = "atmega128",781 .name = "atmega128",
1126 .llvm_name = "atmega128",782 .llvm_name = "atmega128",
1127 .subfeatures = &[_]*const Feature {783 .subfeatures = &[_]*const Feature {
1128 &feature_spm,
1129 &feature_lpmx,784 &feature_lpmx,
1130 &feature_ijmpcall,785 &feature_spm,
1131 &feature_jmpcall,
1132 &feature_sram,
1133 &feature_addsubiw,786 &feature_addsubiw,
1134 &feature_elpm,787 &feature_jmpcall,
1135 &feature_mul,
1136 &feature_break,
1137 &feature_lpm,788 &feature_lpm,
789 &feature_break,
790 &feature_mul,
791 &feature_elpm,
1138 &feature_elpmx,792 &feature_elpmx,
1139 &feature_avr0,793 &feature_sram,
794 &feature_ijmpcall,
1140 &feature_movw,795 &feature_movw,
1141 &feature_avr51,
1142 },796 },
1143};797};
1144798
...@@ -1146,20 +800,18 @@ pub const cpu_atmega1280 = Cpu{...@@ -1146,20 +800,18 @@ pub const cpu_atmega1280 = Cpu{
1146 .name = "atmega1280",800 .name = "atmega1280",
1147 .llvm_name = "atmega1280",801 .llvm_name = "atmega1280",
1148 .subfeatures = &[_]*const Feature {802 .subfeatures = &[_]*const Feature {
1149 &feature_spm,
1150 &feature_lpmx,803 &feature_lpmx,
1151 &feature_ijmpcall,804 &feature_spm,
1152 &feature_jmpcall,
1153 &feature_sram,
1154 &feature_addsubiw,805 &feature_addsubiw,
1155 &feature_elpm,806 &feature_jmpcall,
1156 &feature_mul,
1157 &feature_break,
1158 &feature_lpm,807 &feature_lpm,
808 &feature_break,
809 &feature_mul,
810 &feature_elpm,
1159 &feature_elpmx,811 &feature_elpmx,
1160 &feature_avr0,812 &feature_sram,
813 &feature_ijmpcall,
1161 &feature_movw,814 &feature_movw,
1162 &feature_avr51,
1163 },815 },
1164};816};
1165817
...@@ -1167,20 +819,18 @@ pub const cpu_atmega1281 = Cpu{...@@ -1167,20 +819,18 @@ pub const cpu_atmega1281 = Cpu{
1167 .name = "atmega1281",819 .name = "atmega1281",
1168 .llvm_name = "atmega1281",820 .llvm_name = "atmega1281",
1169 .subfeatures = &[_]*const Feature {821 .subfeatures = &[_]*const Feature {
1170 &feature_spm,
1171 &feature_lpmx,822 &feature_lpmx,
1172 &feature_ijmpcall,823 &feature_spm,
1173 &feature_jmpcall,
1174 &feature_sram,
1175 &feature_addsubiw,824 &feature_addsubiw,
1176 &feature_elpm,825 &feature_jmpcall,
1177 &feature_mul,
1178 &feature_break,
1179 &feature_lpm,826 &feature_lpm,
827 &feature_break,
828 &feature_mul,
829 &feature_elpm,
1180 &feature_elpmx,830 &feature_elpmx,
1181 &feature_avr0,831 &feature_sram,
832 &feature_ijmpcall,
1182 &feature_movw,833 &feature_movw,
1183 &feature_avr51,
1184 },834 },
1185};835};
1186836
...@@ -1188,20 +838,18 @@ pub const cpu_atmega1284 = Cpu{...@@ -1188,20 +838,18 @@ pub const cpu_atmega1284 = Cpu{
1188 .name = "atmega1284",838 .name = "atmega1284",
1189 .llvm_name = "atmega1284",839 .llvm_name = "atmega1284",
1190 .subfeatures = &[_]*const Feature {840 .subfeatures = &[_]*const Feature {
1191 &feature_spm,
1192 &feature_lpmx,841 &feature_lpmx,
1193 &feature_ijmpcall,842 &feature_spm,
1194 &feature_jmpcall,
1195 &feature_sram,
1196 &feature_addsubiw,843 &feature_addsubiw,
1197 &feature_elpm,844 &feature_jmpcall,
1198 &feature_mul,
1199 &feature_break,
1200 &feature_lpm,845 &feature_lpm,
846 &feature_break,
847 &feature_mul,
848 &feature_elpm,
1201 &feature_elpmx,849 &feature_elpmx,
1202 &feature_avr0,850 &feature_sram,
851 &feature_ijmpcall,
1203 &feature_movw,852 &feature_movw,
1204 &feature_avr51,
1205 },853 },
1206};854};
1207855
...@@ -1209,20 +857,18 @@ pub const cpu_atmega1284p = Cpu{...@@ -1209,20 +857,18 @@ pub const cpu_atmega1284p = Cpu{
1209 .name = "atmega1284p",857 .name = "atmega1284p",
1210 .llvm_name = "atmega1284p",858 .llvm_name = "atmega1284p",
1211 .subfeatures = &[_]*const Feature {859 .subfeatures = &[_]*const Feature {
1212 &feature_spm,
1213 &feature_lpmx,860 &feature_lpmx,
1214 &feature_ijmpcall,861 &feature_spm,
1215 &feature_jmpcall,
1216 &feature_sram,
1217 &feature_addsubiw,862 &feature_addsubiw,
1218 &feature_elpm,863 &feature_jmpcall,
1219 &feature_mul,
1220 &feature_break,
1221 &feature_lpm,864 &feature_lpm,
865 &feature_break,
866 &feature_mul,
867 &feature_elpm,
1222 &feature_elpmx,868 &feature_elpmx,
1223 &feature_avr0,869 &feature_sram,
870 &feature_ijmpcall,
1224 &feature_movw,871 &feature_movw,
1225 &feature_avr51,
1226 },872 },
1227};873};
1228874
...@@ -1230,20 +876,18 @@ pub const cpu_atmega1284rfr2 = Cpu{...@@ -1230,20 +876,18 @@ pub const cpu_atmega1284rfr2 = Cpu{
1230 .name = "atmega1284rfr2",876 .name = "atmega1284rfr2",
1231 .llvm_name = "atmega1284rfr2",877 .llvm_name = "atmega1284rfr2",
1232 .subfeatures = &[_]*const Feature {878 .subfeatures = &[_]*const Feature {
1233 &feature_spm,
1234 &feature_lpmx,879 &feature_lpmx,
1235 &feature_ijmpcall,880 &feature_spm,
1236 &feature_jmpcall,
1237 &feature_sram,
1238 &feature_addsubiw,881 &feature_addsubiw,
1239 &feature_elpm,882 &feature_jmpcall,
1240 &feature_mul,
1241 &feature_break,
1242 &feature_lpm,883 &feature_lpm,
884 &feature_break,
885 &feature_mul,
886 &feature_elpm,
1243 &feature_elpmx,887 &feature_elpmx,
1244 &feature_avr0,888 &feature_sram,
889 &feature_ijmpcall,
1245 &feature_movw,890 &feature_movw,
1246 &feature_avr51,
1247 },891 },
1248};892};
1249893
...@@ -1251,20 +895,18 @@ pub const cpu_atmega128a = Cpu{...@@ -1251,20 +895,18 @@ pub const cpu_atmega128a = Cpu{
1251 .name = "atmega128a",895 .name = "atmega128a",
1252 .llvm_name = "atmega128a",896 .llvm_name = "atmega128a",
1253 .subfeatures = &[_]*const Feature {897 .subfeatures = &[_]*const Feature {
1254 &feature_spm,
1255 &feature_lpmx,898 &feature_lpmx,
1256 &feature_ijmpcall,899 &feature_spm,
1257 &feature_jmpcall,
1258 &feature_sram,
1259 &feature_addsubiw,900 &feature_addsubiw,
1260 &feature_elpm,901 &feature_jmpcall,
1261 &feature_mul,
1262 &feature_break,
1263 &feature_lpm,902 &feature_lpm,
903 &feature_break,
904 &feature_mul,
905 &feature_elpm,
1264 &feature_elpmx,906 &feature_elpmx,
1265 &feature_avr0,907 &feature_sram,
908 &feature_ijmpcall,
1266 &feature_movw,909 &feature_movw,
1267 &feature_avr51,
1268 },910 },
1269};911};
1270912
...@@ -1272,20 +914,18 @@ pub const cpu_atmega128rfa1 = Cpu{...@@ -1272,20 +914,18 @@ pub const cpu_atmega128rfa1 = Cpu{
1272 .name = "atmega128rfa1",914 .name = "atmega128rfa1",
1273 .llvm_name = "atmega128rfa1",915 .llvm_name = "atmega128rfa1",
1274 .subfeatures = &[_]*const Feature {916 .subfeatures = &[_]*const Feature {
1275 &feature_spm,
1276 &feature_lpmx,917 &feature_lpmx,
1277 &feature_ijmpcall,918 &feature_spm,
1278 &feature_jmpcall,
1279 &feature_sram,
1280 &feature_addsubiw,919 &feature_addsubiw,
1281 &feature_elpm,920 &feature_jmpcall,
1282 &feature_mul,
1283 &feature_break,
1284 &feature_lpm,921 &feature_lpm,
922 &feature_break,
923 &feature_mul,
924 &feature_elpm,
1285 &feature_elpmx,925 &feature_elpmx,
1286 &feature_avr0,926 &feature_sram,
927 &feature_ijmpcall,
1287 &feature_movw,928 &feature_movw,
1288 &feature_avr51,
1289 },929 },
1290};930};
1291931
...@@ -1293,20 +933,18 @@ pub const cpu_atmega128rfr2 = Cpu{...@@ -1293,20 +933,18 @@ pub const cpu_atmega128rfr2 = Cpu{
1293 .name = "atmega128rfr2",933 .name = "atmega128rfr2",
1294 .llvm_name = "atmega128rfr2",934 .llvm_name = "atmega128rfr2",
1295 .subfeatures = &[_]*const Feature {935 .subfeatures = &[_]*const Feature {
1296 &feature_spm,
1297 &feature_lpmx,936 &feature_lpmx,
1298 &feature_ijmpcall,937 &feature_spm,
1299 &feature_jmpcall,
1300 &feature_sram,
1301 &feature_addsubiw,938 &feature_addsubiw,
1302 &feature_elpm,939 &feature_jmpcall,
1303 &feature_mul,
1304 &feature_break,
1305 &feature_lpm,940 &feature_lpm,
941 &feature_break,
942 &feature_mul,
943 &feature_elpm,
1306 &feature_elpmx,944 &feature_elpmx,
1307 &feature_avr0,945 &feature_sram,
946 &feature_ijmpcall,
1308 &feature_movw,947 &feature_movw,
1309 &feature_avr51,
1310 },948 },
1311};949};
1312950
...@@ -1314,18 +952,16 @@ pub const cpu_atmega16 = Cpu{...@@ -1314,18 +952,16 @@ pub const cpu_atmega16 = Cpu{
1314 .name = "atmega16",952 .name = "atmega16",
1315 .llvm_name = "atmega16",953 .llvm_name = "atmega16",
1316 .subfeatures = &[_]*const Feature {954 .subfeatures = &[_]*const Feature {
1317 &feature_spm,
1318 &feature_lpmx,955 &feature_lpmx,
1319 &feature_ijmpcall,956 &feature_spm,
1320 &feature_jmpcall,
1321 &feature_sram,
1322 &feature_addsubiw,957 &feature_addsubiw,
1323 &feature_mul,958 &feature_jmpcall,
1324 &feature_break,
1325 &feature_lpm,959 &feature_lpm,
1326 &feature_avr0,960 &feature_break,
961 &feature_mul,
962 &feature_sram,
963 &feature_ijmpcall,
1327 &feature_movw,964 &feature_movw,
1328 &feature_avr5,
1329 },965 },
1330};966};
1331967
...@@ -1333,13 +969,11 @@ pub const cpu_atmega161 = Cpu{...@@ -1333,13 +969,11 @@ pub const cpu_atmega161 = Cpu{
1333 .name = "atmega161",969 .name = "atmega161",
1334 .llvm_name = "atmega161",970 .llvm_name = "atmega161",
1335 .subfeatures = &[_]*const Feature {971 .subfeatures = &[_]*const Feature {
1336 &feature_ijmpcall,
1337 &feature_jmpcall,
1338 &feature_sram,
1339 &feature_addsubiw,972 &feature_addsubiw,
973 &feature_jmpcall,
1340 &feature_lpm,974 &feature_lpm,
1341 &feature_avr0,975 &feature_sram,
1342 &feature_avr3,976 &feature_ijmpcall,
1343 &feature_lpmx,977 &feature_lpmx,
1344 &feature_movw,978 &feature_movw,
1345 &feature_mul,979 &feature_mul,
...@@ -1351,18 +985,16 @@ pub const cpu_atmega162 = Cpu{...@@ -1351,18 +985,16 @@ pub const cpu_atmega162 = Cpu{
1351 .name = "atmega162",985 .name = "atmega162",
1352 .llvm_name = "atmega162",986 .llvm_name = "atmega162",
1353 .subfeatures = &[_]*const Feature {987 .subfeatures = &[_]*const Feature {
1354 &feature_spm,
1355 &feature_lpmx,988 &feature_lpmx,
1356 &feature_ijmpcall,989 &feature_spm,
1357 &feature_jmpcall,
1358 &feature_sram,
1359 &feature_addsubiw,990 &feature_addsubiw,
1360 &feature_mul,991 &feature_jmpcall,
1361 &feature_break,
1362 &feature_lpm,992 &feature_lpm,
1363 &feature_avr0,993 &feature_break,
994 &feature_mul,
995 &feature_sram,
996 &feature_ijmpcall,
1364 &feature_movw,997 &feature_movw,
1365 &feature_avr5,
1366 },998 },
1367};999};
13681000
...@@ -1370,13 +1002,11 @@ pub const cpu_atmega163 = Cpu{...@@ -1370,13 +1002,11 @@ pub const cpu_atmega163 = Cpu{
1370 .name = "atmega163",1002 .name = "atmega163",
1371 .llvm_name = "atmega163",1003 .llvm_name = "atmega163",
1372 .subfeatures = &[_]*const Feature {1004 .subfeatures = &[_]*const Feature {
1373 &feature_ijmpcall,
1374 &feature_jmpcall,
1375 &feature_sram,
1376 &feature_addsubiw,1005 &feature_addsubiw,
1006 &feature_jmpcall,
1377 &feature_lpm,1007 &feature_lpm,
1378 &feature_avr0,1008 &feature_sram,
1379 &feature_avr3,1009 &feature_ijmpcall,
1380 &feature_lpmx,1010 &feature_lpmx,
1381 &feature_movw,1011 &feature_movw,
1382 &feature_mul,1012 &feature_mul,
...@@ -1388,18 +1018,16 @@ pub const cpu_atmega164a = Cpu{...@@ -1388,18 +1018,16 @@ pub const cpu_atmega164a = Cpu{
1388 .name = "atmega164a",1018 .name = "atmega164a",
1389 .llvm_name = "atmega164a",1019 .llvm_name = "atmega164a",
1390 .subfeatures = &[_]*const Feature {1020 .subfeatures = &[_]*const Feature {
1391 &feature_spm,
1392 &feature_lpmx,1021 &feature_lpmx,
1393 &feature_ijmpcall,1022 &feature_spm,
1394 &feature_jmpcall,
1395 &feature_sram,
1396 &feature_addsubiw,1023 &feature_addsubiw,
1397 &feature_mul,1024 &feature_jmpcall,
1398 &feature_break,
1399 &feature_lpm,1025 &feature_lpm,
1400 &feature_avr0,1026 &feature_break,
1027 &feature_mul,
1028 &feature_sram,
1029 &feature_ijmpcall,
1401 &feature_movw,1030 &feature_movw,
1402 &feature_avr5,
1403 },1031 },
1404};1032};
14051033
...@@ -1407,18 +1035,16 @@ pub const cpu_atmega164p = Cpu{...@@ -1407,18 +1035,16 @@ pub const cpu_atmega164p = Cpu{
1407 .name = "atmega164p",1035 .name = "atmega164p",
1408 .llvm_name = "atmega164p",1036 .llvm_name = "atmega164p",
1409 .subfeatures = &[_]*const Feature {1037 .subfeatures = &[_]*const Feature {
1410 &feature_spm,
1411 &feature_lpmx,1038 &feature_lpmx,
1412 &feature_ijmpcall,1039 &feature_spm,
1413 &feature_jmpcall,
1414 &feature_sram,
1415 &feature_addsubiw,1040 &feature_addsubiw,
1416 &feature_mul,1041 &feature_jmpcall,
1417 &feature_break,
1418 &feature_lpm,1042 &feature_lpm,
1419 &feature_avr0,1043 &feature_break,
1044 &feature_mul,
1045 &feature_sram,
1046 &feature_ijmpcall,
1420 &feature_movw,1047 &feature_movw,
1421 &feature_avr5,
1422 },1048 },
1423};1049};
14241050
...@@ -1426,18 +1052,16 @@ pub const cpu_atmega164pa = Cpu{...@@ -1426,18 +1052,16 @@ pub const cpu_atmega164pa = Cpu{
1426 .name = "atmega164pa",1052 .name = "atmega164pa",
1427 .llvm_name = "atmega164pa",1053 .llvm_name = "atmega164pa",
1428 .subfeatures = &[_]*const Feature {1054 .subfeatures = &[_]*const Feature {
1429 &feature_spm,
1430 &feature_lpmx,1055 &feature_lpmx,
1431 &feature_ijmpcall,1056 &feature_spm,
1432 &feature_jmpcall,
1433 &feature_sram,
1434 &feature_addsubiw,1057 &feature_addsubiw,
1435 &feature_mul,1058 &feature_jmpcall,
1436 &feature_break,
1437 &feature_lpm,1059 &feature_lpm,
1438 &feature_avr0,1060 &feature_break,
1061 &feature_mul,
1062 &feature_sram,
1063 &feature_ijmpcall,
1439 &feature_movw,1064 &feature_movw,
1440 &feature_avr5,
1441 },1065 },
1442};1066};
14431067
...@@ -1445,18 +1069,16 @@ pub const cpu_atmega165 = Cpu{...@@ -1445,18 +1069,16 @@ pub const cpu_atmega165 = Cpu{
1445 .name = "atmega165",1069 .name = "atmega165",
1446 .llvm_name = "atmega165",1070 .llvm_name = "atmega165",
1447 .subfeatures = &[_]*const Feature {1071 .subfeatures = &[_]*const Feature {
1448 &feature_spm,
1449 &feature_lpmx,1072 &feature_lpmx,
1450 &feature_ijmpcall,1073 &feature_spm,
1451 &feature_jmpcall,
1452 &feature_sram,
1453 &feature_addsubiw,1074 &feature_addsubiw,
1454 &feature_mul,1075 &feature_jmpcall,
1455 &feature_break,
1456 &feature_lpm,1076 &feature_lpm,
1457 &feature_avr0,1077 &feature_break,
1078 &feature_mul,
1079 &feature_sram,
1080 &feature_ijmpcall,
1458 &feature_movw,1081 &feature_movw,
1459 &feature_avr5,
1460 },1082 },
1461};1083};
14621084
...@@ -1464,18 +1086,16 @@ pub const cpu_atmega165a = Cpu{...@@ -1464,18 +1086,16 @@ pub const cpu_atmega165a = Cpu{
1464 .name = "atmega165a",1086 .name = "atmega165a",
1465 .llvm_name = "atmega165a",1087 .llvm_name = "atmega165a",
1466 .subfeatures = &[_]*const Feature {1088 .subfeatures = &[_]*const Feature {
1467 &feature_spm,
1468 &feature_lpmx,1089 &feature_lpmx,
1469 &feature_ijmpcall,1090 &feature_spm,
1091 &feature_addsubiw,
1470 &feature_jmpcall,1092 &feature_jmpcall,
1093 &feature_lpm,
1094 &feature_break,
1095 &feature_mul,
1471 &feature_sram,1096 &feature_sram,
1472 &feature_addsubiw,1097 &feature_ijmpcall,
1473 &feature_mul,
1474 &feature_break,
1475 &feature_lpm,
1476 &feature_avr0,
1477 &feature_movw,1098 &feature_movw,
1478 &feature_avr5,
1479 },1099 },
1480};1100};
14811101
...@@ -1483,18 +1103,16 @@ pub const cpu_atmega165p = Cpu{...@@ -1483,18 +1103,16 @@ pub const cpu_atmega165p = Cpu{
1483 .name = "atmega165p",1103 .name = "atmega165p",
1484 .llvm_name = "atmega165p",1104 .llvm_name = "atmega165p",
1485 .subfeatures = &[_]*const Feature {1105 .subfeatures = &[_]*const Feature {
1486 &feature_spm,
1487 &feature_lpmx,1106 &feature_lpmx,
1488 &feature_ijmpcall,1107 &feature_spm,
1489 &feature_jmpcall,
1490 &feature_sram,
1491 &feature_addsubiw,1108 &feature_addsubiw,
1492 &feature_mul,1109 &feature_jmpcall,
1493 &feature_break,
1494 &feature_lpm,1110 &feature_lpm,
1495 &feature_avr0,1111 &feature_break,
1112 &feature_mul,
1113 &feature_sram,
1114 &feature_ijmpcall,
1496 &feature_movw,1115 &feature_movw,
1497 &feature_avr5,
1498 },1116 },
1499};1117};
15001118
...@@ -1502,18 +1120,16 @@ pub const cpu_atmega165pa = Cpu{...@@ -1502,18 +1120,16 @@ pub const cpu_atmega165pa = Cpu{
1502 .name = "atmega165pa",1120 .name = "atmega165pa",
1503 .llvm_name = "atmega165pa",1121 .llvm_name = "atmega165pa",
1504 .subfeatures = &[_]*const Feature {1122 .subfeatures = &[_]*const Feature {
1505 &feature_spm,
1506 &feature_lpmx,1123 &feature_lpmx,
1507 &feature_ijmpcall,1124 &feature_spm,
1508 &feature_jmpcall,
1509 &feature_sram,
1510 &feature_addsubiw,1125 &feature_addsubiw,
1511 &feature_mul,1126 &feature_jmpcall,
1512 &feature_break,
1513 &feature_lpm,1127 &feature_lpm,
1514 &feature_avr0,1128 &feature_break,
1129 &feature_mul,
1130 &feature_sram,
1131 &feature_ijmpcall,
1515 &feature_movw,1132 &feature_movw,
1516 &feature_avr5,
1517 },1133 },
1518};1134};
15191135
...@@ -1521,18 +1137,16 @@ pub const cpu_atmega168 = Cpu{...@@ -1521,18 +1137,16 @@ pub const cpu_atmega168 = Cpu{
1521 .name = "atmega168",1137 .name = "atmega168",
1522 .llvm_name = "atmega168",1138 .llvm_name = "atmega168",
1523 .subfeatures = &[_]*const Feature {1139 .subfeatures = &[_]*const Feature {
1524 &feature_spm,
1525 &feature_lpmx,1140 &feature_lpmx,
1526 &feature_ijmpcall,1141 &feature_spm,
1527 &feature_jmpcall,
1528 &feature_sram,
1529 &feature_addsubiw,1142 &feature_addsubiw,
1530 &feature_mul,1143 &feature_jmpcall,
1531 &feature_break,
1532 &feature_lpm,1144 &feature_lpm,
1533 &feature_avr0,1145 &feature_break,
1146 &feature_mul,
1147 &feature_sram,
1148 &feature_ijmpcall,
1534 &feature_movw,1149 &feature_movw,
1535 &feature_avr5,
1536 },1150 },
1537};1151};
15381152
...@@ -1540,18 +1154,16 @@ pub const cpu_atmega168a = Cpu{...@@ -1540,18 +1154,16 @@ pub const cpu_atmega168a = Cpu{
1540 .name = "atmega168a",1154 .name = "atmega168a",
1541 .llvm_name = "atmega168a",1155 .llvm_name = "atmega168a",
1542 .subfeatures = &[_]*const Feature {1156 .subfeatures = &[_]*const Feature {
1543 &feature_spm,
1544 &feature_lpmx,1157 &feature_lpmx,
1545 &feature_ijmpcall,1158 &feature_spm,
1546 &feature_jmpcall,
1547 &feature_sram,
1548 &feature_addsubiw,1159 &feature_addsubiw,
1549 &feature_mul,1160 &feature_jmpcall,
1550 &feature_break,
1551 &feature_lpm,1161 &feature_lpm,
1552 &feature_avr0,1162 &feature_break,
1163 &feature_mul,
1164 &feature_sram,
1165 &feature_ijmpcall,
1553 &feature_movw,1166 &feature_movw,
1554 &feature_avr5,
1555 },1167 },
1556};1168};
15571169
...@@ -1559,18 +1171,16 @@ pub const cpu_atmega168p = Cpu{...@@ -1559,18 +1171,16 @@ pub const cpu_atmega168p = Cpu{
1559 .name = "atmega168p",1171 .name = "atmega168p",
1560 .llvm_name = "atmega168p",1172 .llvm_name = "atmega168p",
1561 .subfeatures = &[_]*const Feature {1173 .subfeatures = &[_]*const Feature {
1562 &feature_spm,
1563 &feature_lpmx,1174 &feature_lpmx,
1564 &feature_ijmpcall,1175 &feature_spm,
1565 &feature_jmpcall,
1566 &feature_sram,
1567 &feature_addsubiw,1176 &feature_addsubiw,
1568 &feature_mul,1177 &feature_jmpcall,
1569 &feature_break,
1570 &feature_lpm,1178 &feature_lpm,
1571 &feature_avr0,1179 &feature_break,
1180 &feature_mul,
1181 &feature_sram,
1182 &feature_ijmpcall,
1572 &feature_movw,1183 &feature_movw,
1573 &feature_avr5,
1574 },1184 },
1575};1185};
15761186
...@@ -1578,18 +1188,16 @@ pub const cpu_atmega168pa = Cpu{...@@ -1578,18 +1188,16 @@ pub const cpu_atmega168pa = Cpu{
1578 .name = "atmega168pa",1188 .name = "atmega168pa",
1579 .llvm_name = "atmega168pa",1189 .llvm_name = "atmega168pa",
1580 .subfeatures = &[_]*const Feature {1190 .subfeatures = &[_]*const Feature {
1581 &feature_spm,
1582 &feature_lpmx,1191 &feature_lpmx,
1583 &feature_ijmpcall,1192 &feature_spm,
1584 &feature_jmpcall,
1585 &feature_sram,
1586 &feature_addsubiw,1193 &feature_addsubiw,
1587 &feature_mul,1194 &feature_jmpcall,
1588 &feature_break,
1589 &feature_lpm,1195 &feature_lpm,
1590 &feature_avr0,1196 &feature_break,
1197 &feature_mul,
1198 &feature_sram,
1199 &feature_ijmpcall,
1591 &feature_movw,1200 &feature_movw,
1592 &feature_avr5,
1593 },1201 },
1594};1202};
15951203
...@@ -1597,18 +1205,16 @@ pub const cpu_atmega169 = Cpu{...@@ -1597,18 +1205,16 @@ pub const cpu_atmega169 = Cpu{
1597 .name = "atmega169",1205 .name = "atmega169",
1598 .llvm_name = "atmega169",1206 .llvm_name = "atmega169",
1599 .subfeatures = &[_]*const Feature {1207 .subfeatures = &[_]*const Feature {
1600 &feature_spm,
1601 &feature_lpmx,1208 &feature_lpmx,
1602 &feature_ijmpcall,1209 &feature_spm,
1603 &feature_jmpcall,
1604 &feature_sram,
1605 &feature_addsubiw,1210 &feature_addsubiw,
1606 &feature_mul,1211 &feature_jmpcall,
1607 &feature_break,
1608 &feature_lpm,1212 &feature_lpm,
1609 &feature_avr0,1213 &feature_break,
1214 &feature_mul,
1215 &feature_sram,
1216 &feature_ijmpcall,
1610 &feature_movw,1217 &feature_movw,
1611 &feature_avr5,
1612 },1218 },
1613};1219};
16141220
...@@ -1616,18 +1222,16 @@ pub const cpu_atmega169a = Cpu{...@@ -1616,18 +1222,16 @@ pub const cpu_atmega169a = Cpu{
1616 .name = "atmega169a",1222 .name = "atmega169a",
1617 .llvm_name = "atmega169a",1223 .llvm_name = "atmega169a",
1618 .subfeatures = &[_]*const Feature {1224 .subfeatures = &[_]*const Feature {
1619 &feature_spm,
1620 &feature_lpmx,1225 &feature_lpmx,
1621 &feature_ijmpcall,1226 &feature_spm,
1622 &feature_jmpcall,
1623 &feature_sram,
1624 &feature_addsubiw,1227 &feature_addsubiw,
1625 &feature_mul,1228 &feature_jmpcall,
1626 &feature_break,
1627 &feature_lpm,1229 &feature_lpm,
1628 &feature_avr0,1230 &feature_break,
1231 &feature_mul,
1232 &feature_sram,
1233 &feature_ijmpcall,
1629 &feature_movw,1234 &feature_movw,
1630 &feature_avr5,
1631 },1235 },
1632};1236};
16331237
...@@ -1635,18 +1239,16 @@ pub const cpu_atmega169p = Cpu{...@@ -1635,18 +1239,16 @@ pub const cpu_atmega169p = Cpu{
1635 .name = "atmega169p",1239 .name = "atmega169p",
1636 .llvm_name = "atmega169p",1240 .llvm_name = "atmega169p",
1637 .subfeatures = &[_]*const Feature {1241 .subfeatures = &[_]*const Feature {
1638 &feature_spm,
1639 &feature_lpmx,1242 &feature_lpmx,
1640 &feature_ijmpcall,1243 &feature_spm,
1641 &feature_jmpcall,
1642 &feature_sram,
1643 &feature_addsubiw,1244 &feature_addsubiw,
1644 &feature_mul,1245 &feature_jmpcall,
1645 &feature_break,
1646 &feature_lpm,1246 &feature_lpm,
1647 &feature_avr0,1247 &feature_break,
1248 &feature_mul,
1249 &feature_sram,
1250 &feature_ijmpcall,
1648 &feature_movw,1251 &feature_movw,
1649 &feature_avr5,
1650 },1252 },
1651};1253};
16521254
...@@ -1654,18 +1256,16 @@ pub const cpu_atmega169pa = Cpu{...@@ -1654,18 +1256,16 @@ pub const cpu_atmega169pa = Cpu{
1654 .name = "atmega169pa",1256 .name = "atmega169pa",
1655 .llvm_name = "atmega169pa",1257 .llvm_name = "atmega169pa",
1656 .subfeatures = &[_]*const Feature {1258 .subfeatures = &[_]*const Feature {
1657 &feature_spm,
1658 &feature_lpmx,1259 &feature_lpmx,
1659 &feature_ijmpcall,1260 &feature_spm,
1660 &feature_jmpcall,
1661 &feature_sram,
1662 &feature_addsubiw,1261 &feature_addsubiw,
1663 &feature_mul,1262 &feature_jmpcall,
1664 &feature_break,
1665 &feature_lpm,1263 &feature_lpm,
1666 &feature_avr0,1264 &feature_break,
1265 &feature_mul,
1266 &feature_sram,
1267 &feature_ijmpcall,
1667 &feature_movw,1268 &feature_movw,
1668 &feature_avr5,
1669 },1269 },
1670};1270};
16711271
...@@ -1673,18 +1273,16 @@ pub const cpu_atmega16a = Cpu{...@@ -1673,18 +1273,16 @@ pub const cpu_atmega16a = Cpu{
1673 .name = "atmega16a",1273 .name = "atmega16a",
1674 .llvm_name = "atmega16a",1274 .llvm_name = "atmega16a",
1675 .subfeatures = &[_]*const Feature {1275 .subfeatures = &[_]*const Feature {
1676 &feature_spm,
1677 &feature_lpmx,1276 &feature_lpmx,
1678 &feature_ijmpcall,1277 &feature_spm,
1679 &feature_jmpcall,
1680 &feature_sram,
1681 &feature_addsubiw,1278 &feature_addsubiw,
1682 &feature_mul,1279 &feature_jmpcall,
1683 &feature_break,
1684 &feature_lpm,1280 &feature_lpm,
1685 &feature_avr0,1281 &feature_break,
1282 &feature_mul,
1283 &feature_sram,
1284 &feature_ijmpcall,
1686 &feature_movw,1285 &feature_movw,
1687 &feature_avr5,
1688 },1286 },
1689};1287};
16901288
...@@ -1692,18 +1290,16 @@ pub const cpu_atmega16hva = Cpu{...@@ -1692,18 +1290,16 @@ pub const cpu_atmega16hva = Cpu{
1692 .name = "atmega16hva",1290 .name = "atmega16hva",
1693 .llvm_name = "atmega16hva",1291 .llvm_name = "atmega16hva",
1694 .subfeatures = &[_]*const Feature {1292 .subfeatures = &[_]*const Feature {
1695 &feature_spm,
1696 &feature_lpmx,1293 &feature_lpmx,
1697 &feature_ijmpcall,1294 &feature_spm,
1698 &feature_jmpcall,
1699 &feature_sram,
1700 &feature_addsubiw,1295 &feature_addsubiw,
1701 &feature_mul,1296 &feature_jmpcall,
1702 &feature_break,
1703 &feature_lpm,1297 &feature_lpm,
1704 &feature_avr0,1298 &feature_break,
1299 &feature_mul,
1300 &feature_sram,
1301 &feature_ijmpcall,
1705 &feature_movw,1302 &feature_movw,
1706 &feature_avr5,
1707 },1303 },
1708};1304};
17091305
...@@ -1711,18 +1307,16 @@ pub const cpu_atmega16hva2 = Cpu{...@@ -1711,18 +1307,16 @@ pub const cpu_atmega16hva2 = Cpu{
1711 .name = "atmega16hva2",1307 .name = "atmega16hva2",
1712 .llvm_name = "atmega16hva2",1308 .llvm_name = "atmega16hva2",
1713 .subfeatures = &[_]*const Feature {1309 .subfeatures = &[_]*const Feature {
1714 &feature_spm,
1715 &feature_lpmx,1310 &feature_lpmx,
1716 &feature_ijmpcall,1311 &feature_spm,
1717 &feature_jmpcall,
1718 &feature_sram,
1719 &feature_addsubiw,1312 &feature_addsubiw,
1720 &feature_mul,1313 &feature_jmpcall,
1721 &feature_break,
1722 &feature_lpm,1314 &feature_lpm,
1723 &feature_avr0,1315 &feature_break,
1316 &feature_mul,
1317 &feature_sram,
1318 &feature_ijmpcall,
1724 &feature_movw,1319 &feature_movw,
1725 &feature_avr5,
1726 },1320 },
1727};1321};
17281322
...@@ -1730,18 +1324,16 @@ pub const cpu_atmega16hvb = Cpu{...@@ -1730,18 +1324,16 @@ pub const cpu_atmega16hvb = Cpu{
1730 .name = "atmega16hvb",1324 .name = "atmega16hvb",
1731 .llvm_name = "atmega16hvb",1325 .llvm_name = "atmega16hvb",
1732 .subfeatures = &[_]*const Feature {1326 .subfeatures = &[_]*const Feature {
1733 &feature_spm,
1734 &feature_lpmx,1327 &feature_lpmx,
1735 &feature_ijmpcall,1328 &feature_spm,
1736 &feature_jmpcall,
1737 &feature_sram,
1738 &feature_addsubiw,1329 &feature_addsubiw,
1739 &feature_mul,1330 &feature_jmpcall,
1740 &feature_break,
1741 &feature_lpm,1331 &feature_lpm,
1742 &feature_avr0,1332 &feature_break,
1333 &feature_mul,
1334 &feature_sram,
1335 &feature_ijmpcall,
1743 &feature_movw,1336 &feature_movw,
1744 &feature_avr5,
1745 },1337 },
1746};1338};
17471339
...@@ -1749,18 +1341,16 @@ pub const cpu_atmega16hvbrevb = Cpu{...@@ -1749,18 +1341,16 @@ pub const cpu_atmega16hvbrevb = Cpu{
1749 .name = "atmega16hvbrevb",1341 .name = "atmega16hvbrevb",
1750 .llvm_name = "atmega16hvbrevb",1342 .llvm_name = "atmega16hvbrevb",
1751 .subfeatures = &[_]*const Feature {1343 .subfeatures = &[_]*const Feature {
1752 &feature_spm,
1753 &feature_lpmx,1344 &feature_lpmx,
1754 &feature_ijmpcall,1345 &feature_spm,
1755 &feature_jmpcall,
1756 &feature_sram,
1757 &feature_addsubiw,1346 &feature_addsubiw,
1758 &feature_mul,1347 &feature_jmpcall,
1759 &feature_break,
1760 &feature_lpm,1348 &feature_lpm,
1761 &feature_avr0,1349 &feature_break,
1350 &feature_mul,
1351 &feature_sram,
1352 &feature_ijmpcall,
1762 &feature_movw,1353 &feature_movw,
1763 &feature_avr5,
1764 },1354 },
1765};1355};
17661356
...@@ -1768,18 +1358,16 @@ pub const cpu_atmega16m1 = Cpu{...@@ -1768,18 +1358,16 @@ pub const cpu_atmega16m1 = Cpu{
1768 .name = "atmega16m1",1358 .name = "atmega16m1",
1769 .llvm_name = "atmega16m1",1359 .llvm_name = "atmega16m1",
1770 .subfeatures = &[_]*const Feature {1360 .subfeatures = &[_]*const Feature {
1771 &feature_spm,
1772 &feature_lpmx,1361 &feature_lpmx,
1773 &feature_ijmpcall,1362 &feature_spm,
1774 &feature_jmpcall,
1775 &feature_sram,
1776 &feature_addsubiw,1363 &feature_addsubiw,
1777 &feature_mul,1364 &feature_jmpcall,
1778 &feature_break,
1779 &feature_lpm,1365 &feature_lpm,
1780 &feature_avr0,1366 &feature_break,
1367 &feature_mul,
1368 &feature_sram,
1369 &feature_ijmpcall,
1781 &feature_movw,1370 &feature_movw,
1782 &feature_avr5,
1783 },1371 },
1784};1372};
17851373
...@@ -1787,17 +1375,15 @@ pub const cpu_atmega16u2 = Cpu{...@@ -1787,17 +1375,15 @@ pub const cpu_atmega16u2 = Cpu{
1787 .name = "atmega16u2",1375 .name = "atmega16u2",
1788 .llvm_name = "atmega16u2",1376 .llvm_name = "atmega16u2",
1789 .subfeatures = &[_]*const Feature {1377 .subfeatures = &[_]*const Feature {
1790 &feature_spm,
1791 &feature_lpmx,1378 &feature_lpmx,
1792 &feature_ijmpcall,1379 &feature_spm,
1793 &feature_jmpcall,
1794 &feature_sram,
1795 &feature_addsubiw,1380 &feature_addsubiw,
1796 &feature_break,1381 &feature_jmpcall,
1797 &feature_lpm,1382 &feature_lpm,
1798 &feature_avr0,1383 &feature_break,
1384 &feature_sram,
1385 &feature_ijmpcall,
1799 &feature_movw,1386 &feature_movw,
1800 &feature_avr35,
1801 },1387 },
1802};1388};
18031389
...@@ -1805,18 +1391,16 @@ pub const cpu_atmega16u4 = Cpu{...@@ -1805,18 +1391,16 @@ pub const cpu_atmega16u4 = Cpu{
1805 .name = "atmega16u4",1391 .name = "atmega16u4",
1806 .llvm_name = "atmega16u4",1392 .llvm_name = "atmega16u4",
1807 .subfeatures = &[_]*const Feature {1393 .subfeatures = &[_]*const Feature {
1808 &feature_spm,
1809 &feature_lpmx,1394 &feature_lpmx,
1810 &feature_ijmpcall,1395 &feature_spm,
1811 &feature_jmpcall,
1812 &feature_sram,
1813 &feature_addsubiw,1396 &feature_addsubiw,
1814 &feature_mul,1397 &feature_jmpcall,
1815 &feature_break,
1816 &feature_lpm,1398 &feature_lpm,
1817 &feature_avr0,1399 &feature_break,
1400 &feature_mul,
1401 &feature_sram,
1402 &feature_ijmpcall,
1818 &feature_movw,1403 &feature_movw,
1819 &feature_avr5,
1820 },1404 },
1821};1405};
18221406
...@@ -1824,20 +1408,18 @@ pub const cpu_atmega2560 = Cpu{...@@ -1824,20 +1408,18 @@ pub const cpu_atmega2560 = Cpu{
1824 .name = "atmega2560",1408 .name = "atmega2560",
1825 .llvm_name = "atmega2560",1409 .llvm_name = "atmega2560",
1826 .subfeatures = &[_]*const Feature {1410 .subfeatures = &[_]*const Feature {
1827 &feature_spm,
1828 &feature_lpmx,1411 &feature_lpmx,
1829 &feature_ijmpcall,1412 &feature_spm,
1830 &feature_jmpcall,
1831 &feature_sram,
1832 &feature_addsubiw,1413 &feature_addsubiw,
1833 &feature_elpm,1414 &feature_jmpcall,
1834 &feature_mul,
1835 &feature_break,
1836 &feature_lpm,1415 &feature_lpm,
1416 &feature_break,
1417 &feature_mul,
1418 &feature_elpm,
1837 &feature_elpmx,1419 &feature_elpmx,
1838 &feature_avr0,1420 &feature_sram,
1421 &feature_ijmpcall,
1839 &feature_movw,1422 &feature_movw,
1840 &feature_avr6,
1841 },1423 },
1842};1424};
18431425
...@@ -1845,20 +1427,18 @@ pub const cpu_atmega2561 = Cpu{...@@ -1845,20 +1427,18 @@ pub const cpu_atmega2561 = Cpu{
1845 .name = "atmega2561",1427 .name = "atmega2561",
1846 .llvm_name = "atmega2561",1428 .llvm_name = "atmega2561",
1847 .subfeatures = &[_]*const Feature {1429 .subfeatures = &[_]*const Feature {
1848 &feature_spm,
1849 &feature_lpmx,1430 &feature_lpmx,
1850 &feature_ijmpcall,1431 &feature_spm,
1851 &feature_jmpcall,
1852 &feature_sram,
1853 &feature_addsubiw,1432 &feature_addsubiw,
1854 &feature_elpm,1433 &feature_jmpcall,
1855 &feature_mul,
1856 &feature_break,
1857 &feature_lpm,1434 &feature_lpm,
1435 &feature_break,
1436 &feature_mul,
1437 &feature_elpm,
1858 &feature_elpmx,1438 &feature_elpmx,
1859 &feature_avr0,1439 &feature_sram,
1440 &feature_ijmpcall,
1860 &feature_movw,1441 &feature_movw,
1861 &feature_avr6,
1862 },1442 },
1863};1443};
18641444
...@@ -1866,20 +1446,18 @@ pub const cpu_atmega2564rfr2 = Cpu{...@@ -1866,20 +1446,18 @@ pub const cpu_atmega2564rfr2 = Cpu{
1866 .name = "atmega2564rfr2",1446 .name = "atmega2564rfr2",
1867 .llvm_name = "atmega2564rfr2",1447 .llvm_name = "atmega2564rfr2",
1868 .subfeatures = &[_]*const Feature {1448 .subfeatures = &[_]*const Feature {
1869 &feature_spm,
1870 &feature_lpmx,1449 &feature_lpmx,
1871 &feature_ijmpcall,1450 &feature_spm,
1872 &feature_jmpcall,
1873 &feature_sram,
1874 &feature_addsubiw,1451 &feature_addsubiw,
1875 &feature_elpm,1452 &feature_jmpcall,
1876 &feature_mul,
1877 &feature_break,
1878 &feature_lpm,1453 &feature_lpm,
1454 &feature_break,
1455 &feature_mul,
1456 &feature_elpm,
1879 &feature_elpmx,1457 &feature_elpmx,
1880 &feature_avr0,1458 &feature_sram,
1459 &feature_ijmpcall,
1881 &feature_movw,1460 &feature_movw,
1882 &feature_avr6,
1883 },1461 },
1884};1462};
18851463
...@@ -1887,20 +1465,18 @@ pub const cpu_atmega256rfr2 = Cpu{...@@ -1887,20 +1465,18 @@ pub const cpu_atmega256rfr2 = Cpu{
1887 .name = "atmega256rfr2",1465 .name = "atmega256rfr2",
1888 .llvm_name = "atmega256rfr2",1466 .llvm_name = "atmega256rfr2",
1889 .subfeatures = &[_]*const Feature {1467 .subfeatures = &[_]*const Feature {
1890 &feature_spm,
1891 &feature_lpmx,1468 &feature_lpmx,
1892 &feature_ijmpcall,1469 &feature_spm,
1893 &feature_jmpcall,
1894 &feature_sram,
1895 &feature_addsubiw,1470 &feature_addsubiw,
1896 &feature_elpm,1471 &feature_jmpcall,
1897 &feature_mul,
1898 &feature_break,
1899 &feature_lpm,1472 &feature_lpm,
1473 &feature_break,
1474 &feature_mul,
1475 &feature_elpm,
1900 &feature_elpmx,1476 &feature_elpmx,
1901 &feature_avr0,1477 &feature_sram,
1478 &feature_ijmpcall,
1902 &feature_movw,1479 &feature_movw,
1903 &feature_avr6,
1904 },1480 },
1905};1481};
19061482
...@@ -1908,18 +1484,16 @@ pub const cpu_atmega32 = Cpu{...@@ -1908,18 +1484,16 @@ pub const cpu_atmega32 = Cpu{
1908 .name = "atmega32",1484 .name = "atmega32",
1909 .llvm_name = "atmega32",1485 .llvm_name = "atmega32",
1910 .subfeatures = &[_]*const Feature {1486 .subfeatures = &[_]*const Feature {
1911 &feature_spm,
1912 &feature_lpmx,1487 &feature_lpmx,
1913 &feature_ijmpcall,1488 &feature_spm,
1914 &feature_jmpcall,
1915 &feature_sram,
1916 &feature_addsubiw,1489 &feature_addsubiw,
1917 &feature_mul,1490 &feature_jmpcall,
1918 &feature_break,
1919 &feature_lpm,1491 &feature_lpm,
1920 &feature_avr0,1492 &feature_break,
1493 &feature_mul,
1494 &feature_sram,
1495 &feature_ijmpcall,
1921 &feature_movw,1496 &feature_movw,
1922 &feature_avr5,
1923 },1497 },
1924};1498};
19251499
...@@ -1927,18 +1501,16 @@ pub const cpu_atmega323 = Cpu{...@@ -1927,18 +1501,16 @@ pub const cpu_atmega323 = Cpu{
1927 .name = "atmega323",1501 .name = "atmega323",
1928 .llvm_name = "atmega323",1502 .llvm_name = "atmega323",
1929 .subfeatures = &[_]*const Feature {1503 .subfeatures = &[_]*const Feature {
1930 &feature_spm,
1931 &feature_lpmx,1504 &feature_lpmx,
1932 &feature_ijmpcall,1505 &feature_spm,
1933 &feature_jmpcall,
1934 &feature_sram,
1935 &feature_addsubiw,1506 &feature_addsubiw,
1936 &feature_mul,1507 &feature_jmpcall,
1937 &feature_break,
1938 &feature_lpm,1508 &feature_lpm,
1939 &feature_avr0,1509 &feature_break,
1510 &feature_mul,
1511 &feature_sram,
1512 &feature_ijmpcall,
1940 &feature_movw,1513 &feature_movw,
1941 &feature_avr5,
1942 },1514 },
1943};1515};
19441516
...@@ -1946,18 +1518,16 @@ pub const cpu_atmega324a = Cpu{...@@ -1946,18 +1518,16 @@ pub const cpu_atmega324a = Cpu{
1946 .name = "atmega324a",1518 .name = "atmega324a",
1947 .llvm_name = "atmega324a",1519 .llvm_name = "atmega324a",
1948 .subfeatures = &[_]*const Feature {1520 .subfeatures = &[_]*const Feature {
1949 &feature_spm,
1950 &feature_lpmx,1521 &feature_lpmx,
1951 &feature_ijmpcall,1522 &feature_spm,
1952 &feature_jmpcall,
1953 &feature_sram,
1954 &feature_addsubiw,1523 &feature_addsubiw,
1955 &feature_mul,1524 &feature_jmpcall,
1956 &feature_break,
1957 &feature_lpm,1525 &feature_lpm,
1958 &feature_avr0,1526 &feature_break,
1527 &feature_mul,
1528 &feature_sram,
1529 &feature_ijmpcall,
1959 &feature_movw,1530 &feature_movw,
1960 &feature_avr5,
1961 },1531 },
1962};1532};
19631533
...@@ -1965,18 +1535,16 @@ pub const cpu_atmega324p = Cpu{...@@ -1965,18 +1535,16 @@ pub const cpu_atmega324p = Cpu{
1965 .name = "atmega324p",1535 .name = "atmega324p",
1966 .llvm_name = "atmega324p",1536 .llvm_name = "atmega324p",
1967 .subfeatures = &[_]*const Feature {1537 .subfeatures = &[_]*const Feature {
1968 &feature_spm,
1969 &feature_lpmx,1538 &feature_lpmx,
1970 &feature_ijmpcall,1539 &feature_spm,
1971 &feature_jmpcall,
1972 &feature_sram,
1973 &feature_addsubiw,1540 &feature_addsubiw,
1974 &feature_mul,1541 &feature_jmpcall,
1975 &feature_break,
1976 &feature_lpm,1542 &feature_lpm,
1977 &feature_avr0,1543 &feature_break,
1544 &feature_mul,
1545 &feature_sram,
1546 &feature_ijmpcall,
1978 &feature_movw,1547 &feature_movw,
1979 &feature_avr5,
1980 },1548 },
1981};1549};
19821550
...@@ -1984,18 +1552,16 @@ pub const cpu_atmega324pa = Cpu{...@@ -1984,18 +1552,16 @@ pub const cpu_atmega324pa = Cpu{
1984 .name = "atmega324pa",1552 .name = "atmega324pa",
1985 .llvm_name = "atmega324pa",1553 .llvm_name = "atmega324pa",
1986 .subfeatures = &[_]*const Feature {1554 .subfeatures = &[_]*const Feature {
1987 &feature_spm,
1988 &feature_lpmx,1555 &feature_lpmx,
1989 &feature_ijmpcall,1556 &feature_spm,
1990 &feature_jmpcall,
1991 &feature_sram,
1992 &feature_addsubiw,1557 &feature_addsubiw,
1993 &feature_mul,1558 &feature_jmpcall,
1994 &feature_break,
1995 &feature_lpm,1559 &feature_lpm,
1996 &feature_avr0,1560 &feature_break,
1561 &feature_mul,
1562 &feature_sram,
1563 &feature_ijmpcall,
1997 &feature_movw,1564 &feature_movw,
1998 &feature_avr5,
1999 },1565 },
2000};1566};
20011567
...@@ -2003,18 +1569,16 @@ pub const cpu_atmega325 = Cpu{...@@ -2003,18 +1569,16 @@ pub const cpu_atmega325 = Cpu{
2003 .name = "atmega325",1569 .name = "atmega325",
2004 .llvm_name = "atmega325",1570 .llvm_name = "atmega325",
2005 .subfeatures = &[_]*const Feature {1571 .subfeatures = &[_]*const Feature {
2006 &feature_spm,
2007 &feature_lpmx,1572 &feature_lpmx,
2008 &feature_ijmpcall,1573 &feature_spm,
2009 &feature_jmpcall,
2010 &feature_sram,
2011 &feature_addsubiw,1574 &feature_addsubiw,
2012 &feature_mul,1575 &feature_jmpcall,
2013 &feature_break,
2014 &feature_lpm,1576 &feature_lpm,
2015 &feature_avr0,1577 &feature_break,
1578 &feature_mul,
1579 &feature_sram,
1580 &feature_ijmpcall,
2016 &feature_movw,1581 &feature_movw,
2017 &feature_avr5,
2018 },1582 },
2019};1583};
20201584
...@@ -2022,18 +1586,16 @@ pub const cpu_atmega3250 = Cpu{...@@ -2022,18 +1586,16 @@ pub const cpu_atmega3250 = Cpu{
2022 .name = "atmega3250",1586 .name = "atmega3250",
2023 .llvm_name = "atmega3250",1587 .llvm_name = "atmega3250",
2024 .subfeatures = &[_]*const Feature {1588 .subfeatures = &[_]*const Feature {
2025 &feature_spm,
2026 &feature_lpmx,1589 &feature_lpmx,
2027 &feature_ijmpcall,1590 &feature_spm,
2028 &feature_jmpcall,
2029 &feature_sram,
2030 &feature_addsubiw,1591 &feature_addsubiw,
2031 &feature_mul,1592 &feature_jmpcall,
2032 &feature_break,
2033 &feature_lpm,1593 &feature_lpm,
2034 &feature_avr0,1594 &feature_break,
1595 &feature_mul,
1596 &feature_sram,
1597 &feature_ijmpcall,
2035 &feature_movw,1598 &feature_movw,
2036 &feature_avr5,
2037 },1599 },
2038};1600};
20391601
...@@ -2041,18 +1603,16 @@ pub const cpu_atmega3250a = Cpu{...@@ -2041,18 +1603,16 @@ pub const cpu_atmega3250a = Cpu{
2041 .name = "atmega3250a",1603 .name = "atmega3250a",
2042 .llvm_name = "atmega3250a",1604 .llvm_name = "atmega3250a",
2043 .subfeatures = &[_]*const Feature {1605 .subfeatures = &[_]*const Feature {
2044 &feature_spm,
2045 &feature_lpmx,1606 &feature_lpmx,
2046 &feature_ijmpcall,1607 &feature_spm,
2047 &feature_jmpcall,
2048 &feature_sram,
2049 &feature_addsubiw,1608 &feature_addsubiw,
2050 &feature_mul,1609 &feature_jmpcall,
2051 &feature_break,
2052 &feature_lpm,1610 &feature_lpm,
2053 &feature_avr0,1611 &feature_break,
1612 &feature_mul,
1613 &feature_sram,
1614 &feature_ijmpcall,
2054 &feature_movw,1615 &feature_movw,
2055 &feature_avr5,
2056 },1616 },
2057};1617};
20581618
...@@ -2060,18 +1620,16 @@ pub const cpu_atmega3250p = Cpu{...@@ -2060,18 +1620,16 @@ pub const cpu_atmega3250p = Cpu{
2060 .name = "atmega3250p",1620 .name = "atmega3250p",
2061 .llvm_name = "atmega3250p",1621 .llvm_name = "atmega3250p",
2062 .subfeatures = &[_]*const Feature {1622 .subfeatures = &[_]*const Feature {
2063 &feature_spm,
2064 &feature_lpmx,1623 &feature_lpmx,
2065 &feature_ijmpcall,1624 &feature_spm,
2066 &feature_jmpcall,
2067 &feature_sram,
2068 &feature_addsubiw,1625 &feature_addsubiw,
2069 &feature_mul,1626 &feature_jmpcall,
2070 &feature_break,
2071 &feature_lpm,1627 &feature_lpm,
2072 &feature_avr0,1628 &feature_break,
1629 &feature_mul,
1630 &feature_sram,
1631 &feature_ijmpcall,
2073 &feature_movw,1632 &feature_movw,
2074 &feature_avr5,
2075 },1633 },
2076};1634};
20771635
...@@ -2079,18 +1637,16 @@ pub const cpu_atmega3250pa = Cpu{...@@ -2079,18 +1637,16 @@ pub const cpu_atmega3250pa = Cpu{
2079 .name = "atmega3250pa",1637 .name = "atmega3250pa",
2080 .llvm_name = "atmega3250pa",1638 .llvm_name = "atmega3250pa",
2081 .subfeatures = &[_]*const Feature {1639 .subfeatures = &[_]*const Feature {
2082 &feature_spm,
2083 &feature_lpmx,1640 &feature_lpmx,
2084 &feature_ijmpcall,1641 &feature_spm,
2085 &feature_jmpcall,
2086 &feature_sram,
2087 &feature_addsubiw,1642 &feature_addsubiw,
2088 &feature_mul,1643 &feature_jmpcall,
2089 &feature_break,
2090 &feature_lpm,1644 &feature_lpm,
2091 &feature_avr0,1645 &feature_break,
1646 &feature_mul,
1647 &feature_sram,
1648 &feature_ijmpcall,
2092 &feature_movw,1649 &feature_movw,
2093 &feature_avr5,
2094 },1650 },
2095};1651};
20961652
...@@ -2098,18 +1654,16 @@ pub const cpu_atmega325a = Cpu{...@@ -2098,18 +1654,16 @@ pub const cpu_atmega325a = Cpu{
2098 .name = "atmega325a",1654 .name = "atmega325a",
2099 .llvm_name = "atmega325a",1655 .llvm_name = "atmega325a",
2100 .subfeatures = &[_]*const Feature {1656 .subfeatures = &[_]*const Feature {
2101 &feature_spm,
2102 &feature_lpmx,1657 &feature_lpmx,
2103 &feature_ijmpcall,1658 &feature_spm,
2104 &feature_jmpcall,
2105 &feature_sram,
2106 &feature_addsubiw,1659 &feature_addsubiw,
2107 &feature_mul,1660 &feature_jmpcall,
2108 &feature_break,
2109 &feature_lpm,1661 &feature_lpm,
2110 &feature_avr0,1662 &feature_break,
1663 &feature_mul,
1664 &feature_sram,
1665 &feature_ijmpcall,
2111 &feature_movw,1666 &feature_movw,
2112 &feature_avr5,
2113 },1667 },
2114};1668};
21151669
...@@ -2117,18 +1671,16 @@ pub const cpu_atmega325p = Cpu{...@@ -2117,18 +1671,16 @@ pub const cpu_atmega325p = Cpu{
2117 .name = "atmega325p",1671 .name = "atmega325p",
2118 .llvm_name = "atmega325p",1672 .llvm_name = "atmega325p",
2119 .subfeatures = &[_]*const Feature {1673 .subfeatures = &[_]*const Feature {
2120 &feature_spm,
2121 &feature_lpmx,1674 &feature_lpmx,
2122 &feature_ijmpcall,1675 &feature_spm,
2123 &feature_jmpcall,
2124 &feature_sram,
2125 &feature_addsubiw,1676 &feature_addsubiw,
2126 &feature_mul,1677 &feature_jmpcall,
2127 &feature_break,
2128 &feature_lpm,1678 &feature_lpm,
2129 &feature_avr0,1679 &feature_break,
1680 &feature_mul,
1681 &feature_sram,
1682 &feature_ijmpcall,
2130 &feature_movw,1683 &feature_movw,
2131 &feature_avr5,
2132 },1684 },
2133};1685};
21341686
...@@ -2136,18 +1688,16 @@ pub const cpu_atmega325pa = Cpu{...@@ -2136,18 +1688,16 @@ pub const cpu_atmega325pa = Cpu{
2136 .name = "atmega325pa",1688 .name = "atmega325pa",
2137 .llvm_name = "atmega325pa",1689 .llvm_name = "atmega325pa",
2138 .subfeatures = &[_]*const Feature {1690 .subfeatures = &[_]*const Feature {
2139 &feature_spm,
2140 &feature_lpmx,1691 &feature_lpmx,
2141 &feature_ijmpcall,1692 &feature_spm,
2142 &feature_jmpcall,
2143 &feature_sram,
2144 &feature_addsubiw,1693 &feature_addsubiw,
2145 &feature_mul,1694 &feature_jmpcall,
2146 &feature_break,
2147 &feature_lpm,1695 &feature_lpm,
2148 &feature_avr0,1696 &feature_break,
1697 &feature_mul,
1698 &feature_sram,
1699 &feature_ijmpcall,
2149 &feature_movw,1700 &feature_movw,
2150 &feature_avr5,
2151 },1701 },
2152};1702};
21531703
...@@ -2155,18 +1705,16 @@ pub const cpu_atmega328 = Cpu{...@@ -2155,18 +1705,16 @@ pub const cpu_atmega328 = Cpu{
2155 .name = "atmega328",1705 .name = "atmega328",
2156 .llvm_name = "atmega328",1706 .llvm_name = "atmega328",
2157 .subfeatures = &[_]*const Feature {1707 .subfeatures = &[_]*const Feature {
2158 &feature_spm,
2159 &feature_lpmx,1708 &feature_lpmx,
2160 &feature_ijmpcall,1709 &feature_spm,
2161 &feature_jmpcall,
2162 &feature_sram,
2163 &feature_addsubiw,1710 &feature_addsubiw,
2164 &feature_mul,1711 &feature_jmpcall,
2165 &feature_break,
2166 &feature_lpm,1712 &feature_lpm,
2167 &feature_avr0,1713 &feature_break,
1714 &feature_mul,
1715 &feature_sram,
1716 &feature_ijmpcall,
2168 &feature_movw,1717 &feature_movw,
2169 &feature_avr5,
2170 },1718 },
2171};1719};
21721720
...@@ -2174,18 +1722,16 @@ pub const cpu_atmega328p = Cpu{...@@ -2174,18 +1722,16 @@ pub const cpu_atmega328p = Cpu{
2174 .name = "atmega328p",1722 .name = "atmega328p",
2175 .llvm_name = "atmega328p",1723 .llvm_name = "atmega328p",
2176 .subfeatures = &[_]*const Feature {1724 .subfeatures = &[_]*const Feature {
2177 &feature_spm,
2178 &feature_lpmx,1725 &feature_lpmx,
2179 &feature_ijmpcall,1726 &feature_spm,
2180 &feature_jmpcall,
2181 &feature_sram,
2182 &feature_addsubiw,1727 &feature_addsubiw,
2183 &feature_mul,1728 &feature_jmpcall,
2184 &feature_break,
2185 &feature_lpm,1729 &feature_lpm,
2186 &feature_avr0,1730 &feature_break,
1731 &feature_mul,
1732 &feature_sram,
1733 &feature_ijmpcall,
2187 &feature_movw,1734 &feature_movw,
2188 &feature_avr5,
2189 },1735 },
2190};1736};
21911737
...@@ -2193,18 +1739,16 @@ pub const cpu_atmega329 = Cpu{...@@ -2193,18 +1739,16 @@ pub const cpu_atmega329 = Cpu{
2193 .name = "atmega329",1739 .name = "atmega329",
2194 .llvm_name = "atmega329",1740 .llvm_name = "atmega329",
2195 .subfeatures = &[_]*const Feature {1741 .subfeatures = &[_]*const Feature {
2196 &feature_spm,
2197 &feature_lpmx,1742 &feature_lpmx,
2198 &feature_ijmpcall,1743 &feature_spm,
2199 &feature_jmpcall,
2200 &feature_sram,
2201 &feature_addsubiw,1744 &feature_addsubiw,
2202 &feature_mul,1745 &feature_jmpcall,
2203 &feature_break,
2204 &feature_lpm,1746 &feature_lpm,
2205 &feature_avr0,1747 &feature_break,
1748 &feature_mul,
1749 &feature_sram,
1750 &feature_ijmpcall,
2206 &feature_movw,1751 &feature_movw,
2207 &feature_avr5,
2208 },1752 },
2209};1753};
22101754
...@@ -2212,18 +1756,16 @@ pub const cpu_atmega3290 = Cpu{...@@ -2212,18 +1756,16 @@ pub const cpu_atmega3290 = Cpu{
2212 .name = "atmega3290",1756 .name = "atmega3290",
2213 .llvm_name = "atmega3290",1757 .llvm_name = "atmega3290",
2214 .subfeatures = &[_]*const Feature {1758 .subfeatures = &[_]*const Feature {
2215 &feature_spm,
2216 &feature_lpmx,1759 &feature_lpmx,
2217 &feature_ijmpcall,1760 &feature_spm,
2218 &feature_jmpcall,
2219 &feature_sram,
2220 &feature_addsubiw,1761 &feature_addsubiw,
2221 &feature_mul,1762 &feature_jmpcall,
2222 &feature_break,
2223 &feature_lpm,1763 &feature_lpm,
2224 &feature_avr0,1764 &feature_break,
1765 &feature_mul,
1766 &feature_sram,
1767 &feature_ijmpcall,
2225 &feature_movw,1768 &feature_movw,
2226 &feature_avr5,
2227 },1769 },
2228};1770};
22291771
...@@ -2231,18 +1773,16 @@ pub const cpu_atmega3290a = Cpu{...@@ -2231,18 +1773,16 @@ pub const cpu_atmega3290a = Cpu{
2231 .name = "atmega3290a",1773 .name = "atmega3290a",
2232 .llvm_name = "atmega3290a",1774 .llvm_name = "atmega3290a",
2233 .subfeatures = &[_]*const Feature {1775 .subfeatures = &[_]*const Feature {
2234 &feature_spm,
2235 &feature_lpmx,1776 &feature_lpmx,
2236 &feature_ijmpcall,1777 &feature_spm,
2237 &feature_jmpcall,
2238 &feature_sram,
2239 &feature_addsubiw,1778 &feature_addsubiw,
2240 &feature_mul,1779 &feature_jmpcall,
2241 &feature_break,
2242 &feature_lpm,1780 &feature_lpm,
2243 &feature_avr0,1781 &feature_break,
1782 &feature_mul,
1783 &feature_sram,
1784 &feature_ijmpcall,
2244 &feature_movw,1785 &feature_movw,
2245 &feature_avr5,
2246 },1786 },
2247};1787};
22481788
...@@ -2250,18 +1790,16 @@ pub const cpu_atmega3290p = Cpu{...@@ -2250,18 +1790,16 @@ pub const cpu_atmega3290p = Cpu{
2250 .name = "atmega3290p",1790 .name = "atmega3290p",
2251 .llvm_name = "atmega3290p",1791 .llvm_name = "atmega3290p",
2252 .subfeatures = &[_]*const Feature {1792 .subfeatures = &[_]*const Feature {
2253 &feature_spm,
2254 &feature_lpmx,1793 &feature_lpmx,
2255 &feature_ijmpcall,1794 &feature_spm,
2256 &feature_jmpcall,
2257 &feature_sram,
2258 &feature_addsubiw,1795 &feature_addsubiw,
2259 &feature_mul,1796 &feature_jmpcall,
2260 &feature_break,
2261 &feature_lpm,1797 &feature_lpm,
2262 &feature_avr0,1798 &feature_break,
1799 &feature_mul,
1800 &feature_sram,
1801 &feature_ijmpcall,
2263 &feature_movw,1802 &feature_movw,
2264 &feature_avr5,
2265 },1803 },
2266};1804};
22671805
...@@ -2269,18 +1807,16 @@ pub const cpu_atmega3290pa = Cpu{...@@ -2269,18 +1807,16 @@ pub const cpu_atmega3290pa = Cpu{
2269 .name = "atmega3290pa",1807 .name = "atmega3290pa",
2270 .llvm_name = "atmega3290pa",1808 .llvm_name = "atmega3290pa",
2271 .subfeatures = &[_]*const Feature {1809 .subfeatures = &[_]*const Feature {
2272 &feature_spm,
2273 &feature_lpmx,1810 &feature_lpmx,
2274 &feature_ijmpcall,1811 &feature_spm,
2275 &feature_jmpcall,
2276 &feature_sram,
2277 &feature_addsubiw,1812 &feature_addsubiw,
2278 &feature_mul,1813 &feature_jmpcall,
2279 &feature_break,
2280 &feature_lpm,1814 &feature_lpm,
2281 &feature_avr0,1815 &feature_break,
2282 &feature_movw,1816 &feature_mul,
2283 &feature_avr5,1817 &feature_sram,
1818 &feature_ijmpcall,
1819 &feature_movw,
2284 },1820 },
2285};1821};
22861822
...@@ -2288,18 +1824,16 @@ pub const cpu_atmega329a = Cpu{...@@ -2288,18 +1824,16 @@ pub const cpu_atmega329a = Cpu{
2288 .name = "atmega329a",1824 .name = "atmega329a",
2289 .llvm_name = "atmega329a",1825 .llvm_name = "atmega329a",
2290 .subfeatures = &[_]*const Feature {1826 .subfeatures = &[_]*const Feature {
2291 &feature_spm,
2292 &feature_lpmx,1827 &feature_lpmx,
2293 &feature_ijmpcall,1828 &feature_spm,
2294 &feature_jmpcall,
2295 &feature_sram,
2296 &feature_addsubiw,1829 &feature_addsubiw,
2297 &feature_mul,1830 &feature_jmpcall,
2298 &feature_break,
2299 &feature_lpm,1831 &feature_lpm,
2300 &feature_avr0,1832 &feature_break,
1833 &feature_mul,
1834 &feature_sram,
1835 &feature_ijmpcall,
2301 &feature_movw,1836 &feature_movw,
2302 &feature_avr5,
2303 },1837 },
2304};1838};
23051839
...@@ -2307,18 +1841,16 @@ pub const cpu_atmega329p = Cpu{...@@ -2307,18 +1841,16 @@ pub const cpu_atmega329p = Cpu{
2307 .name = "atmega329p",1841 .name = "atmega329p",
2308 .llvm_name = "atmega329p",1842 .llvm_name = "atmega329p",
2309 .subfeatures = &[_]*const Feature {1843 .subfeatures = &[_]*const Feature {
2310 &feature_spm,
2311 &feature_lpmx,1844 &feature_lpmx,
2312 &feature_ijmpcall,1845 &feature_spm,
2313 &feature_jmpcall,
2314 &feature_sram,
2315 &feature_addsubiw,1846 &feature_addsubiw,
2316 &feature_mul,1847 &feature_jmpcall,
2317 &feature_break,
2318 &feature_lpm,1848 &feature_lpm,
2319 &feature_avr0,1849 &feature_break,
1850 &feature_mul,
1851 &feature_sram,
1852 &feature_ijmpcall,
2320 &feature_movw,1853 &feature_movw,
2321 &feature_avr5,
2322 },1854 },
2323};1855};
23241856
...@@ -2326,18 +1858,16 @@ pub const cpu_atmega329pa = Cpu{...@@ -2326,18 +1858,16 @@ pub const cpu_atmega329pa = Cpu{
2326 .name = "atmega329pa",1858 .name = "atmega329pa",
2327 .llvm_name = "atmega329pa",1859 .llvm_name = "atmega329pa",
2328 .subfeatures = &[_]*const Feature {1860 .subfeatures = &[_]*const Feature {
2329 &feature_spm,
2330 &feature_lpmx,1861 &feature_lpmx,
2331 &feature_ijmpcall,1862 &feature_spm,
2332 &feature_jmpcall,
2333 &feature_sram,
2334 &feature_addsubiw,1863 &feature_addsubiw,
2335 &feature_mul,1864 &feature_jmpcall,
2336 &feature_break,
2337 &feature_lpm,1865 &feature_lpm,
2338 &feature_avr0,1866 &feature_break,
1867 &feature_mul,
1868 &feature_sram,
1869 &feature_ijmpcall,
2339 &feature_movw,1870 &feature_movw,
2340 &feature_avr5,
2341 },1871 },
2342};1872};
23431873
...@@ -2345,18 +1875,16 @@ pub const cpu_atmega32a = Cpu{...@@ -2345,18 +1875,16 @@ pub const cpu_atmega32a = Cpu{
2345 .name = "atmega32a",1875 .name = "atmega32a",
2346 .llvm_name = "atmega32a",1876 .llvm_name = "atmega32a",
2347 .subfeatures = &[_]*const Feature {1877 .subfeatures = &[_]*const Feature {
2348 &feature_spm,
2349 &feature_lpmx,1878 &feature_lpmx,
2350 &feature_ijmpcall,1879 &feature_spm,
2351 &feature_jmpcall,
2352 &feature_sram,
2353 &feature_addsubiw,1880 &feature_addsubiw,
2354 &feature_mul,1881 &feature_jmpcall,
2355 &feature_break,
2356 &feature_lpm,1882 &feature_lpm,
2357 &feature_avr0,1883 &feature_break,
1884 &feature_mul,
1885 &feature_sram,
1886 &feature_ijmpcall,
2358 &feature_movw,1887 &feature_movw,
2359 &feature_avr5,
2360 },1888 },
2361};1889};
23621890
...@@ -2364,18 +1892,16 @@ pub const cpu_atmega32c1 = Cpu{...@@ -2364,18 +1892,16 @@ pub const cpu_atmega32c1 = Cpu{
2364 .name = "atmega32c1",1892 .name = "atmega32c1",
2365 .llvm_name = "atmega32c1",1893 .llvm_name = "atmega32c1",
2366 .subfeatures = &[_]*const Feature {1894 .subfeatures = &[_]*const Feature {
2367 &feature_spm,
2368 &feature_lpmx,1895 &feature_lpmx,
2369 &feature_ijmpcall,1896 &feature_spm,
2370 &feature_jmpcall,
2371 &feature_sram,
2372 &feature_addsubiw,1897 &feature_addsubiw,
2373 &feature_mul,1898 &feature_jmpcall,
2374 &feature_break,
2375 &feature_lpm,1899 &feature_lpm,
2376 &feature_avr0,1900 &feature_break,
1901 &feature_mul,
1902 &feature_sram,
1903 &feature_ijmpcall,
2377 &feature_movw,1904 &feature_movw,
2378 &feature_avr5,
2379 },1905 },
2380};1906};
23811907
...@@ -2383,18 +1909,16 @@ pub const cpu_atmega32hvb = Cpu{...@@ -2383,18 +1909,16 @@ pub const cpu_atmega32hvb = Cpu{
2383 .name = "atmega32hvb",1909 .name = "atmega32hvb",
2384 .llvm_name = "atmega32hvb",1910 .llvm_name = "atmega32hvb",
2385 .subfeatures = &[_]*const Feature {1911 .subfeatures = &[_]*const Feature {
2386 &feature_spm,
2387 &feature_lpmx,1912 &feature_lpmx,
2388 &feature_ijmpcall,1913 &feature_spm,
2389 &feature_jmpcall,
2390 &feature_sram,
2391 &feature_addsubiw,1914 &feature_addsubiw,
2392 &feature_mul,1915 &feature_jmpcall,
2393 &feature_break,
2394 &feature_lpm,1916 &feature_lpm,
2395 &feature_avr0,1917 &feature_break,
1918 &feature_mul,
1919 &feature_sram,
1920 &feature_ijmpcall,
2396 &feature_movw,1921 &feature_movw,
2397 &feature_avr5,
2398 },1922 },
2399};1923};
24001924
...@@ -2402,18 +1926,16 @@ pub const cpu_atmega32hvbrevb = Cpu{...@@ -2402,18 +1926,16 @@ pub const cpu_atmega32hvbrevb = Cpu{
2402 .name = "atmega32hvbrevb",1926 .name = "atmega32hvbrevb",
2403 .llvm_name = "atmega32hvbrevb",1927 .llvm_name = "atmega32hvbrevb",
2404 .subfeatures = &[_]*const Feature {1928 .subfeatures = &[_]*const Feature {
2405 &feature_spm,
2406 &feature_lpmx,1929 &feature_lpmx,
2407 &feature_ijmpcall,1930 &feature_spm,
2408 &feature_jmpcall,
2409 &feature_sram,
2410 &feature_addsubiw,1931 &feature_addsubiw,
2411 &feature_mul,1932 &feature_jmpcall,
2412 &feature_break,
2413 &feature_lpm,1933 &feature_lpm,
2414 &feature_avr0,1934 &feature_break,
1935 &feature_mul,
1936 &feature_sram,
1937 &feature_ijmpcall,
2415 &feature_movw,1938 &feature_movw,
2416 &feature_avr5,
2417 },1939 },
2418};1940};
24191941
...@@ -2421,18 +1943,16 @@ pub const cpu_atmega32m1 = Cpu{...@@ -2421,18 +1943,16 @@ pub const cpu_atmega32m1 = Cpu{
2421 .name = "atmega32m1",1943 .name = "atmega32m1",
2422 .llvm_name = "atmega32m1",1944 .llvm_name = "atmega32m1",
2423 .subfeatures = &[_]*const Feature {1945 .subfeatures = &[_]*const Feature {
2424 &feature_spm,
2425 &feature_lpmx,1946 &feature_lpmx,
2426 &feature_ijmpcall,1947 &feature_spm,
2427 &feature_jmpcall,
2428 &feature_sram,
2429 &feature_addsubiw,1948 &feature_addsubiw,
2430 &feature_mul,1949 &feature_jmpcall,
2431 &feature_break,
2432 &feature_lpm,1950 &feature_lpm,
2433 &feature_avr0,1951 &feature_break,
1952 &feature_mul,
1953 &feature_sram,
1954 &feature_ijmpcall,
2434 &feature_movw,1955 &feature_movw,
2435 &feature_avr5,
2436 },1956 },
2437};1957};
24381958
...@@ -2440,17 +1960,15 @@ pub const cpu_atmega32u2 = Cpu{...@@ -2440,17 +1960,15 @@ pub const cpu_atmega32u2 = Cpu{
2440 .name = "atmega32u2",1960 .name = "atmega32u2",
2441 .llvm_name = "atmega32u2",1961 .llvm_name = "atmega32u2",
2442 .subfeatures = &[_]*const Feature {1962 .subfeatures = &[_]*const Feature {
2443 &feature_spm,
2444 &feature_lpmx,1963 &feature_lpmx,
2445 &feature_ijmpcall,1964 &feature_spm,
2446 &feature_jmpcall,
2447 &feature_sram,
2448 &feature_addsubiw,1965 &feature_addsubiw,
2449 &feature_break,1966 &feature_jmpcall,
2450 &feature_lpm,1967 &feature_lpm,
2451 &feature_avr0,1968 &feature_break,
1969 &feature_sram,
1970 &feature_ijmpcall,
2452 &feature_movw,1971 &feature_movw,
2453 &feature_avr35,
2454 },1972 },
2455};1973};
24561974
...@@ -2458,18 +1976,16 @@ pub const cpu_atmega32u4 = Cpu{...@@ -2458,18 +1976,16 @@ pub const cpu_atmega32u4 = Cpu{
2458 .name = "atmega32u4",1976 .name = "atmega32u4",
2459 .llvm_name = "atmega32u4",1977 .llvm_name = "atmega32u4",
2460 .subfeatures = &[_]*const Feature {1978 .subfeatures = &[_]*const Feature {
2461 &feature_spm,
2462 &feature_lpmx,1979 &feature_lpmx,
2463 &feature_ijmpcall,1980 &feature_spm,
2464 &feature_jmpcall,
2465 &feature_sram,
2466 &feature_addsubiw,1981 &feature_addsubiw,
2467 &feature_mul,1982 &feature_jmpcall,
2468 &feature_break,
2469 &feature_lpm,1983 &feature_lpm,
2470 &feature_avr0,1984 &feature_break,
1985 &feature_mul,
1986 &feature_sram,
1987 &feature_ijmpcall,
2471 &feature_movw,1988 &feature_movw,
2472 &feature_avr5,
2473 },1989 },
2474};1990};
24751991
...@@ -2477,18 +1993,16 @@ pub const cpu_atmega32u6 = Cpu{...@@ -2477,18 +1993,16 @@ pub const cpu_atmega32u6 = Cpu{
2477 .name = "atmega32u6",1993 .name = "atmega32u6",
2478 .llvm_name = "atmega32u6",1994 .llvm_name = "atmega32u6",
2479 .subfeatures = &[_]*const Feature {1995 .subfeatures = &[_]*const Feature {
2480 &feature_spm,
2481 &feature_lpmx,1996 &feature_lpmx,
2482 &feature_ijmpcall,1997 &feature_spm,
2483 &feature_jmpcall,
2484 &feature_sram,
2485 &feature_addsubiw,1998 &feature_addsubiw,
2486 &feature_mul,1999 &feature_jmpcall,
2487 &feature_break,
2488 &feature_lpm,2000 &feature_lpm,
2489 &feature_avr0,2001 &feature_break,
2002 &feature_mul,
2003 &feature_sram,
2004 &feature_ijmpcall,
2490 &feature_movw,2005 &feature_movw,
2491 &feature_avr5,
2492 },2006 },
2493};2007};
24942008
...@@ -2496,18 +2010,16 @@ pub const cpu_atmega406 = Cpu{...@@ -2496,18 +2010,16 @@ pub const cpu_atmega406 = Cpu{
2496 .name = "atmega406",2010 .name = "atmega406",
2497 .llvm_name = "atmega406",2011 .llvm_name = "atmega406",
2498 .subfeatures = &[_]*const Feature {2012 .subfeatures = &[_]*const Feature {
2499 &feature_spm,
2500 &feature_lpmx,2013 &feature_lpmx,
2501 &feature_ijmpcall,2014 &feature_spm,
2502 &feature_jmpcall,
2503 &feature_sram,
2504 &feature_addsubiw,2015 &feature_addsubiw,
2505 &feature_mul,2016 &feature_jmpcall,
2506 &feature_break,
2507 &feature_lpm,2017 &feature_lpm,
2508 &feature_avr0,2018 &feature_break,
2019 &feature_mul,
2020 &feature_sram,
2021 &feature_ijmpcall,
2509 &feature_movw,2022 &feature_movw,
2510 &feature_avr5,
2511 },2023 },
2512};2024};
25132025
...@@ -2515,17 +2027,15 @@ pub const cpu_atmega48 = Cpu{...@@ -2515,17 +2027,15 @@ pub const cpu_atmega48 = Cpu{
2515 .name = "atmega48",2027 .name = "atmega48",
2516 .llvm_name = "atmega48",2028 .llvm_name = "atmega48",
2517 .subfeatures = &[_]*const Feature {2029 .subfeatures = &[_]*const Feature {
2518 &feature_spm,
2519 &feature_lpmx,2030 &feature_lpmx,
2520 &feature_ijmpcall,2031 &feature_spm,
2521 &feature_sram,
2522 &feature_addsubiw,2032 &feature_addsubiw,
2523 &feature_mul,
2524 &feature_break,2033 &feature_break,
2525 &feature_lpm,2034 &feature_lpm,
2526 &feature_avr0,2035 &feature_mul,
2036 &feature_sram,
2037 &feature_ijmpcall,
2527 &feature_movw,2038 &feature_movw,
2528 &feature_avr4,
2529 },2039 },
2530};2040};
25312041
...@@ -2533,17 +2043,15 @@ pub const cpu_atmega48a = Cpu{...@@ -2533,17 +2043,15 @@ pub const cpu_atmega48a = Cpu{
2533 .name = "atmega48a",2043 .name = "atmega48a",
2534 .llvm_name = "atmega48a",2044 .llvm_name = "atmega48a",
2535 .subfeatures = &[_]*const Feature {2045 .subfeatures = &[_]*const Feature {
2536 &feature_spm,
2537 &feature_lpmx,2046 &feature_lpmx,
2538 &feature_ijmpcall,2047 &feature_spm,
2539 &feature_sram,
2540 &feature_addsubiw,2048 &feature_addsubiw,
2541 &feature_mul,
2542 &feature_break,2049 &feature_break,
2543 &feature_lpm,2050 &feature_lpm,
2544 &feature_avr0,2051 &feature_mul,
2052 &feature_sram,
2053 &feature_ijmpcall,
2545 &feature_movw,2054 &feature_movw,
2546 &feature_avr4,
2547 },2055 },
2548};2056};
25492057
...@@ -2551,17 +2059,15 @@ pub const cpu_atmega48p = Cpu{...@@ -2551,17 +2059,15 @@ pub const cpu_atmega48p = Cpu{
2551 .name = "atmega48p",2059 .name = "atmega48p",
2552 .llvm_name = "atmega48p",2060 .llvm_name = "atmega48p",
2553 .subfeatures = &[_]*const Feature {2061 .subfeatures = &[_]*const Feature {
2554 &feature_spm,
2555 &feature_lpmx,2062 &feature_lpmx,
2556 &feature_ijmpcall,2063 &feature_spm,
2557 &feature_sram,
2558 &feature_addsubiw,2064 &feature_addsubiw,
2559 &feature_mul,
2560 &feature_break,2065 &feature_break,
2561 &feature_lpm,2066 &feature_lpm,
2562 &feature_avr0,2067 &feature_mul,
2068 &feature_sram,
2069 &feature_ijmpcall,
2563 &feature_movw,2070 &feature_movw,
2564 &feature_avr4,
2565 },2071 },
2566};2072};
25672073
...@@ -2569,17 +2075,15 @@ pub const cpu_atmega48pa = Cpu{...@@ -2569,17 +2075,15 @@ pub const cpu_atmega48pa = Cpu{
2569 .name = "atmega48pa",2075 .name = "atmega48pa",
2570 .llvm_name = "atmega48pa",2076 .llvm_name = "atmega48pa",
2571 .subfeatures = &[_]*const Feature {2077 .subfeatures = &[_]*const Feature {
2572 &feature_spm,
2573 &feature_lpmx,2078 &feature_lpmx,
2574 &feature_ijmpcall,2079 &feature_spm,
2575 &feature_sram,
2576 &feature_addsubiw,2080 &feature_addsubiw,
2577 &feature_mul,
2578 &feature_break,2081 &feature_break,
2579 &feature_lpm,2082 &feature_lpm,
2580 &feature_avr0,2083 &feature_mul,
2084 &feature_sram,
2085 &feature_ijmpcall,
2581 &feature_movw,2086 &feature_movw,
2582 &feature_avr4,
2583 },2087 },
2584};2088};
25852089
...@@ -2587,18 +2091,16 @@ pub const cpu_atmega64 = Cpu{...@@ -2587,18 +2091,16 @@ pub const cpu_atmega64 = Cpu{
2587 .name = "atmega64",2091 .name = "atmega64",
2588 .llvm_name = "atmega64",2092 .llvm_name = "atmega64",
2589 .subfeatures = &[_]*const Feature {2093 .subfeatures = &[_]*const Feature {
2590 &feature_spm,
2591 &feature_lpmx,2094 &feature_lpmx,
2592 &feature_ijmpcall,2095 &feature_spm,
2593 &feature_jmpcall,
2594 &feature_sram,
2595 &feature_addsubiw,2096 &feature_addsubiw,
2596 &feature_mul,2097 &feature_jmpcall,
2597 &feature_break,
2598 &feature_lpm,2098 &feature_lpm,
2599 &feature_avr0,2099 &feature_break,
2100 &feature_mul,
2101 &feature_sram,
2102 &feature_ijmpcall,
2600 &feature_movw,2103 &feature_movw,
2601 &feature_avr5,
2602 },2104 },
2603};2105};
26042106
...@@ -2606,18 +2108,16 @@ pub const cpu_atmega640 = Cpu{...@@ -2606,18 +2108,16 @@ pub const cpu_atmega640 = Cpu{
2606 .name = "atmega640",2108 .name = "atmega640",
2607 .llvm_name = "atmega640",2109 .llvm_name = "atmega640",
2608 .subfeatures = &[_]*const Feature {2110 .subfeatures = &[_]*const Feature {
2609 &feature_spm,
2610 &feature_lpmx,2111 &feature_lpmx,
2611 &feature_ijmpcall,2112 &feature_spm,
2612 &feature_jmpcall,
2613 &feature_sram,
2614 &feature_addsubiw,2113 &feature_addsubiw,
2615 &feature_mul,2114 &feature_jmpcall,
2616 &feature_break,
2617 &feature_lpm,2115 &feature_lpm,
2618 &feature_avr0,2116 &feature_break,
2117 &feature_mul,
2118 &feature_sram,
2119 &feature_ijmpcall,
2619 &feature_movw,2120 &feature_movw,
2620 &feature_avr5,
2621 },2121 },
2622};2122};
26232123
...@@ -2625,18 +2125,16 @@ pub const cpu_atmega644 = Cpu{...@@ -2625,18 +2125,16 @@ pub const cpu_atmega644 = Cpu{
2625 .name = "atmega644",2125 .name = "atmega644",
2626 .llvm_name = "atmega644",2126 .llvm_name = "atmega644",
2627 .subfeatures = &[_]*const Feature {2127 .subfeatures = &[_]*const Feature {
2628 &feature_spm,
2629 &feature_lpmx,2128 &feature_lpmx,
2630 &feature_ijmpcall,2129 &feature_spm,
2631 &feature_jmpcall,
2632 &feature_sram,
2633 &feature_addsubiw,2130 &feature_addsubiw,
2634 &feature_mul,2131 &feature_jmpcall,
2635 &feature_break,
2636 &feature_lpm,2132 &feature_lpm,
2637 &feature_avr0,2133 &feature_break,
2134 &feature_mul,
2135 &feature_sram,
2136 &feature_ijmpcall,
2638 &feature_movw,2137 &feature_movw,
2639 &feature_avr5,
2640 },2138 },
2641};2139};
26422140
...@@ -2644,18 +2142,16 @@ pub const cpu_atmega644a = Cpu{...@@ -2644,18 +2142,16 @@ pub const cpu_atmega644a = Cpu{
2644 .name = "atmega644a",2142 .name = "atmega644a",
2645 .llvm_name = "atmega644a",2143 .llvm_name = "atmega644a",
2646 .subfeatures = &[_]*const Feature {2144 .subfeatures = &[_]*const Feature {
2647 &feature_spm,
2648 &feature_lpmx,2145 &feature_lpmx,
2649 &feature_ijmpcall,2146 &feature_spm,
2650 &feature_jmpcall,
2651 &feature_sram,
2652 &feature_addsubiw,2147 &feature_addsubiw,
2653 &feature_mul,2148 &feature_jmpcall,
2654 &feature_break,
2655 &feature_lpm,2149 &feature_lpm,
2656 &feature_avr0,2150 &feature_break,
2151 &feature_mul,
2152 &feature_sram,
2153 &feature_ijmpcall,
2657 &feature_movw,2154 &feature_movw,
2658 &feature_avr5,
2659 },2155 },
2660};2156};
26612157
...@@ -2663,18 +2159,16 @@ pub const cpu_atmega644p = Cpu{...@@ -2663,18 +2159,16 @@ pub const cpu_atmega644p = Cpu{
2663 .name = "atmega644p",2159 .name = "atmega644p",
2664 .llvm_name = "atmega644p",2160 .llvm_name = "atmega644p",
2665 .subfeatures = &[_]*const Feature {2161 .subfeatures = &[_]*const Feature {
2666 &feature_spm,
2667 &feature_lpmx,2162 &feature_lpmx,
2668 &feature_ijmpcall,2163 &feature_spm,
2669 &feature_jmpcall,
2670 &feature_sram,
2671 &feature_addsubiw,2164 &feature_addsubiw,
2672 &feature_mul,2165 &feature_jmpcall,
2673 &feature_break,
2674 &feature_lpm,2166 &feature_lpm,
2675 &feature_avr0,2167 &feature_break,
2168 &feature_mul,
2169 &feature_sram,
2170 &feature_ijmpcall,
2676 &feature_movw,2171 &feature_movw,
2677 &feature_avr5,
2678 },2172 },
2679};2173};
26802174
...@@ -2682,18 +2176,16 @@ pub const cpu_atmega644pa = Cpu{...@@ -2682,18 +2176,16 @@ pub const cpu_atmega644pa = Cpu{
2682 .name = "atmega644pa",2176 .name = "atmega644pa",
2683 .llvm_name = "atmega644pa",2177 .llvm_name = "atmega644pa",
2684 .subfeatures = &[_]*const Feature {2178 .subfeatures = &[_]*const Feature {
2685 &feature_spm,
2686 &feature_lpmx,2179 &feature_lpmx,
2687 &feature_ijmpcall,2180 &feature_spm,
2688 &feature_jmpcall,
2689 &feature_sram,
2690 &feature_addsubiw,2181 &feature_addsubiw,
2691 &feature_mul,2182 &feature_jmpcall,
2692 &feature_break,
2693 &feature_lpm,2183 &feature_lpm,
2694 &feature_avr0,2184 &feature_break,
2185 &feature_mul,
2186 &feature_sram,
2187 &feature_ijmpcall,
2695 &feature_movw,2188 &feature_movw,
2696 &feature_avr5,
2697 },2189 },
2698};2190};
26992191
...@@ -2701,18 +2193,16 @@ pub const cpu_atmega644rfr2 = Cpu{...@@ -2701,18 +2193,16 @@ pub const cpu_atmega644rfr2 = Cpu{
2701 .name = "atmega644rfr2",2193 .name = "atmega644rfr2",
2702 .llvm_name = "atmega644rfr2",2194 .llvm_name = "atmega644rfr2",
2703 .subfeatures = &[_]*const Feature {2195 .subfeatures = &[_]*const Feature {
2704 &feature_spm,
2705 &feature_lpmx,2196 &feature_lpmx,
2706 &feature_ijmpcall,2197 &feature_spm,
2707 &feature_jmpcall,
2708 &feature_sram,
2709 &feature_addsubiw,2198 &feature_addsubiw,
2710 &feature_mul,2199 &feature_jmpcall,
2711 &feature_break,
2712 &feature_lpm,2200 &feature_lpm,
2713 &feature_avr0,2201 &feature_break,
2202 &feature_mul,
2203 &feature_sram,
2204 &feature_ijmpcall,
2714 &feature_movw,2205 &feature_movw,
2715 &feature_avr5,
2716 },2206 },
2717};2207};
27182208
...@@ -2720,18 +2210,16 @@ pub const cpu_atmega645 = Cpu{...@@ -2720,18 +2210,16 @@ pub const cpu_atmega645 = Cpu{
2720 .name = "atmega645",2210 .name = "atmega645",
2721 .llvm_name = "atmega645",2211 .llvm_name = "atmega645",
2722 .subfeatures = &[_]*const Feature {2212 .subfeatures = &[_]*const Feature {
2723 &feature_spm,
2724 &feature_lpmx,2213 &feature_lpmx,
2725 &feature_ijmpcall,2214 &feature_spm,
2726 &feature_jmpcall,
2727 &feature_sram,
2728 &feature_addsubiw,2215 &feature_addsubiw,
2729 &feature_mul,2216 &feature_jmpcall,
2730 &feature_break,
2731 &feature_lpm,2217 &feature_lpm,
2732 &feature_avr0,2218 &feature_break,
2219 &feature_mul,
2220 &feature_sram,
2221 &feature_ijmpcall,
2733 &feature_movw,2222 &feature_movw,
2734 &feature_avr5,
2735 },2223 },
2736};2224};
27372225
...@@ -2739,18 +2227,16 @@ pub const cpu_atmega6450 = Cpu{...@@ -2739,18 +2227,16 @@ pub const cpu_atmega6450 = Cpu{
2739 .name = "atmega6450",2227 .name = "atmega6450",
2740 .llvm_name = "atmega6450",2228 .llvm_name = "atmega6450",
2741 .subfeatures = &[_]*const Feature {2229 .subfeatures = &[_]*const Feature {
2742 &feature_spm,
2743 &feature_lpmx,2230 &feature_lpmx,
2744 &feature_ijmpcall,2231 &feature_spm,
2745 &feature_jmpcall,
2746 &feature_sram,
2747 &feature_addsubiw,2232 &feature_addsubiw,
2748 &feature_mul,2233 &feature_jmpcall,
2749 &feature_break,
2750 &feature_lpm,2234 &feature_lpm,
2751 &feature_avr0,2235 &feature_break,
2236 &feature_mul,
2237 &feature_sram,
2238 &feature_ijmpcall,
2752 &feature_movw,2239 &feature_movw,
2753 &feature_avr5,
2754 },2240 },
2755};2241};
27562242
...@@ -2758,18 +2244,16 @@ pub const cpu_atmega6450a = Cpu{...@@ -2758,18 +2244,16 @@ pub const cpu_atmega6450a = Cpu{
2758 .name = "atmega6450a",2244 .name = "atmega6450a",
2759 .llvm_name = "atmega6450a",2245 .llvm_name = "atmega6450a",
2760 .subfeatures = &[_]*const Feature {2246 .subfeatures = &[_]*const Feature {
2761 &feature_spm,
2762 &feature_lpmx,2247 &feature_lpmx,
2763 &feature_ijmpcall,2248 &feature_spm,
2764 &feature_jmpcall,
2765 &feature_sram,
2766 &feature_addsubiw,2249 &feature_addsubiw,
2767 &feature_mul,2250 &feature_jmpcall,
2768 &feature_break,
2769 &feature_lpm,2251 &feature_lpm,
2770 &feature_avr0,2252 &feature_break,
2253 &feature_mul,
2254 &feature_sram,
2255 &feature_ijmpcall,
2771 &feature_movw,2256 &feature_movw,
2772 &feature_avr5,
2773 },2257 },
2774};2258};
27752259
...@@ -2777,18 +2261,16 @@ pub const cpu_atmega6450p = Cpu{...@@ -2777,18 +2261,16 @@ pub const cpu_atmega6450p = Cpu{
2777 .name = "atmega6450p",2261 .name = "atmega6450p",
2778 .llvm_name = "atmega6450p",2262 .llvm_name = "atmega6450p",
2779 .subfeatures = &[_]*const Feature {2263 .subfeatures = &[_]*const Feature {
2780 &feature_spm,
2781 &feature_lpmx,2264 &feature_lpmx,
2782 &feature_ijmpcall,2265 &feature_spm,
2783 &feature_jmpcall,
2784 &feature_sram,
2785 &feature_addsubiw,2266 &feature_addsubiw,
2786 &feature_mul,2267 &feature_jmpcall,
2787 &feature_break,
2788 &feature_lpm,2268 &feature_lpm,
2789 &feature_avr0,2269 &feature_break,
2270 &feature_mul,
2271 &feature_sram,
2272 &feature_ijmpcall,
2790 &feature_movw,2273 &feature_movw,
2791 &feature_avr5,
2792 },2274 },
2793};2275};
27942276
...@@ -2796,18 +2278,16 @@ pub const cpu_atmega645a = Cpu{...@@ -2796,18 +2278,16 @@ pub const cpu_atmega645a = Cpu{
2796 .name = "atmega645a",2278 .name = "atmega645a",
2797 .llvm_name = "atmega645a",2279 .llvm_name = "atmega645a",
2798 .subfeatures = &[_]*const Feature {2280 .subfeatures = &[_]*const Feature {
2799 &feature_spm,
2800 &feature_lpmx,2281 &feature_lpmx,
2801 &feature_ijmpcall,2282 &feature_spm,
2802 &feature_jmpcall,
2803 &feature_sram,
2804 &feature_addsubiw,2283 &feature_addsubiw,
2805 &feature_mul,2284 &feature_jmpcall,
2806 &feature_break,
2807 &feature_lpm,2285 &feature_lpm,
2808 &feature_avr0,2286 &feature_break,
2287 &feature_mul,
2288 &feature_sram,
2289 &feature_ijmpcall,
2809 &feature_movw,2290 &feature_movw,
2810 &feature_avr5,
2811 },2291 },
2812};2292};
28132293
...@@ -2815,18 +2295,16 @@ pub const cpu_atmega645p = Cpu{...@@ -2815,18 +2295,16 @@ pub const cpu_atmega645p = Cpu{
2815 .name = "atmega645p",2295 .name = "atmega645p",
2816 .llvm_name = "atmega645p",2296 .llvm_name = "atmega645p",
2817 .subfeatures = &[_]*const Feature {2297 .subfeatures = &[_]*const Feature {
2818 &feature_spm,
2819 &feature_lpmx,2298 &feature_lpmx,
2820 &feature_ijmpcall,2299 &feature_spm,
2821 &feature_jmpcall,
2822 &feature_sram,
2823 &feature_addsubiw,2300 &feature_addsubiw,
2824 &feature_mul,2301 &feature_jmpcall,
2825 &feature_break,
2826 &feature_lpm,2302 &feature_lpm,
2827 &feature_avr0,2303 &feature_break,
2304 &feature_mul,
2305 &feature_sram,
2306 &feature_ijmpcall,
2828 &feature_movw,2307 &feature_movw,
2829 &feature_avr5,
2830 },2308 },
2831};2309};
28322310
...@@ -2834,18 +2312,16 @@ pub const cpu_atmega649 = Cpu{...@@ -2834,18 +2312,16 @@ pub const cpu_atmega649 = Cpu{
2834 .name = "atmega649",2312 .name = "atmega649",
2835 .llvm_name = "atmega649",2313 .llvm_name = "atmega649",
2836 .subfeatures = &[_]*const Feature {2314 .subfeatures = &[_]*const Feature {
2837 &feature_spm,
2838 &feature_lpmx,2315 &feature_lpmx,
2839 &feature_ijmpcall,2316 &feature_spm,
2840 &feature_jmpcall,
2841 &feature_sram,
2842 &feature_addsubiw,2317 &feature_addsubiw,
2843 &feature_mul,2318 &feature_jmpcall,
2844 &feature_break,
2845 &feature_lpm,2319 &feature_lpm,
2846 &feature_avr0,2320 &feature_break,
2321 &feature_mul,
2322 &feature_sram,
2323 &feature_ijmpcall,
2847 &feature_movw,2324 &feature_movw,
2848 &feature_avr5,
2849 },2325 },
2850};2326};
28512327
...@@ -2853,18 +2329,16 @@ pub const cpu_atmega6490 = Cpu{...@@ -2853,18 +2329,16 @@ pub const cpu_atmega6490 = Cpu{
2853 .name = "atmega6490",2329 .name = "atmega6490",
2854 .llvm_name = "atmega6490",2330 .llvm_name = "atmega6490",
2855 .subfeatures = &[_]*const Feature {2331 .subfeatures = &[_]*const Feature {
2856 &feature_spm,
2857 &feature_lpmx,2332 &feature_lpmx,
2858 &feature_ijmpcall,2333 &feature_spm,
2859 &feature_jmpcall,
2860 &feature_sram,
2861 &feature_addsubiw,2334 &feature_addsubiw,
2862 &feature_mul,2335 &feature_jmpcall,
2863 &feature_break,
2864 &feature_lpm,2336 &feature_lpm,
2865 &feature_avr0,2337 &feature_break,
2338 &feature_mul,
2339 &feature_sram,
2340 &feature_ijmpcall,
2866 &feature_movw,2341 &feature_movw,
2867 &feature_avr5,
2868 },2342 },
2869};2343};
28702344
...@@ -2872,18 +2346,16 @@ pub const cpu_atmega6490a = Cpu{...@@ -2872,18 +2346,16 @@ pub const cpu_atmega6490a = Cpu{
2872 .name = "atmega6490a",2346 .name = "atmega6490a",
2873 .llvm_name = "atmega6490a",2347 .llvm_name = "atmega6490a",
2874 .subfeatures = &[_]*const Feature {2348 .subfeatures = &[_]*const Feature {
2875 &feature_spm,
2876 &feature_lpmx,2349 &feature_lpmx,
2877 &feature_ijmpcall,2350 &feature_spm,
2878 &feature_jmpcall,
2879 &feature_sram,
2880 &feature_addsubiw,2351 &feature_addsubiw,
2881 &feature_mul,2352 &feature_jmpcall,
2882 &feature_break,
2883 &feature_lpm,2353 &feature_lpm,
2884 &feature_avr0,2354 &feature_break,
2355 &feature_mul,
2356 &feature_sram,
2357 &feature_ijmpcall,
2885 &feature_movw,2358 &feature_movw,
2886 &feature_avr5,
2887 },2359 },
2888};2360};
28892361
...@@ -2891,18 +2363,16 @@ pub const cpu_atmega6490p = Cpu{...@@ -2891,18 +2363,16 @@ pub const cpu_atmega6490p = Cpu{
2891 .name = "atmega6490p",2363 .name = "atmega6490p",
2892 .llvm_name = "atmega6490p",2364 .llvm_name = "atmega6490p",
2893 .subfeatures = &[_]*const Feature {2365 .subfeatures = &[_]*const Feature {
2894 &feature_spm,
2895 &feature_lpmx,2366 &feature_lpmx,
2896 &feature_ijmpcall,2367 &feature_spm,
2897 &feature_jmpcall,
2898 &feature_sram,
2899 &feature_addsubiw,2368 &feature_addsubiw,
2900 &feature_mul,2369 &feature_jmpcall,
2901 &feature_break,
2902 &feature_lpm,2370 &feature_lpm,
2903 &feature_avr0,2371 &feature_break,
2372 &feature_mul,
2373 &feature_sram,
2374 &feature_ijmpcall,
2904 &feature_movw,2375 &feature_movw,
2905 &feature_avr5,
2906 },2376 },
2907};2377};
29082378
...@@ -2910,18 +2380,16 @@ pub const cpu_atmega649a = Cpu{...@@ -2910,18 +2380,16 @@ pub const cpu_atmega649a = Cpu{
2910 .name = "atmega649a",2380 .name = "atmega649a",
2911 .llvm_name = "atmega649a",2381 .llvm_name = "atmega649a",
2912 .subfeatures = &[_]*const Feature {2382 .subfeatures = &[_]*const Feature {
2913 &feature_spm,
2914 &feature_lpmx,2383 &feature_lpmx,
2915 &feature_ijmpcall,2384 &feature_spm,
2916 &feature_jmpcall,
2917 &feature_sram,
2918 &feature_addsubiw,2385 &feature_addsubiw,
2919 &feature_mul,2386 &feature_jmpcall,
2920 &feature_break,
2921 &feature_lpm,2387 &feature_lpm,
2922 &feature_avr0,2388 &feature_break,
2389 &feature_mul,
2390 &feature_sram,
2391 &feature_ijmpcall,
2923 &feature_movw,2392 &feature_movw,
2924 &feature_avr5,
2925 },2393 },
2926};2394};
29272395
...@@ -2929,18 +2397,16 @@ pub const cpu_atmega649p = Cpu{...@@ -2929,18 +2397,16 @@ pub const cpu_atmega649p = Cpu{
2929 .name = "atmega649p",2397 .name = "atmega649p",
2930 .llvm_name = "atmega649p",2398 .llvm_name = "atmega649p",
2931 .subfeatures = &[_]*const Feature {2399 .subfeatures = &[_]*const Feature {
2932 &feature_spm,
2933 &feature_lpmx,2400 &feature_lpmx,
2934 &feature_ijmpcall,2401 &feature_spm,
2935 &feature_jmpcall,
2936 &feature_sram,
2937 &feature_addsubiw,2402 &feature_addsubiw,
2938 &feature_mul,2403 &feature_jmpcall,
2939 &feature_break,
2940 &feature_lpm,2404 &feature_lpm,
2941 &feature_avr0,2405 &feature_break,
2406 &feature_mul,
2407 &feature_sram,
2408 &feature_ijmpcall,
2942 &feature_movw,2409 &feature_movw,
2943 &feature_avr5,
2944 },2410 },
2945};2411};
29462412
...@@ -2948,18 +2414,16 @@ pub const cpu_atmega64a = Cpu{...@@ -2948,18 +2414,16 @@ pub const cpu_atmega64a = Cpu{
2948 .name = "atmega64a",2414 .name = "atmega64a",
2949 .llvm_name = "atmega64a",2415 .llvm_name = "atmega64a",
2950 .subfeatures = &[_]*const Feature {2416 .subfeatures = &[_]*const Feature {
2951 &feature_spm,
2952 &feature_lpmx,2417 &feature_lpmx,
2953 &feature_ijmpcall,2418 &feature_spm,
2954 &feature_jmpcall,
2955 &feature_sram,
2956 &feature_addsubiw,2419 &feature_addsubiw,
2957 &feature_mul,2420 &feature_jmpcall,
2958 &feature_break,
2959 &feature_lpm,2421 &feature_lpm,
2960 &feature_avr0,2422 &feature_break,
2423 &feature_mul,
2424 &feature_sram,
2425 &feature_ijmpcall,
2961 &feature_movw,2426 &feature_movw,
2962 &feature_avr5,
2963 },2427 },
2964};2428};
29652429
...@@ -2967,18 +2431,16 @@ pub const cpu_atmega64c1 = Cpu{...@@ -2967,18 +2431,16 @@ pub const cpu_atmega64c1 = Cpu{
2967 .name = "atmega64c1",2431 .name = "atmega64c1",
2968 .llvm_name = "atmega64c1",2432 .llvm_name = "atmega64c1",
2969 .subfeatures = &[_]*const Feature {2433 .subfeatures = &[_]*const Feature {
2970 &feature_spm,
2971 &feature_lpmx,2434 &feature_lpmx,
2972 &feature_ijmpcall,2435 &feature_spm,
2973 &feature_jmpcall,
2974 &feature_sram,
2975 &feature_addsubiw,2436 &feature_addsubiw,
2976 &feature_mul,2437 &feature_jmpcall,
2977 &feature_break,
2978 &feature_lpm,2438 &feature_lpm,
2979 &feature_avr0,2439 &feature_break,
2440 &feature_mul,
2441 &feature_sram,
2442 &feature_ijmpcall,
2980 &feature_movw,2443 &feature_movw,
2981 &feature_avr5,
2982 },2444 },
2983};2445};
29842446
...@@ -2986,18 +2448,16 @@ pub const cpu_atmega64hve = Cpu{...@@ -2986,18 +2448,16 @@ pub const cpu_atmega64hve = Cpu{
2986 .name = "atmega64hve",2448 .name = "atmega64hve",
2987 .llvm_name = "atmega64hve",2449 .llvm_name = "atmega64hve",
2988 .subfeatures = &[_]*const Feature {2450 .subfeatures = &[_]*const Feature {
2989 &feature_spm,
2990 &feature_lpmx,2451 &feature_lpmx,
2991 &feature_ijmpcall,2452 &feature_spm,
2992 &feature_jmpcall,
2993 &feature_sram,
2994 &feature_addsubiw,2453 &feature_addsubiw,
2995 &feature_mul,2454 &feature_jmpcall,
2996 &feature_break,
2997 &feature_lpm,2455 &feature_lpm,
2998 &feature_avr0,2456 &feature_break,
2457 &feature_mul,
2458 &feature_sram,
2459 &feature_ijmpcall,
2999 &feature_movw,2460 &feature_movw,
3000 &feature_avr5,
3001 },2461 },
3002};2462};
30032463
...@@ -3005,18 +2465,16 @@ pub const cpu_atmega64m1 = Cpu{...@@ -3005,18 +2465,16 @@ pub const cpu_atmega64m1 = Cpu{
3005 .name = "atmega64m1",2465 .name = "atmega64m1",
3006 .llvm_name = "atmega64m1",2466 .llvm_name = "atmega64m1",
3007 .subfeatures = &[_]*const Feature {2467 .subfeatures = &[_]*const Feature {
3008 &feature_spm,
3009 &feature_lpmx,2468 &feature_lpmx,
3010 &feature_ijmpcall,2469 &feature_spm,
3011 &feature_jmpcall,
3012 &feature_sram,
3013 &feature_addsubiw,2470 &feature_addsubiw,
3014 &feature_mul,2471 &feature_jmpcall,
3015 &feature_break,
3016 &feature_lpm,2472 &feature_lpm,
3017 &feature_avr0,2473 &feature_break,
2474 &feature_mul,
2475 &feature_sram,
2476 &feature_ijmpcall,
3018 &feature_movw,2477 &feature_movw,
3019 &feature_avr5,
3020 },2478 },
3021};2479};
30222480
...@@ -3024,18 +2482,16 @@ pub const cpu_atmega64rfr2 = Cpu{...@@ -3024,18 +2482,16 @@ pub const cpu_atmega64rfr2 = Cpu{
3024 .name = "atmega64rfr2",2482 .name = "atmega64rfr2",
3025 .llvm_name = "atmega64rfr2",2483 .llvm_name = "atmega64rfr2",
3026 .subfeatures = &[_]*const Feature {2484 .subfeatures = &[_]*const Feature {
3027 &feature_spm,
3028 &feature_lpmx,2485 &feature_lpmx,
3029 &feature_ijmpcall,2486 &feature_spm,
3030 &feature_jmpcall,
3031 &feature_sram,
3032 &feature_addsubiw,2487 &feature_addsubiw,
3033 &feature_mul,2488 &feature_jmpcall,
3034 &feature_break,
3035 &feature_lpm,2489 &feature_lpm,
3036 &feature_avr0,2490 &feature_break,
2491 &feature_mul,
2492 &feature_sram,
2493 &feature_ijmpcall,
3037 &feature_movw,2494 &feature_movw,
3038 &feature_avr5,
3039 },2495 },
3040};2496};
30412497
...@@ -3043,17 +2499,15 @@ pub const cpu_atmega8 = Cpu{...@@ -3043,17 +2499,15 @@ pub const cpu_atmega8 = Cpu{
3043 .name = "atmega8",2499 .name = "atmega8",
3044 .llvm_name = "atmega8",2500 .llvm_name = "atmega8",
3045 .subfeatures = &[_]*const Feature {2501 .subfeatures = &[_]*const Feature {
3046 &feature_spm,
3047 &feature_lpmx,2502 &feature_lpmx,
3048 &feature_ijmpcall,2503 &feature_spm,
3049 &feature_sram,
3050 &feature_addsubiw,2504 &feature_addsubiw,
3051 &feature_mul,
3052 &feature_break,2505 &feature_break,
3053 &feature_lpm,2506 &feature_lpm,
3054 &feature_avr0,2507 &feature_mul,
2508 &feature_sram,
2509 &feature_ijmpcall,
3055 &feature_movw,2510 &feature_movw,
3056 &feature_avr4,
3057 },2511 },
3058};2512};
30592513
...@@ -3061,12 +2515,10 @@ pub const cpu_atmega8515 = Cpu{...@@ -3061,12 +2515,10 @@ pub const cpu_atmega8515 = Cpu{
3061 .name = "atmega8515",2515 .name = "atmega8515",
3062 .llvm_name = "atmega8515",2516 .llvm_name = "atmega8515",
3063 .subfeatures = &[_]*const Feature {2517 .subfeatures = &[_]*const Feature {
3064 &feature_ijmpcall,
3065 &feature_sram,
3066 &feature_addsubiw,2518 &feature_addsubiw,
3067 &feature_lpm,2519 &feature_lpm,
3068 &feature_avr0,2520 &feature_sram,
3069 &feature_avr2,2521 &feature_ijmpcall,
3070 &feature_lpmx,2522 &feature_lpmx,
3071 &feature_movw,2523 &feature_movw,
3072 &feature_mul,2524 &feature_mul,
...@@ -3078,12 +2530,10 @@ pub const cpu_atmega8535 = Cpu{...@@ -3078,12 +2530,10 @@ pub const cpu_atmega8535 = Cpu{
3078 .name = "atmega8535",2530 .name = "atmega8535",
3079 .llvm_name = "atmega8535",2531 .llvm_name = "atmega8535",
3080 .subfeatures = &[_]*const Feature {2532 .subfeatures = &[_]*const Feature {
3081 &feature_ijmpcall,
3082 &feature_sram,
3083 &feature_addsubiw,2533 &feature_addsubiw,
3084 &feature_lpm,2534 &feature_lpm,
3085 &feature_avr0,2535 &feature_sram,
3086 &feature_avr2,2536 &feature_ijmpcall,
3087 &feature_lpmx,2537 &feature_lpmx,
3088 &feature_movw,2538 &feature_movw,
3089 &feature_mul,2539 &feature_mul,
...@@ -3095,17 +2545,15 @@ pub const cpu_atmega88 = Cpu{...@@ -3095,17 +2545,15 @@ pub const cpu_atmega88 = Cpu{
3095 .name = "atmega88",2545 .name = "atmega88",
3096 .llvm_name = "atmega88",2546 .llvm_name = "atmega88",
3097 .subfeatures = &[_]*const Feature {2547 .subfeatures = &[_]*const Feature {
3098 &feature_spm,
3099 &feature_lpmx,2548 &feature_lpmx,
3100 &feature_ijmpcall,2549 &feature_spm,
3101 &feature_sram,
3102 &feature_addsubiw,2550 &feature_addsubiw,
3103 &feature_mul,
3104 &feature_break,2551 &feature_break,
3105 &feature_lpm,2552 &feature_lpm,
3106 &feature_avr0,2553 &feature_mul,
2554 &feature_sram,
2555 &feature_ijmpcall,
3107 &feature_movw,2556 &feature_movw,
3108 &feature_avr4,
3109 },2557 },
3110};2558};
31112559
...@@ -3113,17 +2561,15 @@ pub const cpu_atmega88a = Cpu{...@@ -3113,17 +2561,15 @@ pub const cpu_atmega88a = Cpu{
3113 .name = "atmega88a",2561 .name = "atmega88a",
3114 .llvm_name = "atmega88a",2562 .llvm_name = "atmega88a",
3115 .subfeatures = &[_]*const Feature {2563 .subfeatures = &[_]*const Feature {
3116 &feature_spm,
3117 &feature_lpmx,2564 &feature_lpmx,
3118 &feature_ijmpcall,2565 &feature_spm,
3119 &feature_sram,
3120 &feature_addsubiw,2566 &feature_addsubiw,
3121 &feature_mul,
3122 &feature_break,2567 &feature_break,
3123 &feature_lpm,2568 &feature_lpm,
3124 &feature_avr0,2569 &feature_mul,
2570 &feature_sram,
2571 &feature_ijmpcall,
3125 &feature_movw,2572 &feature_movw,
3126 &feature_avr4,
3127 },2573 },
3128};2574};
31292575
...@@ -3131,17 +2577,15 @@ pub const cpu_atmega88p = Cpu{...@@ -3131,17 +2577,15 @@ pub const cpu_atmega88p = Cpu{
3131 .name = "atmega88p",2577 .name = "atmega88p",
3132 .llvm_name = "atmega88p",2578 .llvm_name = "atmega88p",
3133 .subfeatures = &[_]*const Feature {2579 .subfeatures = &[_]*const Feature {
3134 &feature_spm,
3135 &feature_lpmx,2580 &feature_lpmx,
3136 &feature_ijmpcall,2581 &feature_spm,
3137 &feature_sram,
3138 &feature_addsubiw,2582 &feature_addsubiw,
3139 &feature_mul,
3140 &feature_break,2583 &feature_break,
3141 &feature_lpm,2584 &feature_lpm,
3142 &feature_avr0,2585 &feature_mul,
2586 &feature_sram,
2587 &feature_ijmpcall,
3143 &feature_movw,2588 &feature_movw,
3144 &feature_avr4,
3145 },2589 },
3146};2590};
31472591
...@@ -3149,17 +2593,15 @@ pub const cpu_atmega88pa = Cpu{...@@ -3149,17 +2593,15 @@ pub const cpu_atmega88pa = Cpu{
3149 .name = "atmega88pa",2593 .name = "atmega88pa",
3150 .llvm_name = "atmega88pa",2594 .llvm_name = "atmega88pa",
3151 .subfeatures = &[_]*const Feature {2595 .subfeatures = &[_]*const Feature {
3152 &feature_spm,
3153 &feature_lpmx,2596 &feature_lpmx,
3154 &feature_ijmpcall,2597 &feature_spm,
3155 &feature_sram,
3156 &feature_addsubiw,2598 &feature_addsubiw,
3157 &feature_mul,
3158 &feature_break,2599 &feature_break,
3159 &feature_lpm,2600 &feature_lpm,
3160 &feature_avr0,2601 &feature_mul,
2602 &feature_sram,
2603 &feature_ijmpcall,
3161 &feature_movw,2604 &feature_movw,
3162 &feature_avr4,
3163 },2605 },
3164};2606};
31652607
...@@ -3167,17 +2609,15 @@ pub const cpu_atmega8a = Cpu{...@@ -3167,17 +2609,15 @@ pub const cpu_atmega8a = Cpu{
3167 .name = "atmega8a",2609 .name = "atmega8a",
3168 .llvm_name = "atmega8a",2610 .llvm_name = "atmega8a",
3169 .subfeatures = &[_]*const Feature {2611 .subfeatures = &[_]*const Feature {
3170 &feature_spm,
3171 &feature_lpmx,2612 &feature_lpmx,
3172 &feature_ijmpcall,2613 &feature_spm,
3173 &feature_sram,
3174 &feature_addsubiw,2614 &feature_addsubiw,
3175 &feature_mul,
3176 &feature_break,2615 &feature_break,
3177 &feature_lpm,2616 &feature_lpm,
3178 &feature_avr0,2617 &feature_mul,
2618 &feature_sram,
2619 &feature_ijmpcall,
3179 &feature_movw,2620 &feature_movw,
3180 &feature_avr4,
3181 },2621 },
3182};2622};
31832623
...@@ -3185,17 +2625,15 @@ pub const cpu_atmega8hva = Cpu{...@@ -3185,17 +2625,15 @@ pub const cpu_atmega8hva = Cpu{
3185 .name = "atmega8hva",2625 .name = "atmega8hva",
3186 .llvm_name = "atmega8hva",2626 .llvm_name = "atmega8hva",
3187 .subfeatures = &[_]*const Feature {2627 .subfeatures = &[_]*const Feature {
3188 &feature_spm,
3189 &feature_lpmx,2628 &feature_lpmx,
3190 &feature_ijmpcall,2629 &feature_spm,
3191 &feature_sram,
3192 &feature_addsubiw,2630 &feature_addsubiw,
3193 &feature_mul,
3194 &feature_break,2631 &feature_break,
3195 &feature_lpm,2632 &feature_lpm,
3196 &feature_avr0,2633 &feature_mul,
2634 &feature_sram,
2635 &feature_ijmpcall,
3197 &feature_movw,2636 &feature_movw,
3198 &feature_avr4,
3199 },2637 },
3200};2638};
32012639
...@@ -3203,17 +2641,15 @@ pub const cpu_atmega8u2 = Cpu{...@@ -3203,17 +2641,15 @@ pub const cpu_atmega8u2 = Cpu{
3203 .name = "atmega8u2",2641 .name = "atmega8u2",
3204 .llvm_name = "atmega8u2",2642 .llvm_name = "atmega8u2",
3205 .subfeatures = &[_]*const Feature {2643 .subfeatures = &[_]*const Feature {
3206 &feature_spm,
3207 &feature_lpmx,2644 &feature_lpmx,
3208 &feature_ijmpcall,2645 &feature_spm,
3209 &feature_jmpcall,
3210 &feature_sram,
3211 &feature_addsubiw,2646 &feature_addsubiw,
3212 &feature_break,2647 &feature_jmpcall,
3213 &feature_lpm,2648 &feature_lpm,
3214 &feature_avr0,2649 &feature_break,
2650 &feature_sram,
2651 &feature_ijmpcall,
3215 &feature_movw,2652 &feature_movw,
3216 &feature_avr35,
3217 },2653 },
3218};2654};
32192655
...@@ -3221,11 +2657,9 @@ pub const cpu_attiny10 = Cpu{...@@ -3221,11 +2657,9 @@ pub const cpu_attiny10 = Cpu{
3221 .name = "attiny10",2657 .name = "attiny10",
3222 .llvm_name = "attiny10",2658 .llvm_name = "attiny10",
3223 .subfeatures = &[_]*const Feature {2659 .subfeatures = &[_]*const Feature {
3224 &feature_avr0,2660 &feature_break,
3225 &feature_sram,2661 &feature_sram,
3226 &feature_tinyencoding,2662 &feature_tinyencoding,
3227 &feature_break,
3228 &feature_avrtiny,
3229 },2663 },
3230};2664};
32312665
...@@ -3233,11 +2667,9 @@ pub const cpu_attiny102 = Cpu{...@@ -3233,11 +2667,9 @@ pub const cpu_attiny102 = Cpu{
3233 .name = "attiny102",2667 .name = "attiny102",
3234 .llvm_name = "attiny102",2668 .llvm_name = "attiny102",
3235 .subfeatures = &[_]*const Feature {2669 .subfeatures = &[_]*const Feature {
3236 &feature_avr0,2670 &feature_break,
3237 &feature_sram,2671 &feature_sram,
3238 &feature_tinyencoding,2672 &feature_tinyencoding,
3239 &feature_break,
3240 &feature_avrtiny,
3241 },2673 },
3242};2674};
32432675
...@@ -3245,11 +2677,9 @@ pub const cpu_attiny104 = Cpu{...@@ -3245,11 +2677,9 @@ pub const cpu_attiny104 = Cpu{
3245 .name = "attiny104",2677 .name = "attiny104",
3246 .llvm_name = "attiny104",2678 .llvm_name = "attiny104",
3247 .subfeatures = &[_]*const Feature {2679 .subfeatures = &[_]*const Feature {
3248 &feature_avr0,2680 &feature_break,
3249 &feature_sram,2681 &feature_sram,
3250 &feature_tinyencoding,2682 &feature_tinyencoding,
3251 &feature_break,
3252 &feature_avrtiny,
3253 },2683 },
3254};2684};
32552685
...@@ -3258,8 +2688,6 @@ pub const cpu_attiny11 = Cpu{...@@ -3258,8 +2688,6 @@ pub const cpu_attiny11 = Cpu{
3258 .llvm_name = "attiny11",2688 .llvm_name = "attiny11",
3259 .subfeatures = &[_]*const Feature {2689 .subfeatures = &[_]*const Feature {
3260 &feature_lpm,2690 &feature_lpm,
3261 &feature_avr0,
3262 &feature_avr1,
3263 },2691 },
3264};2692};
32652693
...@@ -3268,8 +2696,6 @@ pub const cpu_attiny12 = Cpu{...@@ -3268,8 +2696,6 @@ pub const cpu_attiny12 = Cpu{
3268 .llvm_name = "attiny12",2696 .llvm_name = "attiny12",
3269 .subfeatures = &[_]*const Feature {2697 .subfeatures = &[_]*const Feature {
3270 &feature_lpm,2698 &feature_lpm,
3271 &feature_avr0,
3272 &feature_avr1,
3273 },2699 },
3274};2700};
32752701
...@@ -3277,16 +2703,14 @@ pub const cpu_attiny13 = Cpu{...@@ -3277,16 +2703,14 @@ pub const cpu_attiny13 = Cpu{
3277 .name = "attiny13",2703 .name = "attiny13",
3278 .llvm_name = "attiny13",2704 .llvm_name = "attiny13",
3279 .subfeatures = &[_]*const Feature {2705 .subfeatures = &[_]*const Feature {
3280 &feature_spm,
3281 &feature_lpmx,2706 &feature_lpmx,
3282 &feature_ijmpcall,2707 &feature_spm,
3283 &feature_sram,
3284 &feature_addsubiw,2708 &feature_addsubiw,
3285 &feature_break,2709 &feature_break,
3286 &feature_lpm,2710 &feature_lpm,
3287 &feature_avr0,2711 &feature_sram,
2712 &feature_ijmpcall,
3288 &feature_movw,2713 &feature_movw,
3289 &feature_avr25,
3290 },2714 },
3291};2715};
32922716
...@@ -3294,16 +2718,14 @@ pub const cpu_attiny13a = Cpu{...@@ -3294,16 +2718,14 @@ pub const cpu_attiny13a = Cpu{
3294 .name = "attiny13a",2718 .name = "attiny13a",
3295 .llvm_name = "attiny13a",2719 .llvm_name = "attiny13a",
3296 .subfeatures = &[_]*const Feature {2720 .subfeatures = &[_]*const Feature {
3297 &feature_spm,
3298 &feature_lpmx,2721 &feature_lpmx,
3299 &feature_ijmpcall,2722 &feature_spm,
3300 &feature_sram,
3301 &feature_addsubiw,2723 &feature_addsubiw,
3302 &feature_break,2724 &feature_break,
3303 &feature_lpm,2725 &feature_lpm,
3304 &feature_avr0,2726 &feature_sram,
2727 &feature_ijmpcall,
3305 &feature_movw,2728 &feature_movw,
3306 &feature_avr25,
3307 },2729 },
3308};2730};
33092731
...@@ -3312,8 +2734,6 @@ pub const cpu_attiny15 = Cpu{...@@ -3312,8 +2734,6 @@ pub const cpu_attiny15 = Cpu{
3312 .llvm_name = "attiny15",2734 .llvm_name = "attiny15",
3313 .subfeatures = &[_]*const Feature {2735 .subfeatures = &[_]*const Feature {
3314 &feature_lpm,2736 &feature_lpm,
3315 &feature_avr0,
3316 &feature_avr1,
3317 },2737 },
3318};2738};
33192739
...@@ -3321,17 +2741,15 @@ pub const cpu_attiny1634 = Cpu{...@@ -3321,17 +2741,15 @@ pub const cpu_attiny1634 = Cpu{
3321 .name = "attiny1634",2741 .name = "attiny1634",
3322 .llvm_name = "attiny1634",2742 .llvm_name = "attiny1634",
3323 .subfeatures = &[_]*const Feature {2743 .subfeatures = &[_]*const Feature {
3324 &feature_spm,
3325 &feature_lpmx,2744 &feature_lpmx,
3326 &feature_ijmpcall,2745 &feature_spm,
3327 &feature_jmpcall,
3328 &feature_sram,
3329 &feature_addsubiw,2746 &feature_addsubiw,
3330 &feature_break,2747 &feature_jmpcall,
3331 &feature_lpm,2748 &feature_lpm,
3332 &feature_avr0,2749 &feature_break,
2750 &feature_sram,
2751 &feature_ijmpcall,
3333 &feature_movw,2752 &feature_movw,
3334 &feature_avr35,
3335 },2753 },
3336};2754};
33372755
...@@ -3339,17 +2757,15 @@ pub const cpu_attiny167 = Cpu{...@@ -3339,17 +2757,15 @@ pub const cpu_attiny167 = Cpu{
3339 .name = "attiny167",2757 .name = "attiny167",
3340 .llvm_name = "attiny167",2758 .llvm_name = "attiny167",
3341 .subfeatures = &[_]*const Feature {2759 .subfeatures = &[_]*const Feature {
3342 &feature_spm,
3343 &feature_lpmx,2760 &feature_lpmx,
3344 &feature_ijmpcall,2761 &feature_spm,
3345 &feature_jmpcall,
3346 &feature_sram,
3347 &feature_addsubiw,2762 &feature_addsubiw,
3348 &feature_break,2763 &feature_jmpcall,
3349 &feature_lpm,2764 &feature_lpm,
3350 &feature_avr0,2765 &feature_break,
2766 &feature_sram,
2767 &feature_ijmpcall,
3351 &feature_movw,2768 &feature_movw,
3352 &feature_avr35,
3353 },2769 },
3354};2770};
33552771
...@@ -3357,11 +2773,9 @@ pub const cpu_attiny20 = Cpu{...@@ -3357,11 +2773,9 @@ pub const cpu_attiny20 = Cpu{
3357 .name = "attiny20",2773 .name = "attiny20",
3358 .llvm_name = "attiny20",2774 .llvm_name = "attiny20",
3359 .subfeatures = &[_]*const Feature {2775 .subfeatures = &[_]*const Feature {
3360 &feature_avr0,2776 &feature_break,
3361 &feature_sram,2777 &feature_sram,
3362 &feature_tinyencoding,2778 &feature_tinyencoding,
3363 &feature_break,
3364 &feature_avrtiny,
3365 },2779 },
3366};2780};
33672781
...@@ -3369,12 +2783,10 @@ pub const cpu_attiny22 = Cpu{...@@ -3369,12 +2783,10 @@ pub const cpu_attiny22 = Cpu{
3369 .name = "attiny22",2783 .name = "attiny22",
3370 .llvm_name = "attiny22",2784 .llvm_name = "attiny22",
3371 .subfeatures = &[_]*const Feature {2785 .subfeatures = &[_]*const Feature {
3372 &feature_ijmpcall,
3373 &feature_sram,
3374 &feature_addsubiw,2786 &feature_addsubiw,
3375 &feature_lpm,2787 &feature_lpm,
3376 &feature_avr0,2788 &feature_sram,
3377 &feature_avr2,2789 &feature_ijmpcall,
3378 },2790 },
3379};2791};
33802792
...@@ -3382,16 +2794,14 @@ pub const cpu_attiny2313 = Cpu{...@@ -3382,16 +2794,14 @@ pub const cpu_attiny2313 = Cpu{
3382 .name = "attiny2313",2794 .name = "attiny2313",
3383 .llvm_name = "attiny2313",2795 .llvm_name = "attiny2313",
3384 .subfeatures = &[_]*const Feature {2796 .subfeatures = &[_]*const Feature {
3385 &feature_spm,
3386 &feature_lpmx,2797 &feature_lpmx,
3387 &feature_ijmpcall,2798 &feature_spm,
3388 &feature_sram,
3389 &feature_addsubiw,2799 &feature_addsubiw,
3390 &feature_break,2800 &feature_break,
3391 &feature_lpm,2801 &feature_lpm,
3392 &feature_avr0,2802 &feature_sram,
2803 &feature_ijmpcall,
3393 &feature_movw,2804 &feature_movw,
3394 &feature_avr25,
3395 },2805 },
3396};2806};
33972807
...@@ -3399,16 +2809,14 @@ pub const cpu_attiny2313a = Cpu{...@@ -3399,16 +2809,14 @@ pub const cpu_attiny2313a = Cpu{
3399 .name = "attiny2313a",2809 .name = "attiny2313a",
3400 .llvm_name = "attiny2313a",2810 .llvm_name = "attiny2313a",
3401 .subfeatures = &[_]*const Feature {2811 .subfeatures = &[_]*const Feature {
3402 &feature_spm,
3403 &feature_lpmx,2812 &feature_lpmx,
3404 &feature_ijmpcall,2813 &feature_spm,
3405 &feature_sram,
3406 &feature_addsubiw,2814 &feature_addsubiw,
3407 &feature_break,2815 &feature_break,
3408 &feature_lpm,2816 &feature_lpm,
3409 &feature_avr0,2817 &feature_sram,
2818 &feature_ijmpcall,
3410 &feature_movw,2819 &feature_movw,
3411 &feature_avr25,
3412 },2820 },
3413};2821};
34142822
...@@ -3416,16 +2824,14 @@ pub const cpu_attiny24 = Cpu{...@@ -3416,16 +2824,14 @@ pub const cpu_attiny24 = Cpu{
3416 .name = "attiny24",2824 .name = "attiny24",
3417 .llvm_name = "attiny24",2825 .llvm_name = "attiny24",
3418 .subfeatures = &[_]*const Feature {2826 .subfeatures = &[_]*const Feature {
3419 &feature_spm,
3420 &feature_lpmx,2827 &feature_lpmx,
3421 &feature_ijmpcall,2828 &feature_spm,
3422 &feature_sram,
3423 &feature_addsubiw,2829 &feature_addsubiw,
3424 &feature_break,2830 &feature_break,
3425 &feature_lpm,2831 &feature_lpm,
3426 &feature_avr0,2832 &feature_sram,
2833 &feature_ijmpcall,
3427 &feature_movw,2834 &feature_movw,
3428 &feature_avr25,
3429 },2835 },
3430};2836};
34312837
...@@ -3433,16 +2839,14 @@ pub const cpu_attiny24a = Cpu{...@@ -3433,16 +2839,14 @@ pub const cpu_attiny24a = Cpu{
3433 .name = "attiny24a",2839 .name = "attiny24a",
3434 .llvm_name = "attiny24a",2840 .llvm_name = "attiny24a",
3435 .subfeatures = &[_]*const Feature {2841 .subfeatures = &[_]*const Feature {
3436 &feature_spm,
3437 &feature_lpmx,2842 &feature_lpmx,
3438 &feature_ijmpcall,2843 &feature_spm,
3439 &feature_sram,
3440 &feature_addsubiw,2844 &feature_addsubiw,
3441 &feature_break,2845 &feature_break,
3442 &feature_lpm,2846 &feature_lpm,
3443 &feature_avr0,2847 &feature_sram,
2848 &feature_ijmpcall,
3444 &feature_movw,2849 &feature_movw,
3445 &feature_avr25,
3446 },2850 },
3447};2851};
34482852
...@@ -3450,16 +2854,14 @@ pub const cpu_attiny25 = Cpu{...@@ -3450,16 +2854,14 @@ pub const cpu_attiny25 = Cpu{
3450 .name = "attiny25",2854 .name = "attiny25",
3451 .llvm_name = "attiny25",2855 .llvm_name = "attiny25",
3452 .subfeatures = &[_]*const Feature {2856 .subfeatures = &[_]*const Feature {
3453 &feature_spm,
3454 &feature_lpmx,2857 &feature_lpmx,
3455 &feature_ijmpcall,2858 &feature_spm,
3456 &feature_sram,
3457 &feature_addsubiw,2859 &feature_addsubiw,
3458 &feature_break,2860 &feature_break,
3459 &feature_lpm,2861 &feature_lpm,
3460 &feature_avr0,2862 &feature_sram,
2863 &feature_ijmpcall,
3461 &feature_movw,2864 &feature_movw,
3462 &feature_avr25,
3463 },2865 },
3464};2866};
34652867
...@@ -3467,12 +2869,10 @@ pub const cpu_attiny26 = Cpu{...@@ -3467,12 +2869,10 @@ pub const cpu_attiny26 = Cpu{
3467 .name = "attiny26",2869 .name = "attiny26",
3468 .llvm_name = "attiny26",2870 .llvm_name = "attiny26",
3469 .subfeatures = &[_]*const Feature {2871 .subfeatures = &[_]*const Feature {
3470 &feature_ijmpcall,
3471 &feature_sram,
3472 &feature_addsubiw,2872 &feature_addsubiw,
3473 &feature_lpm,2873 &feature_lpm,
3474 &feature_avr0,2874 &feature_sram,
3475 &feature_avr2,2875 &feature_ijmpcall,
3476 &feature_lpmx,2876 &feature_lpmx,
3477 },2877 },
3478};2878};
...@@ -3481,16 +2881,14 @@ pub const cpu_attiny261 = Cpu{...@@ -3481,16 +2881,14 @@ pub const cpu_attiny261 = Cpu{
3481 .name = "attiny261",2881 .name = "attiny261",
3482 .llvm_name = "attiny261",2882 .llvm_name = "attiny261",
3483 .subfeatures = &[_]*const Feature {2883 .subfeatures = &[_]*const Feature {
3484 &feature_spm,
3485 &feature_lpmx,2884 &feature_lpmx,
3486 &feature_ijmpcall,2885 &feature_spm,
3487 &feature_sram,
3488 &feature_addsubiw,2886 &feature_addsubiw,
3489 &feature_break,2887 &feature_break,
3490 &feature_lpm,2888 &feature_lpm,
3491 &feature_avr0,2889 &feature_sram,
2890 &feature_ijmpcall,
3492 &feature_movw,2891 &feature_movw,
3493 &feature_avr25,
3494 },2892 },
3495};2893};
34962894
...@@ -3498,16 +2896,14 @@ pub const cpu_attiny261a = Cpu{...@@ -3498,16 +2896,14 @@ pub const cpu_attiny261a = Cpu{
3498 .name = "attiny261a",2896 .name = "attiny261a",
3499 .llvm_name = "attiny261a",2897 .llvm_name = "attiny261a",
3500 .subfeatures = &[_]*const Feature {2898 .subfeatures = &[_]*const Feature {
3501 &feature_spm,
3502 &feature_lpmx,2899 &feature_lpmx,
3503 &feature_ijmpcall,2900 &feature_spm,
3504 &feature_sram,
3505 &feature_addsubiw,2901 &feature_addsubiw,
3506 &feature_break,2902 &feature_break,
3507 &feature_lpm,2903 &feature_lpm,
3508 &feature_avr0,2904 &feature_sram,
2905 &feature_ijmpcall,
3509 &feature_movw,2906 &feature_movw,
3510 &feature_avr25,
3511 },2907 },
3512};2908};
35132909
...@@ -3516,8 +2912,6 @@ pub const cpu_attiny28 = Cpu{...@@ -3516,8 +2912,6 @@ pub const cpu_attiny28 = Cpu{
3516 .llvm_name = "attiny28",2912 .llvm_name = "attiny28",
3517 .subfeatures = &[_]*const Feature {2913 .subfeatures = &[_]*const Feature {
3518 &feature_lpm,2914 &feature_lpm,
3519 &feature_avr0,
3520 &feature_avr1,
3521 },2915 },
3522};2916};
35232917
...@@ -3525,11 +2919,9 @@ pub const cpu_attiny4 = Cpu{...@@ -3525,11 +2919,9 @@ pub const cpu_attiny4 = Cpu{
3525 .name = "attiny4",2919 .name = "attiny4",
3526 .llvm_name = "attiny4",2920 .llvm_name = "attiny4",
3527 .subfeatures = &[_]*const Feature {2921 .subfeatures = &[_]*const Feature {
3528 &feature_avr0,2922 &feature_break,
3529 &feature_sram,2923 &feature_sram,
3530 &feature_tinyencoding,2924 &feature_tinyencoding,
3531 &feature_break,
3532 &feature_avrtiny,
3533 },2925 },
3534};2926};
35352927
...@@ -3537,11 +2929,9 @@ pub const cpu_attiny40 = Cpu{...@@ -3537,11 +2929,9 @@ pub const cpu_attiny40 = Cpu{
3537 .name = "attiny40",2929 .name = "attiny40",
3538 .llvm_name = "attiny40",2930 .llvm_name = "attiny40",
3539 .subfeatures = &[_]*const Feature {2931 .subfeatures = &[_]*const Feature {
3540 &feature_avr0,2932 &feature_break,
3541 &feature_sram,2933 &feature_sram,
3542 &feature_tinyencoding,2934 &feature_tinyencoding,
3543 &feature_break,
3544 &feature_avrtiny,
3545 },2935 },
3546};2936};
35472937
...@@ -3549,16 +2939,14 @@ pub const cpu_attiny4313 = Cpu{...@@ -3549,16 +2939,14 @@ pub const cpu_attiny4313 = Cpu{
3549 .name = "attiny4313",2939 .name = "attiny4313",
3550 .llvm_name = "attiny4313",2940 .llvm_name = "attiny4313",
3551 .subfeatures = &[_]*const Feature {2941 .subfeatures = &[_]*const Feature {
3552 &feature_spm,
3553 &feature_lpmx,2942 &feature_lpmx,
3554 &feature_ijmpcall,2943 &feature_spm,
3555 &feature_sram,
3556 &feature_addsubiw,2944 &feature_addsubiw,
3557 &feature_break,2945 &feature_break,
3558 &feature_lpm,2946 &feature_lpm,
3559 &feature_avr0,2947 &feature_sram,
2948 &feature_ijmpcall,
3560 &feature_movw,2949 &feature_movw,
3561 &feature_avr25,
3562 },2950 },
3563};2951};
35642952
...@@ -3566,16 +2954,14 @@ pub const cpu_attiny43u = Cpu{...@@ -3566,16 +2954,14 @@ pub const cpu_attiny43u = Cpu{
3566 .name = "attiny43u",2954 .name = "attiny43u",
3567 .llvm_name = "attiny43u",2955 .llvm_name = "attiny43u",
3568 .subfeatures = &[_]*const Feature {2956 .subfeatures = &[_]*const Feature {
3569 &feature_spm,
3570 &feature_lpmx,2957 &feature_lpmx,
3571 &feature_ijmpcall,2958 &feature_spm,
3572 &feature_sram,
3573 &feature_addsubiw,2959 &feature_addsubiw,
3574 &feature_break,2960 &feature_break,
3575 &feature_lpm,2961 &feature_lpm,
3576 &feature_avr0,2962 &feature_sram,
2963 &feature_ijmpcall,
3577 &feature_movw,2964 &feature_movw,
3578 &feature_avr25,
3579 },2965 },
3580};2966};
35812967
...@@ -3583,16 +2969,14 @@ pub const cpu_attiny44 = Cpu{...@@ -3583,16 +2969,14 @@ pub const cpu_attiny44 = Cpu{
3583 .name = "attiny44",2969 .name = "attiny44",
3584 .llvm_name = "attiny44",2970 .llvm_name = "attiny44",
3585 .subfeatures = &[_]*const Feature {2971 .subfeatures = &[_]*const Feature {
3586 &feature_spm,
3587 &feature_lpmx,2972 &feature_lpmx,
3588 &feature_ijmpcall,2973 &feature_spm,
3589 &feature_sram,
3590 &feature_addsubiw,2974 &feature_addsubiw,
3591 &feature_break,2975 &feature_break,
3592 &feature_lpm,2976 &feature_lpm,
3593 &feature_avr0,2977 &feature_sram,
2978 &feature_ijmpcall,
3594 &feature_movw,2979 &feature_movw,
3595 &feature_avr25,
3596 },2980 },
3597};2981};
35982982
...@@ -3600,16 +2984,14 @@ pub const cpu_attiny44a = Cpu{...@@ -3600,16 +2984,14 @@ pub const cpu_attiny44a = Cpu{
3600 .name = "attiny44a",2984 .name = "attiny44a",
3601 .llvm_name = "attiny44a",2985 .llvm_name = "attiny44a",
3602 .subfeatures = &[_]*const Feature {2986 .subfeatures = &[_]*const Feature {
3603 &feature_spm,
3604 &feature_lpmx,2987 &feature_lpmx,
3605 &feature_ijmpcall,2988 &feature_spm,
3606 &feature_sram,
3607 &feature_addsubiw,2989 &feature_addsubiw,
3608 &feature_break,2990 &feature_break,
3609 &feature_lpm,2991 &feature_lpm,
3610 &feature_avr0,2992 &feature_sram,
2993 &feature_ijmpcall,
3611 &feature_movw,2994 &feature_movw,
3612 &feature_avr25,
3613 },2995 },
3614};2996};
36152997
...@@ -3617,16 +2999,14 @@ pub const cpu_attiny45 = Cpu{...@@ -3617,16 +2999,14 @@ pub const cpu_attiny45 = Cpu{
3617 .name = "attiny45",2999 .name = "attiny45",
3618 .llvm_name = "attiny45",3000 .llvm_name = "attiny45",
3619 .subfeatures = &[_]*const Feature {3001 .subfeatures = &[_]*const Feature {
3620 &feature_spm,
3621 &feature_lpmx,3002 &feature_lpmx,
3622 &feature_ijmpcall,3003 &feature_spm,
3623 &feature_sram,
3624 &feature_addsubiw,3004 &feature_addsubiw,
3625 &feature_break,3005 &feature_break,
3626 &feature_lpm,3006 &feature_lpm,
3627 &feature_avr0,3007 &feature_sram,
3008 &feature_ijmpcall,
3628 &feature_movw,3009 &feature_movw,
3629 &feature_avr25,
3630 },3010 },
3631};3011};
36323012
...@@ -3634,16 +3014,14 @@ pub const cpu_attiny461 = Cpu{...@@ -3634,16 +3014,14 @@ pub const cpu_attiny461 = Cpu{
3634 .name = "attiny461",3014 .name = "attiny461",
3635 .llvm_name = "attiny461",3015 .llvm_name = "attiny461",
3636 .subfeatures = &[_]*const Feature {3016 .subfeatures = &[_]*const Feature {
3637 &feature_spm,
3638 &feature_lpmx,3017 &feature_lpmx,
3639 &feature_ijmpcall,3018 &feature_spm,
3640 &feature_sram,
3641 &feature_addsubiw,3019 &feature_addsubiw,
3642 &feature_break,3020 &feature_break,
3643 &feature_lpm,3021 &feature_lpm,
3644 &feature_avr0,3022 &feature_sram,
3023 &feature_ijmpcall,
3645 &feature_movw,3024 &feature_movw,
3646 &feature_avr25,
3647 },3025 },
3648};3026};
36493027
...@@ -3651,16 +3029,14 @@ pub const cpu_attiny461a = Cpu{...@@ -3651,16 +3029,14 @@ pub const cpu_attiny461a = Cpu{
3651 .name = "attiny461a",3029 .name = "attiny461a",
3652 .llvm_name = "attiny461a",3030 .llvm_name = "attiny461a",
3653 .subfeatures = &[_]*const Feature {3031 .subfeatures = &[_]*const Feature {
3654 &feature_spm,
3655 &feature_lpmx,3032 &feature_lpmx,
3656 &feature_ijmpcall,3033 &feature_spm,
3657 &feature_sram,
3658 &feature_addsubiw,3034 &feature_addsubiw,
3659 &feature_break,3035 &feature_break,
3660 &feature_lpm,3036 &feature_lpm,
3661 &feature_avr0,3037 &feature_sram,
3038 &feature_ijmpcall,
3662 &feature_movw,3039 &feature_movw,
3663 &feature_avr25,
3664 },3040 },
3665};3041};
36663042
...@@ -3668,16 +3044,14 @@ pub const cpu_attiny48 = Cpu{...@@ -3668,16 +3044,14 @@ pub const cpu_attiny48 = Cpu{
3668 .name = "attiny48",3044 .name = "attiny48",
3669 .llvm_name = "attiny48",3045 .llvm_name = "attiny48",
3670 .subfeatures = &[_]*const Feature {3046 .subfeatures = &[_]*const Feature {
3671 &feature_spm,
3672 &feature_lpmx,3047 &feature_lpmx,
3673 &feature_ijmpcall,3048 &feature_spm,
3674 &feature_sram,
3675 &feature_addsubiw,3049 &feature_addsubiw,
3676 &feature_break,3050 &feature_break,
3677 &feature_lpm,3051 &feature_lpm,
3678 &feature_avr0,3052 &feature_sram,
3053 &feature_ijmpcall,
3679 &feature_movw,3054 &feature_movw,
3680 &feature_avr25,
3681 },3055 },
3682};3056};
36833057
...@@ -3685,11 +3059,9 @@ pub const cpu_attiny5 = Cpu{...@@ -3685,11 +3059,9 @@ pub const cpu_attiny5 = Cpu{
3685 .name = "attiny5",3059 .name = "attiny5",
3686 .llvm_name = "attiny5",3060 .llvm_name = "attiny5",
3687 .subfeatures = &[_]*const Feature {3061 .subfeatures = &[_]*const Feature {
3688 &feature_avr0,3062 &feature_break,
3689 &feature_sram,3063 &feature_sram,
3690 &feature_tinyencoding,3064 &feature_tinyencoding,
3691 &feature_break,
3692 &feature_avrtiny,
3693 },3065 },
3694};3066};
36953067
...@@ -3697,16 +3069,14 @@ pub const cpu_attiny828 = Cpu{...@@ -3697,16 +3069,14 @@ pub const cpu_attiny828 = Cpu{
3697 .name = "attiny828",3069 .name = "attiny828",
3698 .llvm_name = "attiny828",3070 .llvm_name = "attiny828",
3699 .subfeatures = &[_]*const Feature {3071 .subfeatures = &[_]*const Feature {
3700 &feature_spm,
3701 &feature_lpmx,3072 &feature_lpmx,
3702 &feature_ijmpcall,3073 &feature_spm,
3703 &feature_sram,
3704 &feature_addsubiw,3074 &feature_addsubiw,
3705 &feature_break,3075 &feature_break,
3706 &feature_lpm,3076 &feature_lpm,
3707 &feature_avr0,3077 &feature_sram,
3078 &feature_ijmpcall,
3708 &feature_movw,3079 &feature_movw,
3709 &feature_avr25,
3710 },3080 },
3711};3081};
37123082
...@@ -3714,16 +3084,14 @@ pub const cpu_attiny84 = Cpu{...@@ -3714,16 +3084,14 @@ pub const cpu_attiny84 = Cpu{
3714 .name = "attiny84",3084 .name = "attiny84",
3715 .llvm_name = "attiny84",3085 .llvm_name = "attiny84",
3716 .subfeatures = &[_]*const Feature {3086 .subfeatures = &[_]*const Feature {
3717 &feature_spm,
3718 &feature_lpmx,3087 &feature_lpmx,
3719 &feature_ijmpcall,3088 &feature_spm,
3720 &feature_sram,
3721 &feature_addsubiw,3089 &feature_addsubiw,
3722 &feature_break,3090 &feature_break,
3723 &feature_lpm,3091 &feature_lpm,
3724 &feature_avr0,3092 &feature_sram,
3093 &feature_ijmpcall,
3725 &feature_movw,3094 &feature_movw,
3726 &feature_avr25,
3727 },3095 },
3728};3096};
37293097
...@@ -3731,16 +3099,14 @@ pub const cpu_attiny84a = Cpu{...@@ -3731,16 +3099,14 @@ pub const cpu_attiny84a = Cpu{
3731 .name = "attiny84a",3099 .name = "attiny84a",
3732 .llvm_name = "attiny84a",3100 .llvm_name = "attiny84a",
3733 .subfeatures = &[_]*const Feature {3101 .subfeatures = &[_]*const Feature {
3734 &feature_spm,
3735 &feature_lpmx,3102 &feature_lpmx,
3736 &feature_ijmpcall,3103 &feature_spm,
3737 &feature_sram,
3738 &feature_addsubiw,3104 &feature_addsubiw,
3739 &feature_break,3105 &feature_break,
3740 &feature_lpm,3106 &feature_lpm,
3741 &feature_avr0,3107 &feature_sram,
3108 &feature_ijmpcall,
3742 &feature_movw,3109 &feature_movw,
3743 &feature_avr25,
3744 },3110 },
3745};3111};
37463112
...@@ -3748,16 +3114,14 @@ pub const cpu_attiny85 = Cpu{...@@ -3748,16 +3114,14 @@ pub const cpu_attiny85 = Cpu{
3748 .name = "attiny85",3114 .name = "attiny85",
3749 .llvm_name = "attiny85",3115 .llvm_name = "attiny85",
3750 .subfeatures = &[_]*const Feature {3116 .subfeatures = &[_]*const Feature {
3751 &feature_spm,
3752 &feature_lpmx,3117 &feature_lpmx,
3753 &feature_ijmpcall,3118 &feature_spm,
3754 &feature_sram,
3755 &feature_addsubiw,3119 &feature_addsubiw,
3756 &feature_break,3120 &feature_break,
3757 &feature_lpm,3121 &feature_lpm,
3758 &feature_avr0,3122 &feature_sram,
3123 &feature_ijmpcall,
3759 &feature_movw,3124 &feature_movw,
3760 &feature_avr25,
3761 },3125 },
3762};3126};
37633127
...@@ -3765,16 +3129,14 @@ pub const cpu_attiny861 = Cpu{...@@ -3765,16 +3129,14 @@ pub const cpu_attiny861 = Cpu{
3765 .name = "attiny861",3129 .name = "attiny861",
3766 .llvm_name = "attiny861",3130 .llvm_name = "attiny861",
3767 .subfeatures = &[_]*const Feature {3131 .subfeatures = &[_]*const Feature {
3768 &feature_spm,
3769 &feature_lpmx,3132 &feature_lpmx,
3770 &feature_ijmpcall,3133 &feature_spm,
3771 &feature_sram,
3772 &feature_addsubiw,3134 &feature_addsubiw,
3773 &feature_break,3135 &feature_break,
3774 &feature_lpm,3136 &feature_lpm,
3775 &feature_avr0,3137 &feature_sram,
3138 &feature_ijmpcall,
3776 &feature_movw,3139 &feature_movw,
3777 &feature_avr25,
3778 },3140 },
3779};3141};
37803142
...@@ -3782,16 +3144,14 @@ pub const cpu_attiny861a = Cpu{...@@ -3782,16 +3144,14 @@ pub const cpu_attiny861a = Cpu{
3782 .name = "attiny861a",3144 .name = "attiny861a",
3783 .llvm_name = "attiny861a",3145 .llvm_name = "attiny861a",
3784 .subfeatures = &[_]*const Feature {3146 .subfeatures = &[_]*const Feature {
3785 &feature_spm,
3786 &feature_lpmx,3147 &feature_lpmx,
3787 &feature_ijmpcall,3148 &feature_spm,
3788 &feature_sram,
3789 &feature_addsubiw,3149 &feature_addsubiw,
3790 &feature_break,3150 &feature_break,
3791 &feature_lpm,3151 &feature_lpm,
3792 &feature_avr0,3152 &feature_sram,
3153 &feature_ijmpcall,
3793 &feature_movw,3154 &feature_movw,
3794 &feature_avr25,
3795 },3155 },
3796};3156};
37973157
...@@ -3799,16 +3159,14 @@ pub const cpu_attiny87 = Cpu{...@@ -3799,16 +3159,14 @@ pub const cpu_attiny87 = Cpu{
3799 .name = "attiny87",3159 .name = "attiny87",
3800 .llvm_name = "attiny87",3160 .llvm_name = "attiny87",
3801 .subfeatures = &[_]*const Feature {3161 .subfeatures = &[_]*const Feature {
3802 &feature_spm,
3803 &feature_lpmx,3162 &feature_lpmx,
3804 &feature_ijmpcall,3163 &feature_spm,
3805 &feature_sram,
3806 &feature_addsubiw,3164 &feature_addsubiw,
3807 &feature_break,3165 &feature_break,
3808 &feature_lpm,3166 &feature_lpm,
3809 &feature_avr0,3167 &feature_sram,
3168 &feature_ijmpcall,
3810 &feature_movw,3169 &feature_movw,
3811 &feature_avr25,
3812 },3170 },
3813};3171};
38143172
...@@ -3816,16 +3174,14 @@ pub const cpu_attiny88 = Cpu{...@@ -3816,16 +3174,14 @@ pub const cpu_attiny88 = Cpu{
3816 .name = "attiny88",3174 .name = "attiny88",
3817 .llvm_name = "attiny88",3175 .llvm_name = "attiny88",
3818 .subfeatures = &[_]*const Feature {3176 .subfeatures = &[_]*const Feature {
3819 &feature_spm,
3820 &feature_lpmx,3177 &feature_lpmx,
3821 &feature_ijmpcall,3178 &feature_spm,
3822 &feature_sram,
3823 &feature_addsubiw,3179 &feature_addsubiw,
3824 &feature_break,3180 &feature_break,
3825 &feature_lpm,3181 &feature_lpm,
3826 &feature_avr0,3182 &feature_sram,
3183 &feature_ijmpcall,
3827 &feature_movw,3184 &feature_movw,
3828 &feature_avr25,
3829 },3185 },
3830};3186};
38313187
...@@ -3833,11 +3189,9 @@ pub const cpu_attiny9 = Cpu{...@@ -3833,11 +3189,9 @@ pub const cpu_attiny9 = Cpu{
3833 .name = "attiny9",3189 .name = "attiny9",
3834 .llvm_name = "attiny9",3190 .llvm_name = "attiny9",
3835 .subfeatures = &[_]*const Feature {3191 .subfeatures = &[_]*const Feature {
3836 &feature_avr0,3192 &feature_break,
3837 &feature_sram,3193 &feature_sram,
3838 &feature_tinyencoding,3194 &feature_tinyencoding,
3839 &feature_break,
3840 &feature_avrtiny,
3841 },3195 },
3842};3196};
38433197
...@@ -3845,23 +3199,21 @@ pub const cpu_atxmega128a1 = Cpu{...@@ -3845,23 +3199,21 @@ pub const cpu_atxmega128a1 = Cpu{
3845 .name = "atxmega128a1",3199 .name = "atxmega128a1",
3846 .llvm_name = "atxmega128a1",3200 .llvm_name = "atxmega128a1",
3847 .subfeatures = &[_]*const Feature {3201 .subfeatures = &[_]*const Feature {
3848 &feature_spm,
3849 &feature_lpmx,3202 &feature_lpmx,
3850 &feature_des,3203 &feature_spm,
3851 &feature_ijmpcall,
3852 &feature_jmpcall,
3853 &feature_sram,
3854 &feature_addsubiw,3204 &feature_addsubiw,
3205 &feature_jmpcall,
3206 &feature_lpm,
3207 &feature_break,
3208 &feature_mul,
3855 &feature_elpm,3209 &feature_elpm,
3856 &feature_eijmpcall,3210 &feature_eijmpcall,
3857 &feature_mul,
3858 &feature_break,
3859 &feature_lpm,
3860 &feature_elpmx,3211 &feature_elpmx,
3861 &feature_avr0,3212 &feature_sram,
3213 &feature_des,
3214 &feature_ijmpcall,
3862 &feature_movw,3215 &feature_movw,
3863 &feature_spmx,3216 &feature_spmx,
3864 &feature_xmega,
3865 },3217 },
3866};3218};
38673219
...@@ -3869,24 +3221,22 @@ pub const cpu_atxmega128a1u = Cpu{...@@ -3869,24 +3221,22 @@ pub const cpu_atxmega128a1u = Cpu{
3869 .name = "atxmega128a1u",3221 .name = "atxmega128a1u",
3870 .llvm_name = "atxmega128a1u",3222 .llvm_name = "atxmega128a1u",
3871 .subfeatures = &[_]*const Feature {3223 .subfeatures = &[_]*const Feature {
3872 &feature_spm,
3873 &feature_lpmx,
3874 &feature_des,
3875 &feature_ijmpcall,
3876 &feature_jmpcall,
3877 &feature_sram,
3878 &feature_rmw,3224 &feature_rmw,
3225 &feature_lpmx,
3226 &feature_spm,
3879 &feature_addsubiw,3227 &feature_addsubiw,
3228 &feature_jmpcall,
3229 &feature_lpm,
3230 &feature_break,
3231 &feature_mul,
3880 &feature_elpm,3232 &feature_elpm,
3881 &feature_eijmpcall,3233 &feature_eijmpcall,
3882 &feature_mul,
3883 &feature_break,
3884 &feature_lpm,
3885 &feature_elpmx,3234 &feature_elpmx,
3886 &feature_avr0,3235 &feature_sram,
3887 &feature_movw,3236 &feature_des,
3888 &feature_spmx,3237 &feature_ijmpcall,
3889 &feature_xmegau,3238 &feature_movw,
3239 &feature_spmx,
3890 },3240 },
3891};3241};
38923242
...@@ -3894,23 +3244,21 @@ pub const cpu_atxmega128a3 = Cpu{...@@ -3894,23 +3244,21 @@ pub const cpu_atxmega128a3 = Cpu{
3894 .name = "atxmega128a3",3244 .name = "atxmega128a3",
3895 .llvm_name = "atxmega128a3",3245 .llvm_name = "atxmega128a3",
3896 .subfeatures = &[_]*const Feature {3246 .subfeatures = &[_]*const Feature {
3897 &feature_spm,
3898 &feature_lpmx,3247 &feature_lpmx,
3899 &feature_des,3248 &feature_spm,
3900 &feature_ijmpcall,
3901 &feature_jmpcall,
3902 &feature_sram,
3903 &feature_addsubiw,3249 &feature_addsubiw,
3250 &feature_jmpcall,
3251 &feature_lpm,
3252 &feature_break,
3253 &feature_mul,
3904 &feature_elpm,3254 &feature_elpm,
3905 &feature_eijmpcall,3255 &feature_eijmpcall,
3906 &feature_mul,
3907 &feature_break,
3908 &feature_lpm,
3909 &feature_elpmx,3256 &feature_elpmx,
3910 &feature_avr0,3257 &feature_sram,
3258 &feature_des,
3259 &feature_ijmpcall,
3911 &feature_movw,3260 &feature_movw,
3912 &feature_spmx,3261 &feature_spmx,
3913 &feature_xmega,
3914 },3262 },
3915};3263};
39163264
...@@ -3918,24 +3266,22 @@ pub const cpu_atxmega128a3u = Cpu{...@@ -3918,24 +3266,22 @@ pub const cpu_atxmega128a3u = Cpu{
3918 .name = "atxmega128a3u",3266 .name = "atxmega128a3u",
3919 .llvm_name = "atxmega128a3u",3267 .llvm_name = "atxmega128a3u",
3920 .subfeatures = &[_]*const Feature {3268 .subfeatures = &[_]*const Feature {
3921 &feature_spm,
3922 &feature_lpmx,
3923 &feature_des,
3924 &feature_ijmpcall,
3925 &feature_jmpcall,
3926 &feature_sram,
3927 &feature_rmw,3269 &feature_rmw,
3270 &feature_lpmx,
3271 &feature_spm,
3928 &feature_addsubiw,3272 &feature_addsubiw,
3273 &feature_jmpcall,
3274 &feature_lpm,
3275 &feature_break,
3276 &feature_mul,
3929 &feature_elpm,3277 &feature_elpm,
3930 &feature_eijmpcall,3278 &feature_eijmpcall,
3931 &feature_mul,
3932 &feature_break,
3933 &feature_lpm,
3934 &feature_elpmx,3279 &feature_elpmx,
3935 &feature_avr0,3280 &feature_sram,
3281 &feature_des,
3282 &feature_ijmpcall,
3936 &feature_movw,3283 &feature_movw,
3937 &feature_spmx,3284 &feature_spmx,
3938 &feature_xmegau,
3939 },3285 },
3940};3286};
39413287
...@@ -3943,24 +3289,22 @@ pub const cpu_atxmega128a4u = Cpu{...@@ -3943,24 +3289,22 @@ pub const cpu_atxmega128a4u = Cpu{
3943 .name = "atxmega128a4u",3289 .name = "atxmega128a4u",
3944 .llvm_name = "atxmega128a4u",3290 .llvm_name = "atxmega128a4u",
3945 .subfeatures = &[_]*const Feature {3291 .subfeatures = &[_]*const Feature {
3946 &feature_spm,
3947 &feature_lpmx,
3948 &feature_des,
3949 &feature_ijmpcall,
3950 &feature_jmpcall,
3951 &feature_sram,
3952 &feature_rmw,3292 &feature_rmw,
3293 &feature_lpmx,
3294 &feature_spm,
3953 &feature_addsubiw,3295 &feature_addsubiw,
3296 &feature_jmpcall,
3297 &feature_lpm,
3298 &feature_break,
3299 &feature_mul,
3954 &feature_elpm,3300 &feature_elpm,
3955 &feature_eijmpcall,3301 &feature_eijmpcall,
3956 &feature_mul,
3957 &feature_break,
3958 &feature_lpm,
3959 &feature_elpmx,3302 &feature_elpmx,
3960 &feature_avr0,3303 &feature_sram,
3304 &feature_des,
3305 &feature_ijmpcall,
3961 &feature_movw,3306 &feature_movw,
3962 &feature_spmx,3307 &feature_spmx,
3963 &feature_xmegau,
3964 },3308 },
3965};3309};
39663310
...@@ -3968,24 +3312,22 @@ pub const cpu_atxmega128b1 = Cpu{...@@ -3968,24 +3312,22 @@ pub const cpu_atxmega128b1 = Cpu{
3968 .name = "atxmega128b1",3312 .name = "atxmega128b1",
3969 .llvm_name = "atxmega128b1",3313 .llvm_name = "atxmega128b1",
3970 .subfeatures = &[_]*const Feature {3314 .subfeatures = &[_]*const Feature {
3971 &feature_spm,
3972 &feature_lpmx,
3973 &feature_des,
3974 &feature_ijmpcall,
3975 &feature_jmpcall,
3976 &feature_sram,
3977 &feature_rmw,3315 &feature_rmw,
3316 &feature_lpmx,
3317 &feature_spm,
3978 &feature_addsubiw,3318 &feature_addsubiw,
3319 &feature_jmpcall,
3320 &feature_lpm,
3321 &feature_break,
3322 &feature_mul,
3979 &feature_elpm,3323 &feature_elpm,
3980 &feature_eijmpcall,3324 &feature_eijmpcall,
3981 &feature_mul,
3982 &feature_break,
3983 &feature_lpm,
3984 &feature_elpmx,3325 &feature_elpmx,
3985 &feature_avr0,3326 &feature_sram,
3327 &feature_des,
3328 &feature_ijmpcall,
3986 &feature_movw,3329 &feature_movw,
3987 &feature_spmx,3330 &feature_spmx,
3988 &feature_xmegau,
3989 },3331 },
3990};3332};
39913333
...@@ -3993,24 +3335,22 @@ pub const cpu_atxmega128b3 = Cpu{...@@ -3993,24 +3335,22 @@ pub const cpu_atxmega128b3 = Cpu{
3993 .name = "atxmega128b3",3335 .name = "atxmega128b3",
3994 .llvm_name = "atxmega128b3",3336 .llvm_name = "atxmega128b3",
3995 .subfeatures = &[_]*const Feature {3337 .subfeatures = &[_]*const Feature {
3996 &feature_spm,
3997 &feature_lpmx,
3998 &feature_des,
3999 &feature_ijmpcall,
4000 &feature_jmpcall,
4001 &feature_sram,
4002 &feature_rmw,3338 &feature_rmw,
3339 &feature_lpmx,
3340 &feature_spm,
4003 &feature_addsubiw,3341 &feature_addsubiw,
3342 &feature_jmpcall,
3343 &feature_lpm,
3344 &feature_break,
3345 &feature_mul,
4004 &feature_elpm,3346 &feature_elpm,
4005 &feature_eijmpcall,3347 &feature_eijmpcall,
4006 &feature_mul,
4007 &feature_break,
4008 &feature_lpm,
4009 &feature_elpmx,3348 &feature_elpmx,
4010 &feature_avr0,3349 &feature_sram,
3350 &feature_des,
3351 &feature_ijmpcall,
4011 &feature_movw,3352 &feature_movw,
4012 &feature_spmx,3353 &feature_spmx,
4013 &feature_xmegau,
4014 },3354 },
4015};3355};
40163356
...@@ -4018,24 +3358,22 @@ pub const cpu_atxmega128c3 = Cpu{...@@ -4018,24 +3358,22 @@ pub const cpu_atxmega128c3 = Cpu{
4018 .name = "atxmega128c3",3358 .name = "atxmega128c3",
4019 .llvm_name = "atxmega128c3",3359 .llvm_name = "atxmega128c3",
4020 .subfeatures = &[_]*const Feature {3360 .subfeatures = &[_]*const Feature {
4021 &feature_spm,
4022 &feature_lpmx,
4023 &feature_des,
4024 &feature_ijmpcall,
4025 &feature_jmpcall,
4026 &feature_sram,
4027 &feature_rmw,3361 &feature_rmw,
3362 &feature_lpmx,
3363 &feature_spm,
4028 &feature_addsubiw,3364 &feature_addsubiw,
3365 &feature_jmpcall,
3366 &feature_lpm,
3367 &feature_break,
3368 &feature_mul,
4029 &feature_elpm,3369 &feature_elpm,
4030 &feature_eijmpcall,3370 &feature_eijmpcall,
4031 &feature_mul,
4032 &feature_break,
4033 &feature_lpm,
4034 &feature_elpmx,3371 &feature_elpmx,
4035 &feature_avr0,3372 &feature_sram,
3373 &feature_des,
3374 &feature_ijmpcall,
4036 &feature_movw,3375 &feature_movw,
4037 &feature_spmx,3376 &feature_spmx,
4038 &feature_xmegau,
4039 },3377 },
4040};3378};
40413379
...@@ -4043,23 +3381,21 @@ pub const cpu_atxmega128d3 = Cpu{...@@ -4043,23 +3381,21 @@ pub const cpu_atxmega128d3 = Cpu{
4043 .name = "atxmega128d3",3381 .name = "atxmega128d3",
4044 .llvm_name = "atxmega128d3",3382 .llvm_name = "atxmega128d3",
4045 .subfeatures = &[_]*const Feature {3383 .subfeatures = &[_]*const Feature {
4046 &feature_spm,
4047 &feature_lpmx,3384 &feature_lpmx,
4048 &feature_des,3385 &feature_spm,
4049 &feature_ijmpcall,
4050 &feature_jmpcall,
4051 &feature_sram,
4052 &feature_addsubiw,3386 &feature_addsubiw,
3387 &feature_jmpcall,
3388 &feature_lpm,
3389 &feature_break,
3390 &feature_mul,
4053 &feature_elpm,3391 &feature_elpm,
4054 &feature_eijmpcall,3392 &feature_eijmpcall,
4055 &feature_mul,
4056 &feature_break,
4057 &feature_lpm,
4058 &feature_elpmx,3393 &feature_elpmx,
4059 &feature_avr0,3394 &feature_sram,
3395 &feature_des,
3396 &feature_ijmpcall,
4060 &feature_movw,3397 &feature_movw,
4061 &feature_spmx,3398 &feature_spmx,
4062 &feature_xmega,
4063 },3399 },
4064};3400};
40653401
...@@ -4067,23 +3403,21 @@ pub const cpu_atxmega128d4 = Cpu{...@@ -4067,23 +3403,21 @@ pub const cpu_atxmega128d4 = Cpu{
4067 .name = "atxmega128d4",3403 .name = "atxmega128d4",
4068 .llvm_name = "atxmega128d4",3404 .llvm_name = "atxmega128d4",
4069 .subfeatures = &[_]*const Feature {3405 .subfeatures = &[_]*const Feature {
4070 &feature_spm,
4071 &feature_lpmx,3406 &feature_lpmx,
4072 &feature_des,3407 &feature_spm,
4073 &feature_ijmpcall,
4074 &feature_jmpcall,
4075 &feature_sram,
4076 &feature_addsubiw,3408 &feature_addsubiw,
3409 &feature_jmpcall,
3410 &feature_lpm,
3411 &feature_break,
3412 &feature_mul,
4077 &feature_elpm,3413 &feature_elpm,
4078 &feature_eijmpcall,3414 &feature_eijmpcall,
4079 &feature_mul,
4080 &feature_break,
4081 &feature_lpm,
4082 &feature_elpmx,3415 &feature_elpmx,
4083 &feature_avr0,3416 &feature_sram,
3417 &feature_des,
3418 &feature_ijmpcall,
4084 &feature_movw,3419 &feature_movw,
4085 &feature_spmx,3420 &feature_spmx,
4086 &feature_xmega,
4087 },3421 },
4088};3422};
40893423
...@@ -4091,23 +3425,21 @@ pub const cpu_atxmega16a4 = Cpu{...@@ -4091,23 +3425,21 @@ pub const cpu_atxmega16a4 = Cpu{
4091 .name = "atxmega16a4",3425 .name = "atxmega16a4",
4092 .llvm_name = "atxmega16a4",3426 .llvm_name = "atxmega16a4",
4093 .subfeatures = &[_]*const Feature {3427 .subfeatures = &[_]*const Feature {
4094 &feature_spm,
4095 &feature_lpmx,3428 &feature_lpmx,
4096 &feature_des,3429 &feature_spm,
4097 &feature_ijmpcall,
4098 &feature_jmpcall,
4099 &feature_sram,
4100 &feature_addsubiw,3430 &feature_addsubiw,
3431 &feature_jmpcall,
3432 &feature_lpm,
3433 &feature_break,
3434 &feature_mul,
4101 &feature_elpm,3435 &feature_elpm,
4102 &feature_eijmpcall,3436 &feature_eijmpcall,
4103 &feature_mul,
4104 &feature_break,
4105 &feature_lpm,
4106 &feature_elpmx,3437 &feature_elpmx,
4107 &feature_avr0,3438 &feature_sram,
3439 &feature_des,
3440 &feature_ijmpcall,
4108 &feature_movw,3441 &feature_movw,
4109 &feature_spmx,3442 &feature_spmx,
4110 &feature_xmega,
4111 },3443 },
4112};3444};
41133445
...@@ -4115,24 +3447,22 @@ pub const cpu_atxmega16a4u = Cpu{...@@ -4115,24 +3447,22 @@ pub const cpu_atxmega16a4u = Cpu{
4115 .name = "atxmega16a4u",3447 .name = "atxmega16a4u",
4116 .llvm_name = "atxmega16a4u",3448 .llvm_name = "atxmega16a4u",
4117 .subfeatures = &[_]*const Feature {3449 .subfeatures = &[_]*const Feature {
4118 &feature_spm,
4119 &feature_lpmx,
4120 &feature_des,
4121 &feature_ijmpcall,
4122 &feature_jmpcall,
4123 &feature_sram,
4124 &feature_rmw,3450 &feature_rmw,
3451 &feature_lpmx,
3452 &feature_spm,
4125 &feature_addsubiw,3453 &feature_addsubiw,
3454 &feature_jmpcall,
3455 &feature_lpm,
3456 &feature_break,
3457 &feature_mul,
4126 &feature_elpm,3458 &feature_elpm,
4127 &feature_eijmpcall,3459 &feature_eijmpcall,
4128 &feature_mul,
4129 &feature_break,
4130 &feature_lpm,
4131 &feature_elpmx,3460 &feature_elpmx,
4132 &feature_avr0,3461 &feature_sram,
3462 &feature_des,
3463 &feature_ijmpcall,
4133 &feature_movw,3464 &feature_movw,
4134 &feature_spmx,3465 &feature_spmx,
4135 &feature_xmegau,
4136 },3466 },
4137};3467};
41383468
...@@ -4140,24 +3470,22 @@ pub const cpu_atxmega16c4 = Cpu{...@@ -4140,24 +3470,22 @@ pub const cpu_atxmega16c4 = Cpu{
4140 .name = "atxmega16c4",3470 .name = "atxmega16c4",
4141 .llvm_name = "atxmega16c4",3471 .llvm_name = "atxmega16c4",
4142 .subfeatures = &[_]*const Feature {3472 .subfeatures = &[_]*const Feature {
4143 &feature_spm,
4144 &feature_lpmx,
4145 &feature_des,
4146 &feature_ijmpcall,
4147 &feature_jmpcall,
4148 &feature_sram,
4149 &feature_rmw,3473 &feature_rmw,
3474 &feature_lpmx,
3475 &feature_spm,
4150 &feature_addsubiw,3476 &feature_addsubiw,
3477 &feature_jmpcall,
3478 &feature_lpm,
3479 &feature_break,
3480 &feature_mul,
4151 &feature_elpm,3481 &feature_elpm,
4152 &feature_eijmpcall,3482 &feature_eijmpcall,
4153 &feature_mul,
4154 &feature_break,
4155 &feature_lpm,
4156 &feature_elpmx,3483 &feature_elpmx,
4157 &feature_avr0,3484 &feature_sram,
3485 &feature_des,
3486 &feature_ijmpcall,
4158 &feature_movw,3487 &feature_movw,
4159 &feature_spmx,3488 &feature_spmx,
4160 &feature_xmegau,
4161 },3489 },
4162};3490};
41633491
...@@ -4165,23 +3493,21 @@ pub const cpu_atxmega16d4 = Cpu{...@@ -4165,23 +3493,21 @@ pub const cpu_atxmega16d4 = Cpu{
4165 .name = "atxmega16d4",3493 .name = "atxmega16d4",
4166 .llvm_name = "atxmega16d4",3494 .llvm_name = "atxmega16d4",
4167 .subfeatures = &[_]*const Feature {3495 .subfeatures = &[_]*const Feature {
4168 &feature_spm,
4169 &feature_lpmx,3496 &feature_lpmx,
4170 &feature_des,3497 &feature_spm,
4171 &feature_ijmpcall,
4172 &feature_jmpcall,
4173 &feature_sram,
4174 &feature_addsubiw,3498 &feature_addsubiw,
3499 &feature_jmpcall,
3500 &feature_lpm,
3501 &feature_break,
3502 &feature_mul,
4175 &feature_elpm,3503 &feature_elpm,
4176 &feature_eijmpcall,3504 &feature_eijmpcall,
4177 &feature_mul,
4178 &feature_break,
4179 &feature_lpm,
4180 &feature_elpmx,3505 &feature_elpmx,
4181 &feature_avr0,3506 &feature_sram,
3507 &feature_des,
3508 &feature_ijmpcall,
4182 &feature_movw,3509 &feature_movw,
4183 &feature_spmx,3510 &feature_spmx,
4184 &feature_xmega,
4185 },3511 },
4186};3512};
41873513
...@@ -4189,23 +3515,21 @@ pub const cpu_atxmega16e5 = Cpu{...@@ -4189,23 +3515,21 @@ pub const cpu_atxmega16e5 = Cpu{
4189 .name = "atxmega16e5",3515 .name = "atxmega16e5",
4190 .llvm_name = "atxmega16e5",3516 .llvm_name = "atxmega16e5",
4191 .subfeatures = &[_]*const Feature {3517 .subfeatures = &[_]*const Feature {
4192 &feature_spm,
4193 &feature_lpmx,3518 &feature_lpmx,
4194 &feature_des,3519 &feature_spm,
4195 &feature_ijmpcall,
4196 &feature_jmpcall,
4197 &feature_sram,
4198 &feature_addsubiw,3520 &feature_addsubiw,
3521 &feature_jmpcall,
3522 &feature_lpm,
3523 &feature_break,
3524 &feature_mul,
4199 &feature_elpm,3525 &feature_elpm,
4200 &feature_eijmpcall,3526 &feature_eijmpcall,
4201 &feature_mul,
4202 &feature_break,
4203 &feature_lpm,
4204 &feature_elpmx,3527 &feature_elpmx,
4205 &feature_avr0,3528 &feature_sram,
3529 &feature_des,
3530 &feature_ijmpcall,
4206 &feature_movw,3531 &feature_movw,
4207 &feature_spmx,3532 &feature_spmx,
4208 &feature_xmega,
4209 },3533 },
4210};3534};
42113535
...@@ -4213,23 +3537,21 @@ pub const cpu_atxmega192a3 = Cpu{...@@ -4213,23 +3537,21 @@ pub const cpu_atxmega192a3 = Cpu{
4213 .name = "atxmega192a3",3537 .name = "atxmega192a3",
4214 .llvm_name = "atxmega192a3",3538 .llvm_name = "atxmega192a3",
4215 .subfeatures = &[_]*const Feature {3539 .subfeatures = &[_]*const Feature {
4216 &feature_spm,
4217 &feature_lpmx,3540 &feature_lpmx,
4218 &feature_des,3541 &feature_spm,
4219 &feature_ijmpcall,
4220 &feature_jmpcall,
4221 &feature_sram,
4222 &feature_addsubiw,3542 &feature_addsubiw,
3543 &feature_jmpcall,
3544 &feature_lpm,
3545 &feature_break,
3546 &feature_mul,
4223 &feature_elpm,3547 &feature_elpm,
4224 &feature_eijmpcall,3548 &feature_eijmpcall,
4225 &feature_mul,
4226 &feature_break,
4227 &feature_lpm,
4228 &feature_elpmx,3549 &feature_elpmx,
4229 &feature_avr0,3550 &feature_sram,
3551 &feature_des,
3552 &feature_ijmpcall,
4230 &feature_movw,3553 &feature_movw,
4231 &feature_spmx,3554 &feature_spmx,
4232 &feature_xmega,
4233 },3555 },
4234};3556};
42353557
...@@ -4237,24 +3559,22 @@ pub const cpu_atxmega192a3u = Cpu{...@@ -4237,24 +3559,22 @@ pub const cpu_atxmega192a3u = Cpu{
4237 .name = "atxmega192a3u",3559 .name = "atxmega192a3u",
4238 .llvm_name = "atxmega192a3u",3560 .llvm_name = "atxmega192a3u",
4239 .subfeatures = &[_]*const Feature {3561 .subfeatures = &[_]*const Feature {
4240 &feature_spm,
4241 &feature_lpmx,
4242 &feature_des,
4243 &feature_ijmpcall,
4244 &feature_jmpcall,
4245 &feature_sram,
4246 &feature_rmw,3562 &feature_rmw,
3563 &feature_lpmx,
3564 &feature_spm,
4247 &feature_addsubiw,3565 &feature_addsubiw,
3566 &feature_jmpcall,
3567 &feature_lpm,
3568 &feature_break,
3569 &feature_mul,
4248 &feature_elpm,3570 &feature_elpm,
4249 &feature_eijmpcall,3571 &feature_eijmpcall,
4250 &feature_mul,
4251 &feature_break,
4252 &feature_lpm,
4253 &feature_elpmx,3572 &feature_elpmx,
4254 &feature_avr0,3573 &feature_sram,
3574 &feature_des,
3575 &feature_ijmpcall,
4255 &feature_movw,3576 &feature_movw,
4256 &feature_spmx,3577 &feature_spmx,
4257 &feature_xmegau,
4258 },3578 },
4259};3579};
42603580
...@@ -4262,24 +3582,22 @@ pub const cpu_atxmega192c3 = Cpu{...@@ -4262,24 +3582,22 @@ pub const cpu_atxmega192c3 = Cpu{
4262 .name = "atxmega192c3",3582 .name = "atxmega192c3",
4263 .llvm_name = "atxmega192c3",3583 .llvm_name = "atxmega192c3",
4264 .subfeatures = &[_]*const Feature {3584 .subfeatures = &[_]*const Feature {
4265 &feature_spm,
4266 &feature_lpmx,
4267 &feature_des,
4268 &feature_ijmpcall,
4269 &feature_jmpcall,
4270 &feature_sram,
4271 &feature_rmw,3585 &feature_rmw,
3586 &feature_lpmx,
3587 &feature_spm,
4272 &feature_addsubiw,3588 &feature_addsubiw,
3589 &feature_jmpcall,
3590 &feature_lpm,
3591 &feature_break,
3592 &feature_mul,
4273 &feature_elpm,3593 &feature_elpm,
4274 &feature_eijmpcall,3594 &feature_eijmpcall,
4275 &feature_mul,
4276 &feature_break,
4277 &feature_lpm,
4278 &feature_elpmx,3595 &feature_elpmx,
4279 &feature_avr0,3596 &feature_sram,
3597 &feature_des,
3598 &feature_ijmpcall,
4280 &feature_movw,3599 &feature_movw,
4281 &feature_spmx,3600 &feature_spmx,
4282 &feature_xmegau,
4283 },3601 },
4284};3602};
42853603
...@@ -4287,23 +3605,21 @@ pub const cpu_atxmega192d3 = Cpu{...@@ -4287,23 +3605,21 @@ pub const cpu_atxmega192d3 = Cpu{
4287 .name = "atxmega192d3",3605 .name = "atxmega192d3",
4288 .llvm_name = "atxmega192d3",3606 .llvm_name = "atxmega192d3",
4289 .subfeatures = &[_]*const Feature {3607 .subfeatures = &[_]*const Feature {
4290 &feature_spm,
4291 &feature_lpmx,3608 &feature_lpmx,
4292 &feature_des,3609 &feature_spm,
4293 &feature_ijmpcall,
4294 &feature_jmpcall,
4295 &feature_sram,
4296 &feature_addsubiw,3610 &feature_addsubiw,
3611 &feature_jmpcall,
3612 &feature_lpm,
3613 &feature_break,
3614 &feature_mul,
4297 &feature_elpm,3615 &feature_elpm,
4298 &feature_eijmpcall,3616 &feature_eijmpcall,
4299 &feature_mul,
4300 &feature_break,
4301 &feature_lpm,
4302 &feature_elpmx,3617 &feature_elpmx,
4303 &feature_avr0,3618 &feature_sram,
3619 &feature_des,
3620 &feature_ijmpcall,
4304 &feature_movw,3621 &feature_movw,
4305 &feature_spmx,3622 &feature_spmx,
4306 &feature_xmega,
4307 },3623 },
4308};3624};
43093625
...@@ -4311,23 +3627,21 @@ pub const cpu_atxmega256a3 = Cpu{...@@ -4311,23 +3627,21 @@ pub const cpu_atxmega256a3 = Cpu{
4311 .name = "atxmega256a3",3627 .name = "atxmega256a3",
4312 .llvm_name = "atxmega256a3",3628 .llvm_name = "atxmega256a3",
4313 .subfeatures = &[_]*const Feature {3629 .subfeatures = &[_]*const Feature {
4314 &feature_spm,
4315 &feature_lpmx,3630 &feature_lpmx,
4316 &feature_des,3631 &feature_spm,
4317 &feature_ijmpcall,
4318 &feature_jmpcall,
4319 &feature_sram,
4320 &feature_addsubiw,3632 &feature_addsubiw,
3633 &feature_jmpcall,
3634 &feature_lpm,
3635 &feature_break,
3636 &feature_mul,
4321 &feature_elpm,3637 &feature_elpm,
4322 &feature_eijmpcall,3638 &feature_eijmpcall,
4323 &feature_mul,
4324 &feature_break,
4325 &feature_lpm,
4326 &feature_elpmx,3639 &feature_elpmx,
4327 &feature_avr0,3640 &feature_sram,
3641 &feature_des,
3642 &feature_ijmpcall,
4328 &feature_movw,3643 &feature_movw,
4329 &feature_spmx,3644 &feature_spmx,
4330 &feature_xmega,
4331 },3645 },
4332};3646};
43333647
...@@ -4335,23 +3649,21 @@ pub const cpu_atxmega256a3b = Cpu{...@@ -4335,23 +3649,21 @@ pub const cpu_atxmega256a3b = Cpu{
4335 .name = "atxmega256a3b",3649 .name = "atxmega256a3b",
4336 .llvm_name = "atxmega256a3b",3650 .llvm_name = "atxmega256a3b",
4337 .subfeatures = &[_]*const Feature {3651 .subfeatures = &[_]*const Feature {
4338 &feature_spm,
4339 &feature_lpmx,3652 &feature_lpmx,
4340 &feature_des,3653 &feature_spm,
4341 &feature_ijmpcall,
4342 &feature_jmpcall,
4343 &feature_sram,
4344 &feature_addsubiw,3654 &feature_addsubiw,
3655 &feature_jmpcall,
3656 &feature_lpm,
3657 &feature_break,
3658 &feature_mul,
4345 &feature_elpm,3659 &feature_elpm,
4346 &feature_eijmpcall,3660 &feature_eijmpcall,
4347 &feature_mul,
4348 &feature_break,
4349 &feature_lpm,
4350 &feature_elpmx,3661 &feature_elpmx,
4351 &feature_avr0,3662 &feature_sram,
3663 &feature_des,
3664 &feature_ijmpcall,
4352 &feature_movw,3665 &feature_movw,
4353 &feature_spmx,3666 &feature_spmx,
4354 &feature_xmega,
4355 },3667 },
4356};3668};
43573669
...@@ -4359,24 +3671,22 @@ pub const cpu_atxmega256a3bu = Cpu{...@@ -4359,24 +3671,22 @@ pub const cpu_atxmega256a3bu = Cpu{
4359 .name = "atxmega256a3bu",3671 .name = "atxmega256a3bu",
4360 .llvm_name = "atxmega256a3bu",3672 .llvm_name = "atxmega256a3bu",
4361 .subfeatures = &[_]*const Feature {3673 .subfeatures = &[_]*const Feature {
4362 &feature_spm,
4363 &feature_lpmx,
4364 &feature_des,
4365 &feature_ijmpcall,
4366 &feature_jmpcall,
4367 &feature_sram,
4368 &feature_rmw,3674 &feature_rmw,
3675 &feature_lpmx,
3676 &feature_spm,
4369 &feature_addsubiw,3677 &feature_addsubiw,
3678 &feature_jmpcall,
3679 &feature_lpm,
3680 &feature_break,
3681 &feature_mul,
4370 &feature_elpm,3682 &feature_elpm,
4371 &feature_eijmpcall,3683 &feature_eijmpcall,
4372 &feature_mul,
4373 &feature_break,
4374 &feature_lpm,
4375 &feature_elpmx,3684 &feature_elpmx,
4376 &feature_avr0,3685 &feature_sram,
3686 &feature_des,
3687 &feature_ijmpcall,
4377 &feature_movw,3688 &feature_movw,
4378 &feature_spmx,3689 &feature_spmx,
4379 &feature_xmegau,
4380 },3690 },
4381};3691};
43823692
...@@ -4384,24 +3694,22 @@ pub const cpu_atxmega256a3u = Cpu{...@@ -4384,24 +3694,22 @@ pub const cpu_atxmega256a3u = Cpu{
4384 .name = "atxmega256a3u",3694 .name = "atxmega256a3u",
4385 .llvm_name = "atxmega256a3u",3695 .llvm_name = "atxmega256a3u",
4386 .subfeatures = &[_]*const Feature {3696 .subfeatures = &[_]*const Feature {
4387 &feature_spm,
4388 &feature_lpmx,
4389 &feature_des,
4390 &feature_ijmpcall,
4391 &feature_jmpcall,
4392 &feature_sram,
4393 &feature_rmw,3697 &feature_rmw,
3698 &feature_lpmx,
3699 &feature_spm,
4394 &feature_addsubiw,3700 &feature_addsubiw,
3701 &feature_jmpcall,
3702 &feature_lpm,
3703 &feature_break,
3704 &feature_mul,
4395 &feature_elpm,3705 &feature_elpm,
4396 &feature_eijmpcall,3706 &feature_eijmpcall,
4397 &feature_mul,
4398 &feature_break,
4399 &feature_lpm,
4400 &feature_elpmx,3707 &feature_elpmx,
4401 &feature_avr0,3708 &feature_sram,
3709 &feature_des,
3710 &feature_ijmpcall,
4402 &feature_movw,3711 &feature_movw,
4403 &feature_spmx,3712 &feature_spmx,
4404 &feature_xmegau,
4405 },3713 },
4406};3714};
44073715
...@@ -4409,24 +3717,22 @@ pub const cpu_atxmega256c3 = Cpu{...@@ -4409,24 +3717,22 @@ pub const cpu_atxmega256c3 = Cpu{
4409 .name = "atxmega256c3",3717 .name = "atxmega256c3",
4410 .llvm_name = "atxmega256c3",3718 .llvm_name = "atxmega256c3",
4411 .subfeatures = &[_]*const Feature {3719 .subfeatures = &[_]*const Feature {
4412 &feature_spm,
4413 &feature_lpmx,
4414 &feature_des,
4415 &feature_ijmpcall,
4416 &feature_jmpcall,
4417 &feature_sram,
4418 &feature_rmw,3720 &feature_rmw,
3721 &feature_lpmx,
3722 &feature_spm,
4419 &feature_addsubiw,3723 &feature_addsubiw,
3724 &feature_jmpcall,
3725 &feature_lpm,
3726 &feature_break,
3727 &feature_mul,
4420 &feature_elpm,3728 &feature_elpm,
4421 &feature_eijmpcall,3729 &feature_eijmpcall,
4422 &feature_mul,
4423 &feature_break,
4424 &feature_lpm,
4425 &feature_elpmx,3730 &feature_elpmx,
4426 &feature_avr0,3731 &feature_sram,
3732 &feature_des,
3733 &feature_ijmpcall,
4427 &feature_movw,3734 &feature_movw,
4428 &feature_spmx,3735 &feature_spmx,
4429 &feature_xmegau,
4430 },3736 },
4431};3737};
44323738
...@@ -4434,23 +3740,21 @@ pub const cpu_atxmega256d3 = Cpu{...@@ -4434,23 +3740,21 @@ pub const cpu_atxmega256d3 = Cpu{
4434 .name = "atxmega256d3",3740 .name = "atxmega256d3",
4435 .llvm_name = "atxmega256d3",3741 .llvm_name = "atxmega256d3",
4436 .subfeatures = &[_]*const Feature {3742 .subfeatures = &[_]*const Feature {
4437 &feature_spm,
4438 &feature_lpmx,3743 &feature_lpmx,
4439 &feature_des,3744 &feature_spm,
4440 &feature_ijmpcall,
4441 &feature_jmpcall,
4442 &feature_sram,
4443 &feature_addsubiw,3745 &feature_addsubiw,
3746 &feature_jmpcall,
3747 &feature_lpm,
3748 &feature_break,
3749 &feature_mul,
4444 &feature_elpm,3750 &feature_elpm,
4445 &feature_eijmpcall,3751 &feature_eijmpcall,
4446 &feature_mul,
4447 &feature_break,
4448 &feature_lpm,
4449 &feature_elpmx,3752 &feature_elpmx,
4450 &feature_avr0,3753 &feature_sram,
3754 &feature_des,
3755 &feature_ijmpcall,
4451 &feature_movw,3756 &feature_movw,
4452 &feature_spmx,3757 &feature_spmx,
4453 &feature_xmega,
4454 },3758 },
4455};3759};
44563760
...@@ -4458,23 +3762,21 @@ pub const cpu_atxmega32a4 = Cpu{...@@ -4458,23 +3762,21 @@ pub const cpu_atxmega32a4 = Cpu{
4458 .name = "atxmega32a4",3762 .name = "atxmega32a4",
4459 .llvm_name = "atxmega32a4",3763 .llvm_name = "atxmega32a4",
4460 .subfeatures = &[_]*const Feature {3764 .subfeatures = &[_]*const Feature {
4461 &feature_spm,
4462 &feature_lpmx,3765 &feature_lpmx,
4463 &feature_des,3766 &feature_spm,
4464 &feature_ijmpcall,
4465 &feature_jmpcall,
4466 &feature_sram,
4467 &feature_addsubiw,3767 &feature_addsubiw,
3768 &feature_jmpcall,
3769 &feature_lpm,
3770 &feature_break,
3771 &feature_mul,
4468 &feature_elpm,3772 &feature_elpm,
4469 &feature_eijmpcall,3773 &feature_eijmpcall,
4470 &feature_mul,
4471 &feature_break,
4472 &feature_lpm,
4473 &feature_elpmx,3774 &feature_elpmx,
4474 &feature_avr0,3775 &feature_sram,
3776 &feature_des,
3777 &feature_ijmpcall,
4475 &feature_movw,3778 &feature_movw,
4476 &feature_spmx,3779 &feature_spmx,
4477 &feature_xmega,
4478 },3780 },
4479};3781};
44803782
...@@ -4482,24 +3784,22 @@ pub const cpu_atxmega32a4u = Cpu{...@@ -4482,24 +3784,22 @@ pub const cpu_atxmega32a4u = Cpu{
4482 .name = "atxmega32a4u",3784 .name = "atxmega32a4u",
4483 .llvm_name = "atxmega32a4u",3785 .llvm_name = "atxmega32a4u",
4484 .subfeatures = &[_]*const Feature {3786 .subfeatures = &[_]*const Feature {
4485 &feature_spm,
4486 &feature_lpmx,
4487 &feature_des,
4488 &feature_ijmpcall,
4489 &feature_jmpcall,
4490 &feature_sram,
4491 &feature_rmw,3787 &feature_rmw,
3788 &feature_lpmx,
3789 &feature_spm,
4492 &feature_addsubiw,3790 &feature_addsubiw,
3791 &feature_jmpcall,
3792 &feature_lpm,
3793 &feature_break,
3794 &feature_mul,
4493 &feature_elpm,3795 &feature_elpm,
4494 &feature_eijmpcall,3796 &feature_eijmpcall,
4495 &feature_mul,
4496 &feature_break,
4497 &feature_lpm,
4498 &feature_elpmx,3797 &feature_elpmx,
4499 &feature_avr0,3798 &feature_sram,
3799 &feature_des,
3800 &feature_ijmpcall,
4500 &feature_movw,3801 &feature_movw,
4501 &feature_spmx,3802 &feature_spmx,
4502 &feature_xmegau,
4503 },3803 },
4504};3804};
45053805
...@@ -4507,24 +3807,22 @@ pub const cpu_atxmega32c4 = Cpu{...@@ -4507,24 +3807,22 @@ pub const cpu_atxmega32c4 = Cpu{
4507 .name = "atxmega32c4",3807 .name = "atxmega32c4",
4508 .llvm_name = "atxmega32c4",3808 .llvm_name = "atxmega32c4",
4509 .subfeatures = &[_]*const Feature {3809 .subfeatures = &[_]*const Feature {
4510 &feature_spm,
4511 &feature_lpmx,
4512 &feature_des,
4513 &feature_ijmpcall,
4514 &feature_jmpcall,
4515 &feature_sram,
4516 &feature_rmw,3810 &feature_rmw,
3811 &feature_lpmx,
3812 &feature_spm,
4517 &feature_addsubiw,3813 &feature_addsubiw,
3814 &feature_jmpcall,
3815 &feature_lpm,
3816 &feature_break,
3817 &feature_mul,
4518 &feature_elpm,3818 &feature_elpm,
4519 &feature_eijmpcall,3819 &feature_eijmpcall,
4520 &feature_mul,
4521 &feature_break,
4522 &feature_lpm,
4523 &feature_elpmx,3820 &feature_elpmx,
4524 &feature_avr0,3821 &feature_sram,
3822 &feature_des,
3823 &feature_ijmpcall,
4525 &feature_movw,3824 &feature_movw,
4526 &feature_spmx,3825 &feature_spmx,
4527 &feature_xmegau,
4528 },3826 },
4529};3827};
45303828
...@@ -4532,23 +3830,21 @@ pub const cpu_atxmega32d4 = Cpu{...@@ -4532,23 +3830,21 @@ pub const cpu_atxmega32d4 = Cpu{
4532 .name = "atxmega32d4",3830 .name = "atxmega32d4",
4533 .llvm_name = "atxmega32d4",3831 .llvm_name = "atxmega32d4",
4534 .subfeatures = &[_]*const Feature {3832 .subfeatures = &[_]*const Feature {
4535 &feature_spm,
4536 &feature_lpmx,3833 &feature_lpmx,
4537 &feature_des,3834 &feature_spm,
4538 &feature_ijmpcall,
4539 &feature_jmpcall,
4540 &feature_sram,
4541 &feature_addsubiw,3835 &feature_addsubiw,
3836 &feature_jmpcall,
3837 &feature_lpm,
3838 &feature_break,
3839 &feature_mul,
4542 &feature_elpm,3840 &feature_elpm,
4543 &feature_eijmpcall,3841 &feature_eijmpcall,
4544 &feature_mul,
4545 &feature_break,
4546 &feature_lpm,
4547 &feature_elpmx,3842 &feature_elpmx,
4548 &feature_avr0,3843 &feature_sram,
3844 &feature_des,
3845 &feature_ijmpcall,
4549 &feature_movw,3846 &feature_movw,
4550 &feature_spmx,3847 &feature_spmx,
4551 &feature_xmega,
4552 },3848 },
4553};3849};
45543850
...@@ -4556,23 +3852,21 @@ pub const cpu_atxmega32e5 = Cpu{...@@ -4556,23 +3852,21 @@ pub const cpu_atxmega32e5 = Cpu{
4556 .name = "atxmega32e5",3852 .name = "atxmega32e5",
4557 .llvm_name = "atxmega32e5",3853 .llvm_name = "atxmega32e5",
4558 .subfeatures = &[_]*const Feature {3854 .subfeatures = &[_]*const Feature {
4559 &feature_spm,
4560 &feature_lpmx,3855 &feature_lpmx,
4561 &feature_des,3856 &feature_spm,
4562 &feature_ijmpcall,
4563 &feature_jmpcall,
4564 &feature_sram,
4565 &feature_addsubiw,3857 &feature_addsubiw,
3858 &feature_jmpcall,
3859 &feature_lpm,
3860 &feature_break,
3861 &feature_mul,
4566 &feature_elpm,3862 &feature_elpm,
4567 &feature_eijmpcall,3863 &feature_eijmpcall,
4568 &feature_mul,
4569 &feature_break,
4570 &feature_lpm,
4571 &feature_elpmx,3864 &feature_elpmx,
4572 &feature_avr0,3865 &feature_sram,
3866 &feature_des,
3867 &feature_ijmpcall,
4573 &feature_movw,3868 &feature_movw,
4574 &feature_spmx,3869 &feature_spmx,
4575 &feature_xmega,
4576 },3870 },
4577};3871};
45783872
...@@ -4580,23 +3874,21 @@ pub const cpu_atxmega32x1 = Cpu{...@@ -4580,23 +3874,21 @@ pub const cpu_atxmega32x1 = Cpu{
4580 .name = "atxmega32x1",3874 .name = "atxmega32x1",
4581 .llvm_name = "atxmega32x1",3875 .llvm_name = "atxmega32x1",
4582 .subfeatures = &[_]*const Feature {3876 .subfeatures = &[_]*const Feature {
4583 &feature_spm,
4584 &feature_lpmx,3877 &feature_lpmx,
4585 &feature_des,3878 &feature_spm,
4586 &feature_ijmpcall,
4587 &feature_jmpcall,
4588 &feature_sram,
4589 &feature_addsubiw,3879 &feature_addsubiw,
3880 &feature_jmpcall,
3881 &feature_lpm,
3882 &feature_break,
3883 &feature_mul,
4590 &feature_elpm,3884 &feature_elpm,
4591 &feature_eijmpcall,3885 &feature_eijmpcall,
4592 &feature_mul,
4593 &feature_break,
4594 &feature_lpm,
4595 &feature_elpmx,3886 &feature_elpmx,
4596 &feature_avr0,3887 &feature_sram,
3888 &feature_des,
3889 &feature_ijmpcall,
4597 &feature_movw,3890 &feature_movw,
4598 &feature_spmx,3891 &feature_spmx,
4599 &feature_xmega,
4600 },3892 },
4601};3893};
46023894
...@@ -4604,24 +3896,22 @@ pub const cpu_atxmega384c3 = Cpu{...@@ -4604,24 +3896,22 @@ pub const cpu_atxmega384c3 = Cpu{
4604 .name = "atxmega384c3",3896 .name = "atxmega384c3",
4605 .llvm_name = "atxmega384c3",3897 .llvm_name = "atxmega384c3",
4606 .subfeatures = &[_]*const Feature {3898 .subfeatures = &[_]*const Feature {
4607 &feature_spm,
4608 &feature_lpmx,
4609 &feature_des,
4610 &feature_ijmpcall,
4611 &feature_jmpcall,
4612 &feature_sram,
4613 &feature_rmw,3899 &feature_rmw,
3900 &feature_lpmx,
3901 &feature_spm,
4614 &feature_addsubiw,3902 &feature_addsubiw,
3903 &feature_jmpcall,
3904 &feature_lpm,
3905 &feature_break,
3906 &feature_mul,
4615 &feature_elpm,3907 &feature_elpm,
4616 &feature_eijmpcall,3908 &feature_eijmpcall,
4617 &feature_mul,
4618 &feature_break,
4619 &feature_lpm,
4620 &feature_elpmx,3909 &feature_elpmx,
4621 &feature_avr0,3910 &feature_sram,
3911 &feature_des,
3912 &feature_ijmpcall,
4622 &feature_movw,3913 &feature_movw,
4623 &feature_spmx,3914 &feature_spmx,
4624 &feature_xmegau,
4625 },3915 },
4626};3916};
46273917
...@@ -4629,23 +3919,21 @@ pub const cpu_atxmega384d3 = Cpu{...@@ -4629,23 +3919,21 @@ pub const cpu_atxmega384d3 = Cpu{
4629 .name = "atxmega384d3",3919 .name = "atxmega384d3",
4630 .llvm_name = "atxmega384d3",3920 .llvm_name = "atxmega384d3",
4631 .subfeatures = &[_]*const Feature {3921 .subfeatures = &[_]*const Feature {
4632 &feature_spm,
4633 &feature_lpmx,3922 &feature_lpmx,
4634 &feature_des,3923 &feature_spm,
4635 &feature_ijmpcall,
4636 &feature_jmpcall,
4637 &feature_sram,
4638 &feature_addsubiw,3924 &feature_addsubiw,
3925 &feature_jmpcall,
3926 &feature_lpm,
3927 &feature_break,
3928 &feature_mul,
4639 &feature_elpm,3929 &feature_elpm,
4640 &feature_eijmpcall,3930 &feature_eijmpcall,
4641 &feature_mul,
4642 &feature_break,
4643 &feature_lpm,
4644 &feature_elpmx,3931 &feature_elpmx,
4645 &feature_avr0,3932 &feature_sram,
3933 &feature_des,
3934 &feature_ijmpcall,
4646 &feature_movw,3935 &feature_movw,
4647 &feature_spmx,3936 &feature_spmx,
4648 &feature_xmega,
4649 },3937 },
4650};3938};
46513939
...@@ -4653,23 +3941,21 @@ pub const cpu_atxmega64a1 = Cpu{...@@ -4653,23 +3941,21 @@ pub const cpu_atxmega64a1 = Cpu{
4653 .name = "atxmega64a1",3941 .name = "atxmega64a1",
4654 .llvm_name = "atxmega64a1",3942 .llvm_name = "atxmega64a1",
4655 .subfeatures = &[_]*const Feature {3943 .subfeatures = &[_]*const Feature {
4656 &feature_spm,
4657 &feature_lpmx,3944 &feature_lpmx,
4658 &feature_des,3945 &feature_spm,
4659 &feature_ijmpcall,
4660 &feature_jmpcall,
4661 &feature_sram,
4662 &feature_addsubiw,3946 &feature_addsubiw,
3947 &feature_jmpcall,
3948 &feature_lpm,
3949 &feature_break,
3950 &feature_mul,
4663 &feature_elpm,3951 &feature_elpm,
4664 &feature_eijmpcall,3952 &feature_eijmpcall,
4665 &feature_mul,
4666 &feature_break,
4667 &feature_lpm,
4668 &feature_elpmx,3953 &feature_elpmx,
4669 &feature_avr0,3954 &feature_sram,
3955 &feature_des,
3956 &feature_ijmpcall,
4670 &feature_movw,3957 &feature_movw,
4671 &feature_spmx,3958 &feature_spmx,
4672 &feature_xmega,
4673 },3959 },
4674};3960};
46753961
...@@ -4677,24 +3963,22 @@ pub const cpu_atxmega64a1u = Cpu{...@@ -4677,24 +3963,22 @@ pub const cpu_atxmega64a1u = Cpu{
4677 .name = "atxmega64a1u",3963 .name = "atxmega64a1u",
4678 .llvm_name = "atxmega64a1u",3964 .llvm_name = "atxmega64a1u",
4679 .subfeatures = &[_]*const Feature {3965 .subfeatures = &[_]*const Feature {
4680 &feature_spm,
4681 &feature_lpmx,
4682 &feature_des,
4683 &feature_ijmpcall,
4684 &feature_jmpcall,
4685 &feature_sram,
4686 &feature_rmw,3966 &feature_rmw,
3967 &feature_lpmx,
3968 &feature_spm,
4687 &feature_addsubiw,3969 &feature_addsubiw,
3970 &feature_jmpcall,
3971 &feature_lpm,
3972 &feature_break,
3973 &feature_mul,
4688 &feature_elpm,3974 &feature_elpm,
4689 &feature_eijmpcall,3975 &feature_eijmpcall,
4690 &feature_mul,
4691 &feature_break,
4692 &feature_lpm,
4693 &feature_elpmx,3976 &feature_elpmx,
4694 &feature_avr0,3977 &feature_sram,
3978 &feature_des,
3979 &feature_ijmpcall,
4695 &feature_movw,3980 &feature_movw,
4696 &feature_spmx,3981 &feature_spmx,
4697 &feature_xmegau,
4698 },3982 },
4699};3983};
47003984
...@@ -4702,23 +3986,21 @@ pub const cpu_atxmega64a3 = Cpu{...@@ -4702,23 +3986,21 @@ pub const cpu_atxmega64a3 = Cpu{
4702 .name = "atxmega64a3",3986 .name = "atxmega64a3",
4703 .llvm_name = "atxmega64a3",3987 .llvm_name = "atxmega64a3",
4704 .subfeatures = &[_]*const Feature {3988 .subfeatures = &[_]*const Feature {
4705 &feature_spm,
4706 &feature_lpmx,3989 &feature_lpmx,
4707 &feature_des,3990 &feature_spm,
4708 &feature_ijmpcall,
4709 &feature_jmpcall,
4710 &feature_sram,
4711 &feature_addsubiw,3991 &feature_addsubiw,
3992 &feature_jmpcall,
3993 &feature_lpm,
3994 &feature_break,
3995 &feature_mul,
4712 &feature_elpm,3996 &feature_elpm,
4713 &feature_eijmpcall,3997 &feature_eijmpcall,
4714 &feature_mul,
4715 &feature_break,
4716 &feature_lpm,
4717 &feature_elpmx,3998 &feature_elpmx,
4718 &feature_avr0,3999 &feature_sram,
4000 &feature_des,
4001 &feature_ijmpcall,
4719 &feature_movw,4002 &feature_movw,
4720 &feature_spmx,4003 &feature_spmx,
4721 &feature_xmega,
4722 },4004 },
4723};4005};
47244006
...@@ -4726,24 +4008,22 @@ pub const cpu_atxmega64a3u = Cpu{...@@ -4726,24 +4008,22 @@ pub const cpu_atxmega64a3u = Cpu{
4726 .name = "atxmega64a3u",4008 .name = "atxmega64a3u",
4727 .llvm_name = "atxmega64a3u",4009 .llvm_name = "atxmega64a3u",
4728 .subfeatures = &[_]*const Feature {4010 .subfeatures = &[_]*const Feature {
4729 &feature_spm,
4730 &feature_lpmx,
4731 &feature_des,
4732 &feature_ijmpcall,
4733 &feature_jmpcall,
4734 &feature_sram,
4735 &feature_rmw,4011 &feature_rmw,
4012 &feature_lpmx,
4013 &feature_spm,
4736 &feature_addsubiw,4014 &feature_addsubiw,
4015 &feature_jmpcall,
4016 &feature_lpm,
4017 &feature_break,
4018 &feature_mul,
4737 &feature_elpm,4019 &feature_elpm,
4738 &feature_eijmpcall,4020 &feature_eijmpcall,
4739 &feature_mul,
4740 &feature_break,
4741 &feature_lpm,
4742 &feature_elpmx,4021 &feature_elpmx,
4743 &feature_avr0,4022 &feature_sram,
4023 &feature_des,
4024 &feature_ijmpcall,
4744 &feature_movw,4025 &feature_movw,
4745 &feature_spmx,4026 &feature_spmx,
4746 &feature_xmegau,
4747 },4027 },
4748};4028};
47494029
...@@ -4751,24 +4031,22 @@ pub const cpu_atxmega64a4u = Cpu{...@@ -4751,24 +4031,22 @@ pub const cpu_atxmega64a4u = Cpu{
4751 .name = "atxmega64a4u",4031 .name = "atxmega64a4u",
4752 .llvm_name = "atxmega64a4u",4032 .llvm_name = "atxmega64a4u",
4753 .subfeatures = &[_]*const Feature {4033 .subfeatures = &[_]*const Feature {
4754 &feature_spm,
4755 &feature_lpmx,
4756 &feature_des,
4757 &feature_ijmpcall,
4758 &feature_jmpcall,
4759 &feature_sram,
4760 &feature_rmw,4034 &feature_rmw,
4035 &feature_lpmx,
4036 &feature_spm,
4761 &feature_addsubiw,4037 &feature_addsubiw,
4038 &feature_jmpcall,
4039 &feature_lpm,
4040 &feature_break,
4041 &feature_mul,
4762 &feature_elpm,4042 &feature_elpm,
4763 &feature_eijmpcall,4043 &feature_eijmpcall,
4764 &feature_mul,
4765 &feature_break,
4766 &feature_lpm,
4767 &feature_elpmx,4044 &feature_elpmx,
4768 &feature_avr0,4045 &feature_sram,
4046 &feature_des,
4047 &feature_ijmpcall,
4769 &feature_movw,4048 &feature_movw,
4770 &feature_spmx,4049 &feature_spmx,
4771 &feature_xmegau,
4772 },4050 },
4773};4051};
47744052
...@@ -4776,24 +4054,22 @@ pub const cpu_atxmega64b1 = Cpu{...@@ -4776,24 +4054,22 @@ pub const cpu_atxmega64b1 = Cpu{
4776 .name = "atxmega64b1",4054 .name = "atxmega64b1",
4777 .llvm_name = "atxmega64b1",4055 .llvm_name = "atxmega64b1",
4778 .subfeatures = &[_]*const Feature {4056 .subfeatures = &[_]*const Feature {
4779 &feature_spm,
4780 &feature_lpmx,
4781 &feature_des,
4782 &feature_ijmpcall,
4783 &feature_jmpcall,
4784 &feature_sram,
4785 &feature_rmw,4057 &feature_rmw,
4058 &feature_lpmx,
4059 &feature_spm,
4786 &feature_addsubiw,4060 &feature_addsubiw,
4061 &feature_jmpcall,
4062 &feature_lpm,
4063 &feature_break,
4064 &feature_mul,
4787 &feature_elpm,4065 &feature_elpm,
4788 &feature_eijmpcall,4066 &feature_eijmpcall,
4789 &feature_mul,
4790 &feature_break,
4791 &feature_lpm,
4792 &feature_elpmx,4067 &feature_elpmx,
4793 &feature_avr0,4068 &feature_sram,
4069 &feature_des,
4070 &feature_ijmpcall,
4794 &feature_movw,4071 &feature_movw,
4795 &feature_spmx,4072 &feature_spmx,
4796 &feature_xmegau,
4797 },4073 },
4798};4074};
47994075
...@@ -4801,24 +4077,22 @@ pub const cpu_atxmega64b3 = Cpu{...@@ -4801,24 +4077,22 @@ pub const cpu_atxmega64b3 = Cpu{
4801 .name = "atxmega64b3",4077 .name = "atxmega64b3",
4802 .llvm_name = "atxmega64b3",4078 .llvm_name = "atxmega64b3",
4803 .subfeatures = &[_]*const Feature {4079 .subfeatures = &[_]*const Feature {
4804 &feature_spm,
4805 &feature_lpmx,
4806 &feature_des,
4807 &feature_ijmpcall,
4808 &feature_jmpcall,
4809 &feature_sram,
4810 &feature_rmw,4080 &feature_rmw,
4081 &feature_lpmx,
4082 &feature_spm,
4811 &feature_addsubiw,4083 &feature_addsubiw,
4084 &feature_jmpcall,
4085 &feature_lpm,
4086 &feature_break,
4087 &feature_mul,
4812 &feature_elpm,4088 &feature_elpm,
4813 &feature_eijmpcall,4089 &feature_eijmpcall,
4814 &feature_mul,
4815 &feature_break,
4816 &feature_lpm,
4817 &feature_elpmx,4090 &feature_elpmx,
4818 &feature_avr0,4091 &feature_sram,
4092 &feature_des,
4093 &feature_ijmpcall,
4819 &feature_movw,4094 &feature_movw,
4820 &feature_spmx,4095 &feature_spmx,
4821 &feature_xmegau,
4822 },4096 },
4823};4097};
48244098
...@@ -4826,24 +4100,22 @@ pub const cpu_atxmega64c3 = Cpu{...@@ -4826,24 +4100,22 @@ pub const cpu_atxmega64c3 = Cpu{
4826 .name = "atxmega64c3",4100 .name = "atxmega64c3",
4827 .llvm_name = "atxmega64c3",4101 .llvm_name = "atxmega64c3",
4828 .subfeatures = &[_]*const Feature {4102 .subfeatures = &[_]*const Feature {
4829 &feature_spm,
4830 &feature_lpmx,
4831 &feature_des,
4832 &feature_ijmpcall,
4833 &feature_jmpcall,
4834 &feature_sram,
4835 &feature_rmw,4103 &feature_rmw,
4104 &feature_lpmx,
4105 &feature_spm,
4836 &feature_addsubiw,4106 &feature_addsubiw,
4107 &feature_jmpcall,
4108 &feature_lpm,
4109 &feature_break,
4110 &feature_mul,
4837 &feature_elpm,4111 &feature_elpm,
4838 &feature_eijmpcall,4112 &feature_eijmpcall,
4839 &feature_mul,
4840 &feature_break,
4841 &feature_lpm,
4842 &feature_elpmx,4113 &feature_elpmx,
4843 &feature_avr0,4114 &feature_sram,
4115 &feature_des,
4116 &feature_ijmpcall,
4844 &feature_movw,4117 &feature_movw,
4845 &feature_spmx,4118 &feature_spmx,
4846 &feature_xmegau,
4847 },4119 },
4848};4120};
48494121
...@@ -4851,23 +4123,21 @@ pub const cpu_atxmega64d3 = Cpu{...@@ -4851,23 +4123,21 @@ pub const cpu_atxmega64d3 = Cpu{
4851 .name = "atxmega64d3",4123 .name = "atxmega64d3",
4852 .llvm_name = "atxmega64d3",4124 .llvm_name = "atxmega64d3",
4853 .subfeatures = &[_]*const Feature {4125 .subfeatures = &[_]*const Feature {
4854 &feature_spm,
4855 &feature_lpmx,4126 &feature_lpmx,
4856 &feature_des,4127 &feature_spm,
4857 &feature_ijmpcall,
4858 &feature_jmpcall,
4859 &feature_sram,
4860 &feature_addsubiw,4128 &feature_addsubiw,
4129 &feature_jmpcall,
4130 &feature_lpm,
4131 &feature_break,
4132 &feature_mul,
4861 &feature_elpm,4133 &feature_elpm,
4862 &feature_eijmpcall,4134 &feature_eijmpcall,
4863 &feature_mul,
4864 &feature_break,
4865 &feature_lpm,
4866 &feature_elpmx,4135 &feature_elpmx,
4867 &feature_avr0,4136 &feature_sram,
4137 &feature_des,
4138 &feature_ijmpcall,
4868 &feature_movw,4139 &feature_movw,
4869 &feature_spmx,4140 &feature_spmx,
4870 &feature_xmega,
4871 },4141 },
4872};4142};
48734143
...@@ -4875,23 +4145,21 @@ pub const cpu_atxmega64d4 = Cpu{...@@ -4875,23 +4145,21 @@ pub const cpu_atxmega64d4 = Cpu{
4875 .name = "atxmega64d4",4145 .name = "atxmega64d4",
4876 .llvm_name = "atxmega64d4",4146 .llvm_name = "atxmega64d4",
4877 .subfeatures = &[_]*const Feature {4147 .subfeatures = &[_]*const Feature {
4878 &feature_spm,
4879 &feature_lpmx,4148 &feature_lpmx,
4880 &feature_des,4149 &feature_spm,
4881 &feature_ijmpcall,
4882 &feature_jmpcall,
4883 &feature_sram,
4884 &feature_addsubiw,4150 &feature_addsubiw,
4151 &feature_jmpcall,
4152 &feature_lpm,
4153 &feature_break,
4154 &feature_mul,
4885 &feature_elpm,4155 &feature_elpm,
4886 &feature_eijmpcall,4156 &feature_eijmpcall,
4887 &feature_mul,
4888 &feature_break,
4889 &feature_lpm,
4890 &feature_elpmx,4157 &feature_elpmx,
4891 &feature_avr0,4158 &feature_sram,
4159 &feature_des,
4160 &feature_ijmpcall,
4892 &feature_movw,4161 &feature_movw,
4893 &feature_spmx,4162 &feature_spmx,
4894 &feature_xmega,
4895 },4163 },
4896};4164};
48974165
...@@ -4899,23 +4167,21 @@ pub const cpu_atxmega8e5 = Cpu{...@@ -4899,23 +4167,21 @@ pub const cpu_atxmega8e5 = Cpu{
4899 .name = "atxmega8e5",4167 .name = "atxmega8e5",
4900 .llvm_name = "atxmega8e5",4168 .llvm_name = "atxmega8e5",
4901 .subfeatures = &[_]*const Feature {4169 .subfeatures = &[_]*const Feature {
4902 &feature_spm,
4903 &feature_lpmx,4170 &feature_lpmx,
4904 &feature_des,4171 &feature_spm,
4905 &feature_ijmpcall,
4906 &feature_jmpcall,
4907 &feature_sram,
4908 &feature_addsubiw,4172 &feature_addsubiw,
4173 &feature_jmpcall,
4174 &feature_lpm,
4175 &feature_break,
4176 &feature_mul,
4909 &feature_elpm,4177 &feature_elpm,
4910 &feature_eijmpcall,4178 &feature_eijmpcall,
4911 &feature_mul,
4912 &feature_break,
4913 &feature_lpm,
4914 &feature_elpmx,4179 &feature_elpmx,
4915 &feature_avr0,4180 &feature_sram,
4181 &feature_des,
4182 &feature_ijmpcall,
4916 &feature_movw,4183 &feature_movw,
4917 &feature_spmx,4184 &feature_spmx,
4918 &feature_xmega,
4919 },4185 },
4920};4186};
49214187
...@@ -4924,8 +4190,6 @@ pub const cpu_avr1 = Cpu{...@@ -4924,8 +4190,6 @@ pub const cpu_avr1 = Cpu{
4924 .llvm_name = "avr1",4190 .llvm_name = "avr1",
4925 .subfeatures = &[_]*const Feature {4191 .subfeatures = &[_]*const Feature {
4926 &feature_lpm,4192 &feature_lpm,
4927 &feature_avr0,
4928 &feature_avr1,
4929 },4193 },
4930};4194};
49314195
...@@ -4933,12 +4197,10 @@ pub const cpu_avr2 = Cpu{...@@ -4933,12 +4197,10 @@ pub const cpu_avr2 = Cpu{
4933 .name = "avr2",4197 .name = "avr2",
4934 .llvm_name = "avr2",4198 .llvm_name = "avr2",
4935 .subfeatures = &[_]*const Feature {4199 .subfeatures = &[_]*const Feature {
4936 &feature_ijmpcall,
4937 &feature_sram,
4938 &feature_addsubiw,4200 &feature_addsubiw,
4939 &feature_lpm,4201 &feature_lpm,
4940 &feature_avr0,4202 &feature_sram,
4941 &feature_avr2,4203 &feature_ijmpcall,
4942 },4204 },
4943};4205};
49444206
...@@ -4946,16 +4208,14 @@ pub const cpu_avr25 = Cpu{...@@ -4946,16 +4208,14 @@ pub const cpu_avr25 = Cpu{
4946 .name = "avr25",4208 .name = "avr25",
4947 .llvm_name = "avr25",4209 .llvm_name = "avr25",
4948 .subfeatures = &[_]*const Feature {4210 .subfeatures = &[_]*const Feature {
4949 &feature_spm,
4950 &feature_lpmx,4211 &feature_lpmx,
4951 &feature_ijmpcall,4212 &feature_spm,
4952 &feature_sram,
4953 &feature_addsubiw,4213 &feature_addsubiw,
4954 &feature_break,4214 &feature_break,
4955 &feature_lpm,4215 &feature_lpm,
4956 &feature_avr0,4216 &feature_sram,
4217 &feature_ijmpcall,
4957 &feature_movw,4218 &feature_movw,
4958 &feature_avr25,
4959 },4219 },
4960};4220};
49614221
...@@ -4963,13 +4223,11 @@ pub const cpu_avr3 = Cpu{...@@ -4963,13 +4223,11 @@ pub const cpu_avr3 = Cpu{
4963 .name = "avr3",4223 .name = "avr3",
4964 .llvm_name = "avr3",4224 .llvm_name = "avr3",
4965 .subfeatures = &[_]*const Feature {4225 .subfeatures = &[_]*const Feature {
4966 &feature_ijmpcall,
4967 &feature_jmpcall,
4968 &feature_sram,
4969 &feature_addsubiw,4226 &feature_addsubiw,
4227 &feature_jmpcall,
4970 &feature_lpm,4228 &feature_lpm,
4971 &feature_avr0,4229 &feature_sram,
4972 &feature_avr3,4230 &feature_ijmpcall,
4973 },4231 },
4974};4232};
49754233
...@@ -4977,14 +4235,12 @@ pub const cpu_avr31 = Cpu{...@@ -4977,14 +4235,12 @@ pub const cpu_avr31 = Cpu{
4977 .name = "avr31",4235 .name = "avr31",
4978 .llvm_name = "avr31",4236 .llvm_name = "avr31",
4979 .subfeatures = &[_]*const Feature {4237 .subfeatures = &[_]*const Feature {
4980 &feature_ijmpcall,
4981 &feature_jmpcall,
4982 &feature_sram,
4983 &feature_addsubiw,4238 &feature_addsubiw,
4984 &feature_elpm,4239 &feature_jmpcall,
4985 &feature_lpm,4240 &feature_lpm,
4986 &feature_avr0,4241 &feature_elpm,
4987 &feature_avr31,4242 &feature_sram,
4243 &feature_ijmpcall,
4988 },4244 },
4989};4245};
49904246
...@@ -4992,17 +4248,15 @@ pub const cpu_avr35 = Cpu{...@@ -4992,17 +4248,15 @@ pub const cpu_avr35 = Cpu{
4992 .name = "avr35",4248 .name = "avr35",
4993 .llvm_name = "avr35",4249 .llvm_name = "avr35",
4994 .subfeatures = &[_]*const Feature {4250 .subfeatures = &[_]*const Feature {
4995 &feature_spm,
4996 &feature_lpmx,4251 &feature_lpmx,
4997 &feature_ijmpcall,4252 &feature_spm,
4998 &feature_jmpcall,
4999 &feature_sram,
5000 &feature_addsubiw,4253 &feature_addsubiw,
5001 &feature_break,4254 &feature_jmpcall,
5002 &feature_lpm,4255 &feature_lpm,
5003 &feature_avr0,4256 &feature_break,
4257 &feature_sram,
4258 &feature_ijmpcall,
5004 &feature_movw,4259 &feature_movw,
5005 &feature_avr35,
5006 },4260 },
5007};4261};
50084262
...@@ -5010,17 +4264,15 @@ pub const cpu_avr4 = Cpu{...@@ -5010,17 +4264,15 @@ pub const cpu_avr4 = Cpu{
5010 .name = "avr4",4264 .name = "avr4",
5011 .llvm_name = "avr4",4265 .llvm_name = "avr4",
5012 .subfeatures = &[_]*const Feature {4266 .subfeatures = &[_]*const Feature {
5013 &feature_spm,
5014 &feature_lpmx,4267 &feature_lpmx,
5015 &feature_ijmpcall,4268 &feature_spm,
5016 &feature_sram,
5017 &feature_addsubiw,4269 &feature_addsubiw,
5018 &feature_mul,
5019 &feature_break,4270 &feature_break,
5020 &feature_lpm,4271 &feature_lpm,
5021 &feature_avr0,4272 &feature_mul,
4273 &feature_sram,
4274 &feature_ijmpcall,
5022 &feature_movw,4275 &feature_movw,
5023 &feature_avr4,
5024 },4276 },
5025};4277};
50264278
...@@ -5028,18 +4280,16 @@ pub const cpu_avr5 = Cpu{...@@ -5028,18 +4280,16 @@ pub const cpu_avr5 = Cpu{
5028 .name = "avr5",4280 .name = "avr5",
5029 .llvm_name = "avr5",4281 .llvm_name = "avr5",
5030 .subfeatures = &[_]*const Feature {4282 .subfeatures = &[_]*const Feature {
5031 &feature_spm,
5032 &feature_lpmx,4283 &feature_lpmx,
5033 &feature_ijmpcall,4284 &feature_spm,
5034 &feature_jmpcall,
5035 &feature_sram,
5036 &feature_addsubiw,4285 &feature_addsubiw,
5037 &feature_mul,4286 &feature_jmpcall,
5038 &feature_break,
5039 &feature_lpm,4287 &feature_lpm,
5040 &feature_avr0,4288 &feature_break,
4289 &feature_mul,
4290 &feature_sram,
4291 &feature_ijmpcall,
5041 &feature_movw,4292 &feature_movw,
5042 &feature_avr5,
5043 },4293 },
5044};4294};
50454295
...@@ -5047,20 +4297,18 @@ pub const cpu_avr51 = Cpu{...@@ -5047,20 +4297,18 @@ pub const cpu_avr51 = Cpu{
5047 .name = "avr51",4297 .name = "avr51",
5048 .llvm_name = "avr51",4298 .llvm_name = "avr51",
5049 .subfeatures = &[_]*const Feature {4299 .subfeatures = &[_]*const Feature {
5050 &feature_spm,
5051 &feature_lpmx,4300 &feature_lpmx,
5052 &feature_ijmpcall,4301 &feature_spm,
5053 &feature_jmpcall,
5054 &feature_sram,
5055 &feature_addsubiw,4302 &feature_addsubiw,
5056 &feature_elpm,4303 &feature_jmpcall,
5057 &feature_mul,
5058 &feature_break,
5059 &feature_lpm,4304 &feature_lpm,
4305 &feature_break,
4306 &feature_mul,
4307 &feature_elpm,
5060 &feature_elpmx,4308 &feature_elpmx,
5061 &feature_avr0,4309 &feature_sram,
4310 &feature_ijmpcall,
5062 &feature_movw,4311 &feature_movw,
5063 &feature_avr51,
5064 },4312 },
5065};4313};
50664314
...@@ -5068,20 +4316,18 @@ pub const cpu_avr6 = Cpu{...@@ -5068,20 +4316,18 @@ pub const cpu_avr6 = Cpu{
5068 .name = "avr6",4316 .name = "avr6",
5069 .llvm_name = "avr6",4317 .llvm_name = "avr6",
5070 .subfeatures = &[_]*const Feature {4318 .subfeatures = &[_]*const Feature {
5071 &feature_spm,
5072 &feature_lpmx,4319 &feature_lpmx,
5073 &feature_ijmpcall,4320 &feature_spm,
5074 &feature_jmpcall,
5075 &feature_sram,
5076 &feature_addsubiw,4321 &feature_addsubiw,
5077 &feature_elpm,4322 &feature_jmpcall,
5078 &feature_mul,
5079 &feature_break,
5080 &feature_lpm,4323 &feature_lpm,
4324 &feature_break,
4325 &feature_mul,
4326 &feature_elpm,
5081 &feature_elpmx,4327 &feature_elpmx,
5082 &feature_avr0,4328 &feature_sram,
4329 &feature_ijmpcall,
5083 &feature_movw,4330 &feature_movw,
5084 &feature_avr6,
5085 },4331 },
5086};4332};
50874333
...@@ -5089,11 +4335,9 @@ pub const cpu_avrtiny = Cpu{...@@ -5089,11 +4335,9 @@ pub const cpu_avrtiny = Cpu{
5089 .name = "avrtiny",4335 .name = "avrtiny",
5090 .llvm_name = "avrtiny",4336 .llvm_name = "avrtiny",
5091 .subfeatures = &[_]*const Feature {4337 .subfeatures = &[_]*const Feature {
5092 &feature_avr0,4338 &feature_break,
5093 &feature_sram,4339 &feature_sram,
5094 &feature_tinyencoding,4340 &feature_tinyencoding,
5095 &feature_break,
5096 &feature_avrtiny,
5097 },4341 },
5098};4342};
50994343
...@@ -5101,23 +4345,21 @@ pub const cpu_avrxmega1 = Cpu{...@@ -5101,23 +4345,21 @@ pub const cpu_avrxmega1 = Cpu{
5101 .name = "avrxmega1",4345 .name = "avrxmega1",
5102 .llvm_name = "avrxmega1",4346 .llvm_name = "avrxmega1",
5103 .subfeatures = &[_]*const Feature {4347 .subfeatures = &[_]*const Feature {
5104 &feature_spm,
5105 &feature_lpmx,4348 &feature_lpmx,
5106 &feature_des,4349 &feature_spm,
5107 &feature_ijmpcall,
5108 &feature_jmpcall,
5109 &feature_sram,
5110 &feature_addsubiw,4350 &feature_addsubiw,
4351 &feature_jmpcall,
4352 &feature_lpm,
4353 &feature_break,
4354 &feature_mul,
5111 &feature_elpm,4355 &feature_elpm,
5112 &feature_eijmpcall,4356 &feature_eijmpcall,
5113 &feature_mul,
5114 &feature_break,
5115 &feature_lpm,
5116 &feature_elpmx,4357 &feature_elpmx,
5117 &feature_avr0,4358 &feature_sram,
4359 &feature_des,
4360 &feature_ijmpcall,
5118 &feature_movw,4361 &feature_movw,
5119 &feature_spmx,4362 &feature_spmx,
5120 &feature_xmega,
5121 },4363 },
5122};4364};
51234365
...@@ -5125,23 +4367,21 @@ pub const cpu_avrxmega2 = Cpu{...@@ -5125,23 +4367,21 @@ pub const cpu_avrxmega2 = Cpu{
5125 .name = "avrxmega2",4367 .name = "avrxmega2",
5126 .llvm_name = "avrxmega2",4368 .llvm_name = "avrxmega2",
5127 .subfeatures = &[_]*const Feature {4369 .subfeatures = &[_]*const Feature {
5128 &feature_spm,
5129 &feature_lpmx,4370 &feature_lpmx,
5130 &feature_des,4371 &feature_spm,
5131 &feature_ijmpcall,
5132 &feature_jmpcall,
5133 &feature_sram,
5134 &feature_addsubiw,4372 &feature_addsubiw,
4373 &feature_jmpcall,
4374 &feature_lpm,
4375 &feature_break,
4376 &feature_mul,
5135 &feature_elpm,4377 &feature_elpm,
5136 &feature_eijmpcall,4378 &feature_eijmpcall,
5137 &feature_mul,
5138 &feature_break,
5139 &feature_lpm,
5140 &feature_elpmx,4379 &feature_elpmx,
5141 &feature_avr0,4380 &feature_sram,
4381 &feature_des,
4382 &feature_ijmpcall,
5142 &feature_movw,4383 &feature_movw,
5143 &feature_spmx,4384 &feature_spmx,
5144 &feature_xmega,
5145 },4385 },
5146};4386};
51474387
...@@ -5149,23 +4389,21 @@ pub const cpu_avrxmega3 = Cpu{...@@ -5149,23 +4389,21 @@ pub const cpu_avrxmega3 = Cpu{
5149 .name = "avrxmega3",4389 .name = "avrxmega3",
5150 .llvm_name = "avrxmega3",4390 .llvm_name = "avrxmega3",
5151 .subfeatures = &[_]*const Feature {4391 .subfeatures = &[_]*const Feature {
5152 &feature_spm,
5153 &feature_lpmx,4392 &feature_lpmx,
5154 &feature_des,4393 &feature_spm,
5155 &feature_ijmpcall,
5156 &feature_jmpcall,
5157 &feature_sram,
5158 &feature_addsubiw,4394 &feature_addsubiw,
4395 &feature_jmpcall,
4396 &feature_lpm,
4397 &feature_break,
4398 &feature_mul,
5159 &feature_elpm,4399 &feature_elpm,
5160 &feature_eijmpcall,4400 &feature_eijmpcall,
5161 &feature_mul,
5162 &feature_break,
5163 &feature_lpm,
5164 &feature_elpmx,4401 &feature_elpmx,
5165 &feature_avr0,4402 &feature_sram,
4403 &feature_des,
4404 &feature_ijmpcall,
5166 &feature_movw,4405 &feature_movw,
5167 &feature_spmx,4406 &feature_spmx,
5168 &feature_xmega,
5169 },4407 },
5170};4408};
51714409
...@@ -5173,23 +4411,21 @@ pub const cpu_avrxmega4 = Cpu{...@@ -5173,23 +4411,21 @@ pub const cpu_avrxmega4 = Cpu{
5173 .name = "avrxmega4",4411 .name = "avrxmega4",
5174 .llvm_name = "avrxmega4",4412 .llvm_name = "avrxmega4",
5175 .subfeatures = &[_]*const Feature {4413 .subfeatures = &[_]*const Feature {
5176 &feature_spm,
5177 &feature_lpmx,4414 &feature_lpmx,
5178 &feature_des,4415 &feature_spm,
5179 &feature_ijmpcall,
5180 &feature_jmpcall,
5181 &feature_sram,
5182 &feature_addsubiw,4416 &feature_addsubiw,
4417 &feature_jmpcall,
4418 &feature_lpm,
4419 &feature_break,
4420 &feature_mul,
5183 &feature_elpm,4421 &feature_elpm,
5184 &feature_eijmpcall,4422 &feature_eijmpcall,
5185 &feature_mul,
5186 &feature_break,
5187 &feature_lpm,
5188 &feature_elpmx,4423 &feature_elpmx,
5189 &feature_avr0,4424 &feature_sram,
4425 &feature_des,
4426 &feature_ijmpcall,
5190 &feature_movw,4427 &feature_movw,
5191 &feature_spmx,4428 &feature_spmx,
5192 &feature_xmega,
5193 },4429 },
5194};4430};
51954431
...@@ -5197,23 +4433,21 @@ pub const cpu_avrxmega5 = Cpu{...@@ -5197,23 +4433,21 @@ pub const cpu_avrxmega5 = Cpu{
5197 .name = "avrxmega5",4433 .name = "avrxmega5",
5198 .llvm_name = "avrxmega5",4434 .llvm_name = "avrxmega5",
5199 .subfeatures = &[_]*const Feature {4435 .subfeatures = &[_]*const Feature {
5200 &feature_spm,
5201 &feature_lpmx,4436 &feature_lpmx,
5202 &feature_des,4437 &feature_spm,
5203 &feature_ijmpcall,
5204 &feature_jmpcall,
5205 &feature_sram,
5206 &feature_addsubiw,4438 &feature_addsubiw,
4439 &feature_jmpcall,
4440 &feature_lpm,
4441 &feature_break,
4442 &feature_mul,
5207 &feature_elpm,4443 &feature_elpm,
5208 &feature_eijmpcall,4444 &feature_eijmpcall,
5209 &feature_mul,
5210 &feature_break,
5211 &feature_lpm,
5212 &feature_elpmx,4445 &feature_elpmx,
5213 &feature_avr0,4446 &feature_sram,
4447 &feature_des,
4448 &feature_ijmpcall,
5214 &feature_movw,4449 &feature_movw,
5215 &feature_spmx,4450 &feature_spmx,
5216 &feature_xmega,
5217 },4451 },
5218};4452};
52194453
...@@ -5221,23 +4455,21 @@ pub const cpu_avrxmega6 = Cpu{...@@ -5221,23 +4455,21 @@ pub const cpu_avrxmega6 = Cpu{
5221 .name = "avrxmega6",4455 .name = "avrxmega6",
5222 .llvm_name = "avrxmega6",4456 .llvm_name = "avrxmega6",
5223 .subfeatures = &[_]*const Feature {4457 .subfeatures = &[_]*const Feature {
5224 &feature_spm,
5225 &feature_lpmx,4458 &feature_lpmx,
5226 &feature_des,4459 &feature_spm,
5227 &feature_ijmpcall,
5228 &feature_jmpcall,
5229 &feature_sram,
5230 &feature_addsubiw,4460 &feature_addsubiw,
4461 &feature_jmpcall,
4462 &feature_lpm,
4463 &feature_break,
4464 &feature_mul,
5231 &feature_elpm,4465 &feature_elpm,
5232 &feature_eijmpcall,4466 &feature_eijmpcall,
5233 &feature_mul,
5234 &feature_break,
5235 &feature_lpm,
5236 &feature_elpmx,4467 &feature_elpmx,
5237 &feature_avr0,4468 &feature_sram,
4469 &feature_des,
4470 &feature_ijmpcall,
5238 &feature_movw,4471 &feature_movw,
5239 &feature_spmx,4472 &feature_spmx,
5240 &feature_xmega,
5241 },4473 },
5242};4474};
52434475
...@@ -5245,23 +4477,21 @@ pub const cpu_avrxmega7 = Cpu{...@@ -5245,23 +4477,21 @@ pub const cpu_avrxmega7 = Cpu{
5245 .name = "avrxmega7",4477 .name = "avrxmega7",
5246 .llvm_name = "avrxmega7",4478 .llvm_name = "avrxmega7",
5247 .subfeatures = &[_]*const Feature {4479 .subfeatures = &[_]*const Feature {
5248 &feature_spm,
5249 &feature_lpmx,4480 &feature_lpmx,
5250 &feature_des,4481 &feature_spm,
5251 &feature_ijmpcall,
5252 &feature_jmpcall,
5253 &feature_sram,
5254 &feature_addsubiw,4482 &feature_addsubiw,
4483 &feature_jmpcall,
4484 &feature_lpm,
4485 &feature_break,
4486 &feature_mul,
5255 &feature_elpm,4487 &feature_elpm,
5256 &feature_eijmpcall,4488 &feature_eijmpcall,
5257 &feature_mul,
5258 &feature_break,
5259 &feature_lpm,
5260 &feature_elpmx,4489 &feature_elpmx,
5261 &feature_avr0,4490 &feature_sram,
4491 &feature_des,
4492 &feature_ijmpcall,
5262 &feature_movw,4493 &feature_movw,
5263 &feature_spmx,4494 &feature_spmx,
5264 &feature_xmega,
5265 },4495 },
5266};4496};
52674497
...@@ -5269,18 +4499,16 @@ pub const cpu_m3000 = Cpu{...@@ -5269,18 +4499,16 @@ pub const cpu_m3000 = Cpu{
5269 .name = "m3000",4499 .name = "m3000",
5270 .llvm_name = "m3000",4500 .llvm_name = "m3000",
5271 .subfeatures = &[_]*const Feature {4501 .subfeatures = &[_]*const Feature {
5272 &feature_spm,
5273 &feature_lpmx,4502 &feature_lpmx,
5274 &feature_ijmpcall,4503 &feature_spm,
5275 &feature_jmpcall,
5276 &feature_sram,
5277 &feature_addsubiw,4504 &feature_addsubiw,
5278 &feature_mul,4505 &feature_jmpcall,
5279 &feature_break,
5280 &feature_lpm,4506 &feature_lpm,
5281 &feature_avr0,4507 &feature_break,
4508 &feature_mul,
4509 &feature_sram,
4510 &feature_ijmpcall,
5282 &feature_movw,4511 &feature_movw,
5283 &feature_avr5,
5284 },4512 },
5285};4513};
52864514
lib/std/target/hexagon.zig-143
...@@ -1,111 +1,6 @@...@@ -1,111 +1,6 @@
1const Feature = @import("std").target.Feature;1const Feature = @import("std").target.Feature;
2const Cpu = @import("std").target.Cpu;2const Cpu = @import("std").target.Cpu;
33
4pub const feature_v5 = Feature{
5 .name = "v5",
6 .description = "Enable Hexagon V5 architecture",
7 .subfeatures = &[_]*const Feature {
8 },
9};
10
11pub const feature_v55 = Feature{
12 .name = "v55",
13 .description = "Enable Hexagon V55 architecture",
14 .subfeatures = &[_]*const Feature {
15 },
16};
17
18pub const feature_v60 = Feature{
19 .name = "v60",
20 .description = "Enable Hexagon V60 architecture",
21 .subfeatures = &[_]*const Feature {
22 },
23};
24
25pub const feature_v62 = Feature{
26 .name = "v62",
27 .description = "Enable Hexagon V62 architecture",
28 .subfeatures = &[_]*const Feature {
29 },
30};
31
32pub const feature_v65 = Feature{
33 .name = "v65",
34 .description = "Enable Hexagon V65 architecture",
35 .subfeatures = &[_]*const Feature {
36 },
37};
38
39pub const feature_v66 = Feature{
40 .name = "v66",
41 .description = "Enable Hexagon V66 architecture",
42 .subfeatures = &[_]*const Feature {
43 },
44};
45
46pub const feature_hvx = Feature{
47 .name = "hvx",
48 .description = "Hexagon HVX instructions",
49 .subfeatures = &[_]*const Feature {
50 },
51};
52
53pub const feature_hvxLength64b = Feature{
54 .name = "hvx-length64b",
55 .description = "Hexagon HVX 64B instructions",
56 .subfeatures = &[_]*const Feature {
57 &feature_hvx,
58 },
59};
60
61pub const feature_hvxLength128b = Feature{
62 .name = "hvx-length128b",
63 .description = "Hexagon HVX 128B instructions",
64 .subfeatures = &[_]*const Feature {
65 &feature_hvx,
66 },
67};
68
69pub const feature_hvxv60 = Feature{
70 .name = "hvxv60",
71 .description = "Hexagon HVX instructions",
72 .subfeatures = &[_]*const Feature {
73 &feature_hvx,
74 },
75};
76
77pub const feature_hvxv62 = Feature{
78 .name = "hvxv62",
79 .description = "Hexagon HVX instructions",
80 .subfeatures = &[_]*const Feature {
81 &feature_hvx,
82 },
83};
84
85pub const feature_hvxv65 = Feature{
86 .name = "hvxv65",
87 .description = "Hexagon HVX instructions",
88 .subfeatures = &[_]*const Feature {
89 &feature_hvx,
90 },
91};
92
93pub const feature_hvxv66 = Feature{
94 .name = "hvxv66",
95 .description = "Hexagon HVX instructions",
96 .subfeatures = &[_]*const Feature {
97 &feature_zreg,
98 &feature_hvx,
99 },
100};
101
102pub const feature_zreg = Feature{
103 .name = "zreg",
104 .description = "Hexagon ZReg extension instructions",
105 .subfeatures = &[_]*const Feature {
106 },
107};
108
109pub const feature_duplex = Feature{4pub const feature_duplex = Feature{
110 .name = "duplex",5 .name = "duplex",
111 .description = "Enable generation of duplex instruction",6 .description = "Enable generation of duplex instruction",
...@@ -179,20 +74,6 @@ pub const feature_smallData = Feature{...@@ -179,20 +74,6 @@ pub const feature_smallData = Feature{
179};74};
18075
181pub const features = &[_]*const Feature {76pub const features = &[_]*const Feature {
182 &feature_v5,
183 &feature_v55,
184 &feature_v60,
185 &feature_v62,
186 &feature_v65,
187 &feature_v66,
188 &feature_hvx,
189 &feature_hvxLength64b,
190 &feature_hvxLength128b,
191 &feature_hvxv60,
192 &feature_hvxv62,
193 &feature_hvxv65,
194 &feature_hvxv66,
195 &feature_zreg,
196 &feature_duplex,77 &feature_duplex,
197 &feature_longCalls,78 &feature_longCalls,
198 &feature_mem_noshuf,79 &feature_mem_noshuf,
...@@ -209,9 +90,6 @@ pub const cpu_generic = Cpu{...@@ -209,9 +90,6 @@ pub const cpu_generic = Cpu{
209 .name = "generic",90 .name = "generic",
210 .llvm_name = "generic",91 .llvm_name = "generic",
211 .subfeatures = &[_]*const Feature {92 .subfeatures = &[_]*const Feature {
212 &feature_v5,
213 &feature_v55,
214 &feature_v60,
215 &feature_duplex,93 &feature_duplex,
216 &feature_memops,94 &feature_memops,
217 &feature_packets,95 &feature_packets,
...@@ -225,7 +103,6 @@ pub const cpu_hexagonv5 = Cpu{...@@ -225,7 +103,6 @@ pub const cpu_hexagonv5 = Cpu{
225 .name = "hexagonv5",103 .name = "hexagonv5",
226 .llvm_name = "hexagonv5",104 .llvm_name = "hexagonv5",
227 .subfeatures = &[_]*const Feature {105 .subfeatures = &[_]*const Feature {
228 &feature_v5,
229 &feature_duplex,106 &feature_duplex,
230 &feature_memops,107 &feature_memops,
231 &feature_packets,108 &feature_packets,
...@@ -239,8 +116,6 @@ pub const cpu_hexagonv55 = Cpu{...@@ -239,8 +116,6 @@ pub const cpu_hexagonv55 = Cpu{
239 .name = "hexagonv55",116 .name = "hexagonv55",
240 .llvm_name = "hexagonv55",117 .llvm_name = "hexagonv55",
241 .subfeatures = &[_]*const Feature {118 .subfeatures = &[_]*const Feature {
242 &feature_v5,
243 &feature_v55,
244 &feature_duplex,119 &feature_duplex,
245 &feature_memops,120 &feature_memops,
246 &feature_packets,121 &feature_packets,
...@@ -254,9 +129,6 @@ pub const cpu_hexagonv60 = Cpu{...@@ -254,9 +129,6 @@ pub const cpu_hexagonv60 = Cpu{
254 .name = "hexagonv60",129 .name = "hexagonv60",
255 .llvm_name = "hexagonv60",130 .llvm_name = "hexagonv60",
256 .subfeatures = &[_]*const Feature {131 .subfeatures = &[_]*const Feature {
257 &feature_v5,
258 &feature_v55,
259 &feature_v60,
260 &feature_duplex,132 &feature_duplex,
261 &feature_memops,133 &feature_memops,
262 &feature_packets,134 &feature_packets,
...@@ -270,10 +142,6 @@ pub const cpu_hexagonv62 = Cpu{...@@ -270,10 +142,6 @@ pub const cpu_hexagonv62 = Cpu{
270 .name = "hexagonv62",142 .name = "hexagonv62",
271 .llvm_name = "hexagonv62",143 .llvm_name = "hexagonv62",
272 .subfeatures = &[_]*const Feature {144 .subfeatures = &[_]*const Feature {
273 &feature_v5,
274 &feature_v55,
275 &feature_v60,
276 &feature_v62,
277 &feature_duplex,145 &feature_duplex,
278 &feature_memops,146 &feature_memops,
279 &feature_packets,147 &feature_packets,
...@@ -287,11 +155,6 @@ pub const cpu_hexagonv65 = Cpu{...@@ -287,11 +155,6 @@ pub const cpu_hexagonv65 = Cpu{
287 .name = "hexagonv65",155 .name = "hexagonv65",
288 .llvm_name = "hexagonv65",156 .llvm_name = "hexagonv65",
289 .subfeatures = &[_]*const Feature {157 .subfeatures = &[_]*const Feature {
290 &feature_v5,
291 &feature_v55,
292 &feature_v60,
293 &feature_v62,
294 &feature_v65,
295 &feature_duplex,158 &feature_duplex,
296 &feature_mem_noshuf,159 &feature_mem_noshuf,
297 &feature_memops,160 &feature_memops,
...@@ -306,12 +169,6 @@ pub const cpu_hexagonv66 = Cpu{...@@ -306,12 +169,6 @@ pub const cpu_hexagonv66 = Cpu{
306 .name = "hexagonv66",169 .name = "hexagonv66",
307 .llvm_name = "hexagonv66",170 .llvm_name = "hexagonv66",
308 .subfeatures = &[_]*const Feature {171 .subfeatures = &[_]*const Feature {
309 &feature_v5,
310 &feature_v55,
311 &feature_v60,
312 &feature_v62,
313 &feature_v65,
314 &feature_v66,
315 &feature_duplex,172 &feature_duplex,
316 &feature_mem_noshuf,173 &feature_mem_noshuf,
317 &feature_memops,174 &feature_memops,
lib/std/target/mips.zig+108-108
...@@ -19,14 +19,14 @@ pub const feature_cnmips = Feature{...@@ -19,14 +19,14 @@ pub const feature_cnmips = Feature{
19 .name = "cnmips",19 .name = "cnmips",
20 .description = "Octeon cnMIPS Support",20 .description = "Octeon cnMIPS Support",
21 .subfeatures = &[_]*const Feature {21 .subfeatures = &[_]*const Feature {
22 &feature_mips3_32r2,22 &feature_fp64,
23 &feature_mips3_32,
24 &feature_mips4_32r2,23 &feature_mips4_32r2,
25 &feature_mips1,24 &feature_mips1,
26 &feature_fp64,
27 &feature_mips5_32r2,
28 &feature_gp64,25 &feature_gp64,
29 &feature_mips4_32,26 &feature_mips4_32,
27 &feature_mips5_32r2,
28 &feature_mips3_32r2,
29 &feature_mips3_32,
30 },30 },
31};31};
3232
...@@ -142,11 +142,11 @@ pub const feature_mips3 = Feature{...@@ -142,11 +142,11 @@ pub const feature_mips3 = Feature{
142 .name = "mips3",142 .name = "mips3",
143 .description = "MIPS III ISA Support [highly experimental]",143 .description = "MIPS III ISA Support [highly experimental]",
144 .subfeatures = &[_]*const Feature {144 .subfeatures = &[_]*const Feature {
145 &feature_mips3_32r2,
146 &feature_mips3_32,
147 &feature_mips1,
148 &feature_fp64,145 &feature_fp64,
146 &feature_mips1,
149 &feature_gp64,147 &feature_gp64,
148 &feature_mips3_32r2,
149 &feature_mips3_32,
150 },150 },
151};151};
152152
...@@ -168,13 +168,13 @@ pub const feature_mips4 = Feature{...@@ -168,13 +168,13 @@ pub const feature_mips4 = Feature{
168 .name = "mips4",168 .name = "mips4",
169 .description = "MIPS IV ISA Support",169 .description = "MIPS IV ISA Support",
170 .subfeatures = &[_]*const Feature {170 .subfeatures = &[_]*const Feature {
171 &feature_mips3_32r2,171 &feature_fp64,
172 &feature_mips3_32,
173 &feature_mips4_32r2,172 &feature_mips4_32r2,
174 &feature_mips1,173 &feature_mips1,
175 &feature_fp64,
176 &feature_gp64,174 &feature_gp64,
177 &feature_mips4_32,175 &feature_mips4_32,
176 &feature_mips3_32r2,
177 &feature_mips3_32,
178 },178 },
179};179};
180180
...@@ -196,14 +196,14 @@ pub const feature_mips5 = Feature{...@@ -196,14 +196,14 @@ pub const feature_mips5 = Feature{
196 .name = "mips5",196 .name = "mips5",
197 .description = "MIPS V ISA Support [highly experimental]",197 .description = "MIPS V ISA Support [highly experimental]",
198 .subfeatures = &[_]*const Feature {198 .subfeatures = &[_]*const Feature {
199 &feature_mips3_32r2,199 &feature_fp64,
200 &feature_mips3_32,
201 &feature_mips4_32r2,200 &feature_mips4_32r2,
202 &feature_mips1,201 &feature_mips1,
203 &feature_fp64,
204 &feature_mips5_32r2,
205 &feature_gp64,202 &feature_gp64,
206 &feature_mips4_32,203 &feature_mips4_32,
204 &feature_mips5_32r2,
205 &feature_mips3_32r2,
206 &feature_mips3_32,
207 },207 },
208};208};
209209
...@@ -235,12 +235,12 @@ pub const feature_mips32r2 = Feature{...@@ -235,12 +235,12 @@ pub const feature_mips32r2 = Feature{
235 .name = "mips32r2",235 .name = "mips32r2",
236 .description = "Mips32r2 ISA Support",236 .description = "Mips32r2 ISA Support",
237 .subfeatures = &[_]*const Feature {237 .subfeatures = &[_]*const Feature {
238 &feature_mips3_32r2,
239 &feature_mips3_32,
240 &feature_mips4_32r2,238 &feature_mips4_32r2,
241 &feature_mips1,239 &feature_mips1,
242 &feature_mips5_32r2,
243 &feature_mips4_32,240 &feature_mips4_32,
241 &feature_mips5_32r2,
242 &feature_mips3_32r2,
243 &feature_mips3_32,
244 },244 },
245};245};
246246
...@@ -248,12 +248,12 @@ pub const feature_mips32r3 = Feature{...@@ -248,12 +248,12 @@ pub const feature_mips32r3 = Feature{
248 .name = "mips32r3",248 .name = "mips32r3",
249 .description = "Mips32r3 ISA Support",249 .description = "Mips32r3 ISA Support",
250 .subfeatures = &[_]*const Feature {250 .subfeatures = &[_]*const Feature {
251 &feature_mips3_32r2,
252 &feature_mips3_32,
253 &feature_mips4_32r2,251 &feature_mips4_32r2,
254 &feature_mips1,252 &feature_mips1,
255 &feature_mips5_32r2,
256 &feature_mips4_32,253 &feature_mips4_32,
254 &feature_mips5_32r2,
255 &feature_mips3_32r2,
256 &feature_mips3_32,
257 },257 },
258};258};
259259
...@@ -261,12 +261,12 @@ pub const feature_mips32r5 = Feature{...@@ -261,12 +261,12 @@ pub const feature_mips32r5 = Feature{
261 .name = "mips32r5",261 .name = "mips32r5",
262 .description = "Mips32r5 ISA Support",262 .description = "Mips32r5 ISA Support",
263 .subfeatures = &[_]*const Feature {263 .subfeatures = &[_]*const Feature {
264 &feature_mips3_32r2,
265 &feature_mips3_32,
266 &feature_mips4_32r2,264 &feature_mips4_32r2,
267 &feature_mips1,265 &feature_mips1,
268 &feature_mips5_32r2,
269 &feature_mips4_32,266 &feature_mips4_32,
267 &feature_mips5_32r2,
268 &feature_mips3_32r2,
269 &feature_mips3_32,
270 },270 },
271};271};
272272
...@@ -274,15 +274,15 @@ pub const feature_mips32r6 = Feature{...@@ -274,15 +274,15 @@ pub const feature_mips32r6 = Feature{
274 .name = "mips32r6",274 .name = "mips32r6",
275 .description = "Mips32r6 ISA Support [experimental]",275 .description = "Mips32r6 ISA Support [experimental]",
276 .subfeatures = &[_]*const Feature {276 .subfeatures = &[_]*const Feature {
277 &feature_mips3_32r2,
278 &feature_mips3_32,
279 &feature_nan2008,
280 &feature_mips4_32r2,
281 &feature_mips1,
282 &feature_abs2008,277 &feature_abs2008,
283 &feature_fp64,278 &feature_fp64,
284 &feature_mips5_32r2,279 &feature_mips4_32r2,
280 &feature_nan2008,
281 &feature_mips1,
285 &feature_mips4_32,282 &feature_mips4_32,
283 &feature_mips5_32r2,
284 &feature_mips3_32r2,
285 &feature_mips3_32,
286 },286 },
287};287};
288288
...@@ -290,14 +290,14 @@ pub const feature_mips64 = Feature{...@@ -290,14 +290,14 @@ pub const feature_mips64 = Feature{
290 .name = "mips64",290 .name = "mips64",
291 .description = "Mips64 ISA Support",291 .description = "Mips64 ISA Support",
292 .subfeatures = &[_]*const Feature {292 .subfeatures = &[_]*const Feature {
293 &feature_mips3_32r2,293 &feature_fp64,
294 &feature_mips3_32,
295 &feature_mips4_32r2,294 &feature_mips4_32r2,
296 &feature_mips1,295 &feature_mips1,
297 &feature_fp64,
298 &feature_mips5_32r2,
299 &feature_gp64,296 &feature_gp64,
300 &feature_mips4_32,297 &feature_mips4_32,
298 &feature_mips5_32r2,
299 &feature_mips3_32r2,
300 &feature_mips3_32,
301 },301 },
302};302};
303303
...@@ -305,14 +305,14 @@ pub const feature_mips64r2 = Feature{...@@ -305,14 +305,14 @@ pub const feature_mips64r2 = Feature{
305 .name = "mips64r2",305 .name = "mips64r2",
306 .description = "Mips64r2 ISA Support",306 .description = "Mips64r2 ISA Support",
307 .subfeatures = &[_]*const Feature {307 .subfeatures = &[_]*const Feature {
308 &feature_mips3_32r2,308 &feature_fp64,
309 &feature_mips3_32,
310 &feature_mips4_32r2,309 &feature_mips4_32r2,
311 &feature_mips1,310 &feature_mips1,
312 &feature_fp64,
313 &feature_mips5_32r2,
314 &feature_gp64,311 &feature_gp64,
315 &feature_mips4_32,312 &feature_mips4_32,
313 &feature_mips5_32r2,
314 &feature_mips3_32r2,
315 &feature_mips3_32,
316 },316 },
317};317};
318318
...@@ -320,14 +320,14 @@ pub const feature_mips64r3 = Feature{...@@ -320,14 +320,14 @@ pub const feature_mips64r3 = Feature{
320 .name = "mips64r3",320 .name = "mips64r3",
321 .description = "Mips64r3 ISA Support",321 .description = "Mips64r3 ISA Support",
322 .subfeatures = &[_]*const Feature {322 .subfeatures = &[_]*const Feature {
323 &feature_mips3_32r2,323 &feature_fp64,
324 &feature_mips3_32,
325 &feature_mips4_32r2,324 &feature_mips4_32r2,
326 &feature_mips1,325 &feature_mips1,
327 &feature_fp64,
328 &feature_mips5_32r2,
329 &feature_gp64,326 &feature_gp64,
330 &feature_mips4_32,327 &feature_mips4_32,
328 &feature_mips5_32r2,
329 &feature_mips3_32r2,
330 &feature_mips3_32,
331 },331 },
332};332};
333333
...@@ -335,14 +335,14 @@ pub const feature_mips64r5 = Feature{...@@ -335,14 +335,14 @@ pub const feature_mips64r5 = Feature{
335 .name = "mips64r5",335 .name = "mips64r5",
336 .description = "Mips64r5 ISA Support",336 .description = "Mips64r5 ISA Support",
337 .subfeatures = &[_]*const Feature {337 .subfeatures = &[_]*const Feature {
338 &feature_mips3_32r2,338 &feature_fp64,
339 &feature_mips3_32,
340 &feature_mips4_32r2,339 &feature_mips4_32r2,
341 &feature_mips1,340 &feature_mips1,
342 &feature_fp64,
343 &feature_mips5_32r2,
344 &feature_gp64,341 &feature_gp64,
345 &feature_mips4_32,342 &feature_mips4_32,
343 &feature_mips5_32r2,
344 &feature_mips3_32r2,
345 &feature_mips3_32,
346 },346 },
347};347};
348348
...@@ -350,16 +350,16 @@ pub const feature_mips64r6 = Feature{...@@ -350,16 +350,16 @@ pub const feature_mips64r6 = Feature{
350 .name = "mips64r6",350 .name = "mips64r6",
351 .description = "Mips64r6 ISA Support [experimental]",351 .description = "Mips64r6 ISA Support [experimental]",
352 .subfeatures = &[_]*const Feature {352 .subfeatures = &[_]*const Feature {
353 &feature_mips3_32r2,
354 &feature_mips3_32,
355 &feature_nan2008,
356 &feature_mips4_32r2,
357 &feature_mips1,
358 &feature_abs2008,353 &feature_abs2008,
359 &feature_fp64,354 &feature_fp64,
360 &feature_mips5_32r2,355 &feature_mips4_32r2,
356 &feature_mips1,
361 &feature_gp64,357 &feature_gp64,
358 &feature_mips5_32r2,
362 &feature_mips4_32,359 &feature_mips4_32,
360 &feature_nan2008,
361 &feature_mips3_32r2,
362 &feature_mips3_32,
363 },363 },
364};364};
365365
...@@ -451,12 +451,12 @@ pub const feature_p5600 = Feature{...@@ -451,12 +451,12 @@ pub const feature_p5600 = Feature{
451 .name = "p5600",451 .name = "p5600",
452 .description = "The P5600 Processor",452 .description = "The P5600 Processor",
453 .subfeatures = &[_]*const Feature {453 .subfeatures = &[_]*const Feature {
454 &feature_mips3_32r2,
455 &feature_mips3_32,
456 &feature_mips4_32r2,454 &feature_mips4_32r2,
457 &feature_mips1,455 &feature_mips1,
458 &feature_mips5_32r2,
459 &feature_mips4_32,456 &feature_mips4_32,
457 &feature_mips5_32r2,
458 &feature_mips3_32r2,
459 &feature_mips3_32,
460 },460 },
461};461};
462462
...@@ -534,11 +534,11 @@ pub const cpu_mips3 = Cpu{...@@ -534,11 +534,11 @@ pub const cpu_mips3 = Cpu{
534 .name = "mips3",534 .name = "mips3",
535 .llvm_name = "mips3",535 .llvm_name = "mips3",
536 .subfeatures = &[_]*const Feature {536 .subfeatures = &[_]*const Feature {
537 &feature_mips3_32r2,
538 &feature_mips3_32,
539 &feature_mips1,
540 &feature_fp64,537 &feature_fp64,
538 &feature_mips1,
541 &feature_gp64,539 &feature_gp64,
540 &feature_mips3_32r2,
541 &feature_mips3_32,
542 &feature_mips3,542 &feature_mips3,
543 },543 },
544};544};
...@@ -558,12 +558,12 @@ pub const cpu_mips32r2 = Cpu{...@@ -558,12 +558,12 @@ pub const cpu_mips32r2 = Cpu{
558 .name = "mips32r2",558 .name = "mips32r2",
559 .llvm_name = "mips32r2",559 .llvm_name = "mips32r2",
560 .subfeatures = &[_]*const Feature {560 .subfeatures = &[_]*const Feature {
561 &feature_mips3_32r2,
562 &feature_mips3_32,
563 &feature_mips4_32r2,561 &feature_mips4_32r2,
564 &feature_mips1,562 &feature_mips1,
565 &feature_mips5_32r2,
566 &feature_mips4_32,563 &feature_mips4_32,
564 &feature_mips5_32r2,
565 &feature_mips3_32r2,
566 &feature_mips3_32,
567 &feature_mips32r2,567 &feature_mips32r2,
568 },568 },
569};569};
...@@ -572,12 +572,12 @@ pub const cpu_mips32r3 = Cpu{...@@ -572,12 +572,12 @@ pub const cpu_mips32r3 = Cpu{
572 .name = "mips32r3",572 .name = "mips32r3",
573 .llvm_name = "mips32r3",573 .llvm_name = "mips32r3",
574 .subfeatures = &[_]*const Feature {574 .subfeatures = &[_]*const Feature {
575 &feature_mips3_32r2,
576 &feature_mips3_32,
577 &feature_mips4_32r2,575 &feature_mips4_32r2,
578 &feature_mips1,576 &feature_mips1,
579 &feature_mips5_32r2,
580 &feature_mips4_32,577 &feature_mips4_32,
578 &feature_mips5_32r2,
579 &feature_mips3_32r2,
580 &feature_mips3_32,
581 &feature_mips32r3,581 &feature_mips32r3,
582 },582 },
583};583};
...@@ -586,12 +586,12 @@ pub const cpu_mips32r5 = Cpu{...@@ -586,12 +586,12 @@ pub const cpu_mips32r5 = Cpu{
586 .name = "mips32r5",586 .name = "mips32r5",
587 .llvm_name = "mips32r5",587 .llvm_name = "mips32r5",
588 .subfeatures = &[_]*const Feature {588 .subfeatures = &[_]*const Feature {
589 &feature_mips3_32r2,
590 &feature_mips3_32,
591 &feature_mips4_32r2,589 &feature_mips4_32r2,
592 &feature_mips1,590 &feature_mips1,
593 &feature_mips5_32r2,
594 &feature_mips4_32,591 &feature_mips4_32,
592 &feature_mips5_32r2,
593 &feature_mips3_32r2,
594 &feature_mips3_32,
595 &feature_mips32r5,595 &feature_mips32r5,
596 },596 },
597};597};
...@@ -600,15 +600,15 @@ pub const cpu_mips32r6 = Cpu{...@@ -600,15 +600,15 @@ pub const cpu_mips32r6 = Cpu{
600 .name = "mips32r6",600 .name = "mips32r6",
601 .llvm_name = "mips32r6",601 .llvm_name = "mips32r6",
602 .subfeatures = &[_]*const Feature {602 .subfeatures = &[_]*const Feature {
603 &feature_mips3_32r2,
604 &feature_mips3_32,
605 &feature_nan2008,
606 &feature_mips4_32r2,
607 &feature_mips1,
608 &feature_abs2008,603 &feature_abs2008,
609 &feature_fp64,604 &feature_fp64,
610 &feature_mips5_32r2,605 &feature_mips4_32r2,
606 &feature_nan2008,
607 &feature_mips1,
611 &feature_mips4_32,608 &feature_mips4_32,
609 &feature_mips5_32r2,
610 &feature_mips3_32r2,
611 &feature_mips3_32,
612 &feature_mips32r6,612 &feature_mips32r6,
613 },613 },
614};614};
...@@ -617,13 +617,13 @@ pub const cpu_mips4 = Cpu{...@@ -617,13 +617,13 @@ pub const cpu_mips4 = Cpu{
617 .name = "mips4",617 .name = "mips4",
618 .llvm_name = "mips4",618 .llvm_name = "mips4",
619 .subfeatures = &[_]*const Feature {619 .subfeatures = &[_]*const Feature {
620 &feature_mips3_32r2,620 &feature_fp64,
621 &feature_mips3_32,
622 &feature_mips4_32r2,621 &feature_mips4_32r2,
623 &feature_mips1,622 &feature_mips1,
624 &feature_fp64,
625 &feature_gp64,623 &feature_gp64,
626 &feature_mips4_32,624 &feature_mips4_32,
625 &feature_mips3_32r2,
626 &feature_mips3_32,
627 &feature_mips4,627 &feature_mips4,
628 },628 },
629};629};
...@@ -632,14 +632,14 @@ pub const cpu_mips5 = Cpu{...@@ -632,14 +632,14 @@ pub const cpu_mips5 = Cpu{
632 .name = "mips5",632 .name = "mips5",
633 .llvm_name = "mips5",633 .llvm_name = "mips5",
634 .subfeatures = &[_]*const Feature {634 .subfeatures = &[_]*const Feature {
635 &feature_mips3_32r2,635 &feature_fp64,
636 &feature_mips3_32,
637 &feature_mips4_32r2,636 &feature_mips4_32r2,
638 &feature_mips1,637 &feature_mips1,
639 &feature_fp64,
640 &feature_mips5_32r2,
641 &feature_gp64,638 &feature_gp64,
642 &feature_mips4_32,639 &feature_mips4_32,
640 &feature_mips5_32r2,
641 &feature_mips3_32r2,
642 &feature_mips3_32,
643 &feature_mips5,643 &feature_mips5,
644 },644 },
645};645};
...@@ -648,14 +648,14 @@ pub const cpu_mips64 = Cpu{...@@ -648,14 +648,14 @@ pub const cpu_mips64 = Cpu{
648 .name = "mips64",648 .name = "mips64",
649 .llvm_name = "mips64",649 .llvm_name = "mips64",
650 .subfeatures = &[_]*const Feature {650 .subfeatures = &[_]*const Feature {
651 &feature_mips3_32r2,651 &feature_fp64,
652 &feature_mips3_32,
653 &feature_mips4_32r2,652 &feature_mips4_32r2,
654 &feature_mips1,653 &feature_mips1,
655 &feature_fp64,
656 &feature_mips5_32r2,
657 &feature_gp64,654 &feature_gp64,
658 &feature_mips4_32,655 &feature_mips4_32,
656 &feature_mips5_32r2,
657 &feature_mips3_32r2,
658 &feature_mips3_32,
659 &feature_mips64,659 &feature_mips64,
660 },660 },
661};661};
...@@ -664,14 +664,14 @@ pub const cpu_mips64r2 = Cpu{...@@ -664,14 +664,14 @@ pub const cpu_mips64r2 = Cpu{
664 .name = "mips64r2",664 .name = "mips64r2",
665 .llvm_name = "mips64r2",665 .llvm_name = "mips64r2",
666 .subfeatures = &[_]*const Feature {666 .subfeatures = &[_]*const Feature {
667 &feature_mips3_32r2,667 &feature_fp64,
668 &feature_mips3_32,
669 &feature_mips4_32r2,668 &feature_mips4_32r2,
670 &feature_mips1,669 &feature_mips1,
671 &feature_fp64,
672 &feature_mips5_32r2,
673 &feature_gp64,670 &feature_gp64,
674 &feature_mips4_32,671 &feature_mips4_32,
672 &feature_mips5_32r2,
673 &feature_mips3_32r2,
674 &feature_mips3_32,
675 &feature_mips64r2,675 &feature_mips64r2,
676 },676 },
677};677};
...@@ -680,14 +680,14 @@ pub const cpu_mips64r3 = Cpu{...@@ -680,14 +680,14 @@ pub const cpu_mips64r3 = Cpu{
680 .name = "mips64r3",680 .name = "mips64r3",
681 .llvm_name = "mips64r3",681 .llvm_name = "mips64r3",
682 .subfeatures = &[_]*const Feature {682 .subfeatures = &[_]*const Feature {
683 &feature_mips3_32r2,683 &feature_fp64,
684 &feature_mips3_32,
685 &feature_mips4_32r2,684 &feature_mips4_32r2,
686 &feature_mips1,685 &feature_mips1,
687 &feature_fp64,
688 &feature_mips5_32r2,
689 &feature_gp64,686 &feature_gp64,
690 &feature_mips4_32,687 &feature_mips4_32,
688 &feature_mips5_32r2,
689 &feature_mips3_32r2,
690 &feature_mips3_32,
691 &feature_mips64r3,691 &feature_mips64r3,
692 },692 },
693};693};
...@@ -696,14 +696,14 @@ pub const cpu_mips64r5 = Cpu{...@@ -696,14 +696,14 @@ pub const cpu_mips64r5 = Cpu{
696 .name = "mips64r5",696 .name = "mips64r5",
697 .llvm_name = "mips64r5",697 .llvm_name = "mips64r5",
698 .subfeatures = &[_]*const Feature {698 .subfeatures = &[_]*const Feature {
699 &feature_mips3_32r2,699 &feature_fp64,
700 &feature_mips3_32,
701 &feature_mips4_32r2,700 &feature_mips4_32r2,
702 &feature_mips1,701 &feature_mips1,
703 &feature_fp64,
704 &feature_mips5_32r2,
705 &feature_gp64,702 &feature_gp64,
706 &feature_mips4_32,703 &feature_mips4_32,
704 &feature_mips5_32r2,
705 &feature_mips3_32r2,
706 &feature_mips3_32,
707 &feature_mips64r5,707 &feature_mips64r5,
708 },708 },
709};709};
...@@ -712,16 +712,16 @@ pub const cpu_mips64r6 = Cpu{...@@ -712,16 +712,16 @@ pub const cpu_mips64r6 = Cpu{
712 .name = "mips64r6",712 .name = "mips64r6",
713 .llvm_name = "mips64r6",713 .llvm_name = "mips64r6",
714 .subfeatures = &[_]*const Feature {714 .subfeatures = &[_]*const Feature {
715 &feature_mips3_32r2,
716 &feature_mips3_32,
717 &feature_nan2008,
718 &feature_mips4_32r2,
719 &feature_mips1,
720 &feature_abs2008,715 &feature_abs2008,
721 &feature_fp64,716 &feature_fp64,
722 &feature_mips5_32r2,717 &feature_mips4_32r2,
718 &feature_mips1,
723 &feature_gp64,719 &feature_gp64,
720 &feature_mips5_32r2,
724 &feature_mips4_32,721 &feature_mips4_32,
722 &feature_nan2008,
723 &feature_mips3_32r2,
724 &feature_mips3_32,
725 &feature_mips64r6,725 &feature_mips64r6,
726 },726 },
727};727};
...@@ -730,14 +730,14 @@ pub const cpu_octeon = Cpu{...@@ -730,14 +730,14 @@ pub const cpu_octeon = Cpu{
730 .name = "octeon",730 .name = "octeon",
731 .llvm_name = "octeon",731 .llvm_name = "octeon",
732 .subfeatures = &[_]*const Feature {732 .subfeatures = &[_]*const Feature {
733 &feature_mips3_32r2,733 &feature_fp64,
734 &feature_mips3_32,
735 &feature_mips4_32r2,734 &feature_mips4_32r2,
736 &feature_mips1,735 &feature_mips1,
737 &feature_fp64,
738 &feature_mips5_32r2,
739 &feature_gp64,736 &feature_gp64,
740 &feature_mips4_32,737 &feature_mips4_32,
738 &feature_mips5_32r2,
739 &feature_mips3_32r2,
740 &feature_mips3_32,
741 &feature_cnmips,741 &feature_cnmips,
742 &feature_mips64r2,742 &feature_mips64r2,
743 },743 },
...@@ -747,12 +747,12 @@ pub const cpu_p5600 = Cpu{...@@ -747,12 +747,12 @@ pub const cpu_p5600 = Cpu{
747 .name = "p5600",747 .name = "p5600",
748 .llvm_name = "p5600",748 .llvm_name = "p5600",
749 .subfeatures = &[_]*const Feature {749 .subfeatures = &[_]*const Feature {
750 &feature_mips3_32r2,
751 &feature_mips3_32,
752 &feature_mips4_32r2,750 &feature_mips4_32r2,
753 &feature_mips1,751 &feature_mips1,
754 &feature_mips5_32r2,
755 &feature_mips4_32,752 &feature_mips4_32,
753 &feature_mips5_32r2,
754 &feature_mips3_32r2,
755 &feature_mips3_32,
756 &feature_p5600,756 &feature_p5600,
757 },757 },
758};758};
lib/std/target/powerpc.zig+2-2
...@@ -261,8 +261,8 @@ pub const feature_power9Altivec = Feature{...@@ -261,8 +261,8 @@ pub const feature_power9Altivec = Feature{
261 .name = "power9-altivec",261 .name = "power9-altivec",
262 .description = "Enable POWER9 Altivec instructions",262 .description = "Enable POWER9 Altivec instructions",
263 .subfeatures = &[_]*const Feature {263 .subfeatures = &[_]*const Feature {
264 &feature_hardFloat,
265 &feature_isaV30Instructions,264 &feature_isaV30Instructions,
265 &feature_hardFloat,
266 },266 },
267};267};
268268
...@@ -270,8 +270,8 @@ pub const feature_power9Vector = Feature{...@@ -270,8 +270,8 @@ pub const feature_power9Vector = Feature{
270 .name = "power9-vector",270 .name = "power9-vector",
271 .description = "Enable POWER9 vector instructions",271 .description = "Enable POWER9 vector instructions",
272 .subfeatures = &[_]*const Feature {272 .subfeatures = &[_]*const Feature {
273 &feature_hardFloat,
274 &feature_isaV30Instructions,273 &feature_isaV30Instructions,
274 &feature_hardFloat,
275 },275 },
276};276};
277277
lib/std/target/sparc.zig-85
...@@ -1,13 +1,6 @@...@@ -1,13 +1,6 @@
1const Feature = @import("std").target.Feature;1const Feature = @import("std").target.Feature;
2const Cpu = @import("std").target.Cpu;2const Cpu = @import("std").target.Cpu;
33
4pub const feature_detectroundchange = Feature{
5 .name = "detectroundchange",
6 .description = "LEON3 erratum detection: Detects any rounding mode change request: use only the round-to-nearest rounding mode",
7 .subfeatures = &[_]*const Feature {
8 },
9};
10
11pub const feature_hardQuadFloat = Feature{4pub const feature_hardQuadFloat = Feature{
12 .name = "hard-quad-float",5 .name = "hard-quad-float",
13 .description = "Enable quad-word floating point instructions",6 .description = "Enable quad-word floating point instructions",
...@@ -92,50 +85,7 @@ pub const feature_vis3 = Feature{...@@ -92,50 +85,7 @@ pub const feature_vis3 = Feature{
92 },85 },
93};86};
9487
95pub const feature_fixallfdivsqrt = Feature{
96 .name = "fixallfdivsqrt",
97 .description = "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store",
98 .subfeatures = &[_]*const Feature {
99 },
100};
101
102pub const feature_insertnopload = Feature{
103 .name = "insertnopload",
104 .description = "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction",
105 .subfeatures = &[_]*const Feature {
106 },
107};
108
109pub const feature_hasleoncasa = Feature{
110 .name = "hasleoncasa",
111 .description = "Enable CASA instruction for LEON3 and LEON4 processors",
112 .subfeatures = &[_]*const Feature {
113 },
114};
115
116pub const feature_leoncyclecounter = Feature{
117 .name = "leoncyclecounter",
118 .description = "Use the Leon cycle counter register",
119 .subfeatures = &[_]*const Feature {
120 },
121};
122
123pub const feature_hasumacsmac = Feature{
124 .name = "hasumacsmac",
125 .description = "Enable UMAC and SMAC for LEON3 and LEON4 processors",
126 .subfeatures = &[_]*const Feature {
127 },
128};
129
130pub const feature_popc = Feature{
131 .name = "popc",
132 .description = "Use the popc (population count) instruction",
133 .subfeatures = &[_]*const Feature {
134 },
135};
136
137pub const features = &[_]*const Feature {88pub const features = &[_]*const Feature {
138 &feature_detectroundchange,
139 &feature_hardQuadFloat,89 &feature_hardQuadFloat,
140 &feature_leon,90 &feature_leon,
141 &feature_noFmuls,91 &feature_noFmuls,
...@@ -148,12 +98,6 @@ pub const features = &[_]*const Feature {...@@ -148,12 +98,6 @@ pub const features = &[_]*const Feature {
148 &feature_vis,98 &feature_vis,
149 &feature_vis2,99 &feature_vis2,
150 &feature_vis3,100 &feature_vis3,
151 &feature_fixallfdivsqrt,
152 &feature_insertnopload,
153 &feature_hasleoncasa,
154 &feature_leoncyclecounter,
155 &feature_hasumacsmac,
156 &feature_popc,
157};101};
158102
159pub const cpu_at697e = Cpu{103pub const cpu_at697e = Cpu{
...@@ -161,7 +105,6 @@ pub const cpu_at697e = Cpu{...@@ -161,7 +105,6 @@ pub const cpu_at697e = Cpu{
161 .llvm_name = "at697e",105 .llvm_name = "at697e",
162 .subfeatures = &[_]*const Feature {106 .subfeatures = &[_]*const Feature {
163 &feature_leon,107 &feature_leon,
164 &feature_insertnopload,
165 },108 },
166};109};
167110
...@@ -170,7 +113,6 @@ pub const cpu_at697f = Cpu{...@@ -170,7 +113,6 @@ pub const cpu_at697f = Cpu{
170 .llvm_name = "at697f",113 .llvm_name = "at697f",
171 .subfeatures = &[_]*const Feature {114 .subfeatures = &[_]*const Feature {
172 &feature_leon,115 &feature_leon,
173 &feature_insertnopload,
174 },116 },
175};117};
176118
...@@ -193,7 +135,6 @@ pub const cpu_gr712rc = Cpu{...@@ -193,7 +135,6 @@ pub const cpu_gr712rc = Cpu{
193 .llvm_name = "gr712rc",135 .llvm_name = "gr712rc",
194 .subfeatures = &[_]*const Feature {136 .subfeatures = &[_]*const Feature {
195 &feature_leon,137 &feature_leon,
196 &feature_hasleoncasa,
197 },138 },
198};139};
199140
...@@ -203,9 +144,6 @@ pub const cpu_gr740 = Cpu{...@@ -203,9 +144,6 @@ pub const cpu_gr740 = Cpu{
203 .subfeatures = &[_]*const Feature {144 .subfeatures = &[_]*const Feature {
204 &feature_leon,145 &feature_leon,
205 &feature_leonpwrpsr,146 &feature_leonpwrpsr,
206 &feature_hasleoncasa,
207 &feature_leoncyclecounter,
208 &feature_hasumacsmac,
209 },147 },
210};148};
211149
...@@ -229,7 +167,6 @@ pub const cpu_leon3 = Cpu{...@@ -229,7 +167,6 @@ pub const cpu_leon3 = Cpu{
229 .llvm_name = "leon3",167 .llvm_name = "leon3",
230 .subfeatures = &[_]*const Feature {168 .subfeatures = &[_]*const Feature {
231 &feature_leon,169 &feature_leon,
232 &feature_hasumacsmac,
233 },170 },
234};171};
235172
...@@ -238,8 +175,6 @@ pub const cpu_leon4 = Cpu{...@@ -238,8 +175,6 @@ pub const cpu_leon4 = Cpu{
238 .llvm_name = "leon4",175 .llvm_name = "leon4",
239 .subfeatures = &[_]*const Feature {176 .subfeatures = &[_]*const Feature {
240 &feature_leon,177 &feature_leon,
241 &feature_hasleoncasa,
242 &feature_hasumacsmac,
243 },178 },
244};179};
245180
...@@ -248,7 +183,6 @@ pub const cpu_ma2080 = Cpu{...@@ -248,7 +183,6 @@ pub const cpu_ma2080 = Cpu{
248 .llvm_name = "ma2080",183 .llvm_name = "ma2080",
249 .subfeatures = &[_]*const Feature {184 .subfeatures = &[_]*const Feature {
250 &feature_leon,185 &feature_leon,
251 &feature_hasleoncasa,
252 },186 },
253};187};
254188
...@@ -257,7 +191,6 @@ pub const cpu_ma2085 = Cpu{...@@ -257,7 +191,6 @@ pub const cpu_ma2085 = Cpu{
257 .llvm_name = "ma2085",191 .llvm_name = "ma2085",
258 .subfeatures = &[_]*const Feature {192 .subfeatures = &[_]*const Feature {
259 &feature_leon,193 &feature_leon,
260 &feature_hasleoncasa,
261 },194 },
262};195};
263196
...@@ -266,7 +199,6 @@ pub const cpu_ma2100 = Cpu{...@@ -266,7 +199,6 @@ pub const cpu_ma2100 = Cpu{
266 .llvm_name = "ma2100",199 .llvm_name = "ma2100",
267 .subfeatures = &[_]*const Feature {200 .subfeatures = &[_]*const Feature {
268 &feature_leon,201 &feature_leon,
269 &feature_hasleoncasa,
270 },202 },
271};203};
272204
...@@ -275,7 +207,6 @@ pub const cpu_ma2150 = Cpu{...@@ -275,7 +207,6 @@ pub const cpu_ma2150 = Cpu{
275 .llvm_name = "ma2150",207 .llvm_name = "ma2150",
276 .subfeatures = &[_]*const Feature {208 .subfeatures = &[_]*const Feature {
277 &feature_leon,209 &feature_leon,
278 &feature_hasleoncasa,
279 },210 },
280};211};
281212
...@@ -284,7 +215,6 @@ pub const cpu_ma2155 = Cpu{...@@ -284,7 +215,6 @@ pub const cpu_ma2155 = Cpu{
284 .llvm_name = "ma2155",215 .llvm_name = "ma2155",
285 .subfeatures = &[_]*const Feature {216 .subfeatures = &[_]*const Feature {
286 &feature_leon,217 &feature_leon,
287 &feature_hasleoncasa,
288 },218 },
289};219};
290220
...@@ -293,7 +223,6 @@ pub const cpu_ma2450 = Cpu{...@@ -293,7 +223,6 @@ pub const cpu_ma2450 = Cpu{
293 .llvm_name = "ma2450",223 .llvm_name = "ma2450",
294 .subfeatures = &[_]*const Feature {224 .subfeatures = &[_]*const Feature {
295 &feature_leon,225 &feature_leon,
296 &feature_hasleoncasa,
297 },226 },
298};227};
299228
...@@ -302,7 +231,6 @@ pub const cpu_ma2455 = Cpu{...@@ -302,7 +231,6 @@ pub const cpu_ma2455 = Cpu{
302 .llvm_name = "ma2455",231 .llvm_name = "ma2455",
303 .subfeatures = &[_]*const Feature {232 .subfeatures = &[_]*const Feature {
304 &feature_leon,233 &feature_leon,
305 &feature_hasleoncasa,
306 },234 },
307};235};
308236
...@@ -311,7 +239,6 @@ pub const cpu_ma2480 = Cpu{...@@ -311,7 +239,6 @@ pub const cpu_ma2480 = Cpu{
311 .llvm_name = "ma2480",239 .llvm_name = "ma2480",
312 .subfeatures = &[_]*const Feature {240 .subfeatures = &[_]*const Feature {
313 &feature_leon,241 &feature_leon,
314 &feature_hasleoncasa,
315 },242 },
316};243};
317244
...@@ -320,7 +247,6 @@ pub const cpu_ma2485 = Cpu{...@@ -320,7 +247,6 @@ pub const cpu_ma2485 = Cpu{
320 .llvm_name = "ma2485",247 .llvm_name = "ma2485",
321 .subfeatures = &[_]*const Feature {248 .subfeatures = &[_]*const Feature {
322 &feature_leon,249 &feature_leon,
323 &feature_hasleoncasa,
324 },250 },
325};251};
326252
...@@ -329,7 +255,6 @@ pub const cpu_ma2x5x = Cpu{...@@ -329,7 +255,6 @@ pub const cpu_ma2x5x = Cpu{
329 .llvm_name = "ma2x5x",255 .llvm_name = "ma2x5x",
330 .subfeatures = &[_]*const Feature {256 .subfeatures = &[_]*const Feature {
331 &feature_leon,257 &feature_leon,
332 &feature_hasleoncasa,
333 },258 },
334};259};
335260
...@@ -338,7 +263,6 @@ pub const cpu_ma2x8x = Cpu{...@@ -338,7 +263,6 @@ pub const cpu_ma2x8x = Cpu{
338 .llvm_name = "ma2x8x",263 .llvm_name = "ma2x8x",
339 .subfeatures = &[_]*const Feature {264 .subfeatures = &[_]*const Feature {
340 &feature_leon,265 &feature_leon,
341 &feature_hasleoncasa,
342 },266 },
343};267};
344268
...@@ -347,7 +271,6 @@ pub const cpu_myriad2 = Cpu{...@@ -347,7 +271,6 @@ pub const cpu_myriad2 = Cpu{
347 .llvm_name = "myriad2",271 .llvm_name = "myriad2",
348 .subfeatures = &[_]*const Feature {272 .subfeatures = &[_]*const Feature {
349 &feature_leon,273 &feature_leon,
350 &feature_hasleoncasa,
351 },274 },
352};275};
353276
...@@ -356,7 +279,6 @@ pub const cpu_myriad21 = Cpu{...@@ -356,7 +279,6 @@ pub const cpu_myriad21 = Cpu{
356 .llvm_name = "myriad2.1",279 .llvm_name = "myriad2.1",
357 .subfeatures = &[_]*const Feature {280 .subfeatures = &[_]*const Feature {
358 &feature_leon,281 &feature_leon,
359 &feature_hasleoncasa,
360 },282 },
361};283};
362284
...@@ -365,7 +287,6 @@ pub const cpu_myriad22 = Cpu{...@@ -365,7 +287,6 @@ pub const cpu_myriad22 = Cpu{
365 .llvm_name = "myriad2.2",287 .llvm_name = "myriad2.2",
366 .subfeatures = &[_]*const Feature {288 .subfeatures = &[_]*const Feature {
367 &feature_leon,289 &feature_leon,
368 &feature_hasleoncasa,
369 },290 },
370};291};
371292
...@@ -374,7 +295,6 @@ pub const cpu_myriad23 = Cpu{...@@ -374,7 +295,6 @@ pub const cpu_myriad23 = Cpu{
374 .llvm_name = "myriad2.3",295 .llvm_name = "myriad2.3",
375 .subfeatures = &[_]*const Feature {296 .subfeatures = &[_]*const Feature {
376 &feature_leon,297 &feature_leon,
377 &feature_hasleoncasa,
378 },298 },
379};299};
380300
...@@ -397,7 +317,6 @@ pub const cpu_niagara2 = Cpu{...@@ -397,7 +317,6 @@ pub const cpu_niagara2 = Cpu{
397 &feature_v9,317 &feature_v9,
398 &feature_vis,318 &feature_vis,
399 &feature_vis2,319 &feature_vis2,
400 &feature_popc,
401 },320 },
402};321};
403322
...@@ -409,7 +328,6 @@ pub const cpu_niagara3 = Cpu{...@@ -409,7 +328,6 @@ pub const cpu_niagara3 = Cpu{
409 &feature_v9,328 &feature_v9,
410 &feature_vis,329 &feature_vis,
411 &feature_vis2,330 &feature_vis2,
412 &feature_popc,
413 },331 },
414};332};
415333
...@@ -422,7 +340,6 @@ pub const cpu_niagara4 = Cpu{...@@ -422,7 +340,6 @@ pub const cpu_niagara4 = Cpu{
422 &feature_vis,340 &feature_vis,
423 &feature_vis2,341 &feature_vis2,
424 &feature_vis3,342 &feature_vis3,
425 &feature_popc,
426 },343 },
427};344};
428345
...@@ -489,8 +406,6 @@ pub const cpu_ut699 = Cpu{...@@ -489,8 +406,6 @@ pub const cpu_ut699 = Cpu{
489 &feature_leon,406 &feature_leon,
490 &feature_noFmuls,407 &feature_noFmuls,
491 &feature_noFsmuld,408 &feature_noFsmuld,
492 &feature_fixallfdivsqrt,
493 &feature_insertnopload,
494 },409 },
495};410};
496411