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
signaturelock-open 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{
887887 },
888888};
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
1457890pub const features = &[_]*const Feature {
1458891 &feature_aes,
1459892 &feature_am,
......@@ -1578,55 +1011,24 @@ pub const features = &[_]*const Feature {
15781011 &feature_zczFp,
15791012 &feature_zczFpWorkaround,
15801013 &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,
16111014};
16121015
16131016pub const cpu_appleLatest = Cpu{
16141017 .name = "apple-latest",
16151018 .llvm_name = "apple-latest",
16161019 .subfeatures = &[_]*const Feature {
1020 &feature_arithCbzFusion,
1021 &feature_alternateSextloadCvtF32Pattern,
16171022 &feature_zczFpWorkaround,
1618 &feature_fuseAes,
1023 &feature_fuseCryptoEor,
1024 &feature_disableLatencySchedHeuristic,
16191025 &feature_zcm,
1620 &feature_arithCbzFusion,
1026 &feature_zczFp,
16211027 &feature_perfmon,
1622 &feature_alternateSextloadCvtF32Pattern,
1028 &feature_fpArmv8,
1029 &feature_fuseAes,
16231030 &feature_arithBccFusion,
1624 &feature_disableLatencySchedHeuristic,
16251031 &feature_zczGp,
1626 &feature_fuseCryptoEor,
1627 &feature_fpArmv8,
1628 &feature_zczFp,
1629 &feature_cyclone,
16301032 },
16311033};
16321034
......@@ -1637,7 +1039,6 @@ pub const cpu_cortexA35 = Cpu{
16371039 &feature_fpArmv8,
16381040 &feature_perfmon,
16391041 &feature_crc,
1640 &feature_a35,
16411042 },
16421043};
16431044
......@@ -1645,15 +1046,14 @@ pub const cpu_cortexA53 = Cpu{
16451046 .name = "cortex-a53",
16461047 .llvm_name = "cortex-a53",
16471048 .subfeatures = &[_]*const Feature {
1648 &feature_useAa,
1649 &feature_balanceFpOps,
1650 &feature_fuseAes,
16511049 &feature_usePostraScheduler,
1050 &feature_crc,
16521051 &feature_perfmon,
1052 &feature_fuseAes,
1053 &feature_useAa,
16531054 &feature_fpArmv8,
1055 &feature_balanceFpOps,
16541056 &feature_customCheapAsMove,
1655 &feature_crc,
1656 &feature_a53,
16571057 },
16581058};
16591059
......@@ -1661,21 +1061,20 @@ pub const cpu_cortexA55 = Cpu{
16611061 .name = "cortex-a55",
16621062 .llvm_name = "cortex-a55",
16631063 .subfeatures = &[_]*const Feature {
1664 &feature_fuseAes,
1064 &feature_crc,
1065 &feature_dotprod,
16651066 &feature_ccpp,
1067 &feature_uaops,
1068 &feature_rcpc,
1069 &feature_lse,
16661070 &feature_lor,
1667 &feature_dotprod,
1668 &feature_perfmon,
16691071 &feature_pan,
1670 &feature_lse,
16711072 &feature_rdm,
1073 &feature_perfmon,
16721074 &feature_ras,
16731075 &feature_vh,
16741076 &feature_fpArmv8,
1675 &feature_uaops,
1676 &feature_rcpc,
1677 &feature_crc,
1678 &feature_a55,
1077 &feature_fuseAes,
16791078 },
16801079};
16811080
......@@ -1683,16 +1082,15 @@ pub const cpu_cortexA57 = Cpu{
16831082 .name = "cortex-a57",
16841083 .llvm_name = "cortex-a57",
16851084 .subfeatures = &[_]*const Feature {
1686 &feature_fuseLiterals,
1687 &feature_balanceFpOps,
1688 &feature_predictableSelectExpensive,
1689 &feature_fuseAes,
16901085 &feature_usePostraScheduler,
1086 &feature_crc,
1087 &feature_fuseLiterals,
16911088 &feature_perfmon,
1089 &feature_fuseAes,
16921090 &feature_fpArmv8,
1091 &feature_balanceFpOps,
16931092 &feature_customCheapAsMove,
1694 &feature_crc,
1695 &feature_a57,
1093 &feature_predictableSelectExpensive,
16961094 },
16971095};
16981096
......@@ -1700,20 +1098,19 @@ pub const cpu_cortexA65 = Cpu{
17001098 .name = "cortex-a65",
17011099 .llvm_name = "cortex-a65",
17021100 .subfeatures = &[_]*const Feature {
1101 &feature_ssbs,
1102 &feature_dotprod,
1103 &feature_crc,
1104 &feature_uaops,
17031105 &feature_rcpc,
1704 &feature_ccpp,
1106 &feature_lse,
17051107 &feature_lor,
1706 &feature_dotprod,
17071108 &feature_pan,
1708 &feature_lse,
17091109 &feature_rdm,
1110 &feature_ras,
17101111 &feature_vh,
17111112 &feature_fpArmv8,
1712 &feature_uaops,
1713 &feature_ras,
1714 &feature_ssbs,
1715 &feature_crc,
1716 &feature_a65,
1113 &feature_ccpp,
17171114 },
17181115};
17191116
......@@ -1721,20 +1118,19 @@ pub const cpu_cortexA65ae = Cpu{
17211118 .name = "cortex-a65ae",
17221119 .llvm_name = "cortex-a65ae",
17231120 .subfeatures = &[_]*const Feature {
1121 &feature_ssbs,
1122 &feature_dotprod,
1123 &feature_crc,
1124 &feature_uaops,
17241125 &feature_rcpc,
1725 &feature_ccpp,
1126 &feature_lse,
17261127 &feature_lor,
1727 &feature_dotprod,
17281128 &feature_pan,
1729 &feature_lse,
17301129 &feature_rdm,
1130 &feature_ras,
17311131 &feature_vh,
17321132 &feature_fpArmv8,
1733 &feature_uaops,
1734 &feature_ras,
1735 &feature_ssbs,
1736 &feature_crc,
1737 &feature_a65,
1133 &feature_ccpp,
17381134 },
17391135};
17401136
......@@ -1744,9 +1140,8 @@ pub const cpu_cortexA72 = Cpu{
17441140 .subfeatures = &[_]*const Feature {
17451141 &feature_fpArmv8,
17461142 &feature_fuseAes,
1747 &feature_crc,
17481143 &feature_perfmon,
1749 &feature_a72,
1144 &feature_crc,
17501145 },
17511146};
17521147
......@@ -1756,9 +1151,8 @@ pub const cpu_cortexA73 = Cpu{
17561151 .subfeatures = &[_]*const Feature {
17571152 &feature_fpArmv8,
17581153 &feature_fuseAes,
1759 &feature_crc,
17601154 &feature_perfmon,
1761 &feature_a73,
1155 &feature_crc,
17621156 },
17631157};
17641158
......@@ -1766,21 +1160,20 @@ pub const cpu_cortexA75 = Cpu{
17661160 .name = "cortex-a75",
17671161 .llvm_name = "cortex-a75",
17681162 .subfeatures = &[_]*const Feature {
1769 &feature_fuseAes,
1163 &feature_crc,
1164 &feature_dotprod,
17701165 &feature_ccpp,
1166 &feature_uaops,
1167 &feature_rcpc,
1168 &feature_lse,
17711169 &feature_lor,
1772 &feature_dotprod,
1773 &feature_perfmon,
17741170 &feature_pan,
1775 &feature_lse,
17761171 &feature_rdm,
1172 &feature_perfmon,
17771173 &feature_ras,
17781174 &feature_vh,
17791175 &feature_fpArmv8,
1780 &feature_uaops,
1781 &feature_rcpc,
1782 &feature_crc,
1783 &feature_a75,
1176 &feature_fuseAes,
17841177 },
17851178};
17861179
......@@ -1788,20 +1181,19 @@ pub const cpu_cortexA76 = Cpu{
17881181 .name = "cortex-a76",
17891182 .llvm_name = "cortex-a76",
17901183 .subfeatures = &[_]*const Feature {
1791 &feature_ccpp,
1792 &feature_lor,
1184 &feature_crc,
1185 &feature_ssbs,
17931186 &feature_dotprod,
1794 &feature_pan,
1187 &feature_uaops,
1188 &feature_rcpc,
17951189 &feature_lse,
1190 &feature_lor,
1191 &feature_pan,
17961192 &feature_rdm,
17971193 &feature_ras,
17981194 &feature_vh,
17991195 &feature_fpArmv8,
1800 &feature_uaops,
1801 &feature_rcpc,
1802 &feature_ssbs,
1803 &feature_crc,
1804 &feature_a76,
1196 &feature_ccpp,
18051197 },
18061198};
18071199
......@@ -1809,20 +1201,19 @@ pub const cpu_cortexA76ae = Cpu{
18091201 .name = "cortex-a76ae",
18101202 .llvm_name = "cortex-a76ae",
18111203 .subfeatures = &[_]*const Feature {
1812 &feature_ccpp,
1813 &feature_lor,
1204 &feature_crc,
1205 &feature_ssbs,
18141206 &feature_dotprod,
1815 &feature_pan,
1207 &feature_uaops,
1208 &feature_rcpc,
18161209 &feature_lse,
1210 &feature_lor,
1211 &feature_pan,
18171212 &feature_rdm,
18181213 &feature_ras,
18191214 &feature_vh,
18201215 &feature_fpArmv8,
1821 &feature_uaops,
1822 &feature_rcpc,
1823 &feature_ssbs,
1824 &feature_crc,
1825 &feature_a76,
1216 &feature_ccpp,
18261217 },
18271218};
18281219
......@@ -1830,19 +1221,18 @@ pub const cpu_cyclone = Cpu{
18301221 .name = "cyclone",
18311222 .llvm_name = "cyclone",
18321223 .subfeatures = &[_]*const Feature {
1224 &feature_arithCbzFusion,
1225 &feature_alternateSextloadCvtF32Pattern,
18331226 &feature_zczFpWorkaround,
1834 &feature_fuseAes,
1227 &feature_fuseCryptoEor,
1228 &feature_disableLatencySchedHeuristic,
18351229 &feature_zcm,
1836 &feature_arithCbzFusion,
1230 &feature_zczFp,
18371231 &feature_perfmon,
1838 &feature_alternateSextloadCvtF32Pattern,
1232 &feature_fpArmv8,
1233 &feature_fuseAes,
18391234 &feature_arithBccFusion,
1840 &feature_disableLatencySchedHeuristic,
18411235 &feature_zczGp,
1842 &feature_fuseCryptoEor,
1843 &feature_fpArmv8,
1844 &feature_zczFp,
1845 &feature_cyclone,
18461236 },
18471237};
18481238
......@@ -1851,17 +1241,16 @@ pub const cpu_exynosM1 = Cpu{
18511241 .llvm_name = "exynos-m1",
18521242 .subfeatures = &[_]*const Feature {
18531243 &feature_useReciprocalSquareRoot,
1854 &feature_fuseAes,
18551244 &feature_usePostraScheduler,
1245 &feature_crc,
1246 &feature_zczFp,
1247 &feature_slowPaired128,
1248 &feature_force32bitJumpTables,
18561249 &feature_slowMisaligned128store,
18571250 &feature_perfmon,
18581251 &feature_fpArmv8,
1252 &feature_fuseAes,
18591253 &feature_customCheapAsMove,
1860 &feature_force32bitJumpTables,
1861 &feature_zczFp,
1862 &feature_crc,
1863 &feature_slowPaired128,
1864 &feature_exynosm1,
18651254 },
18661255};
18671256
......@@ -1869,17 +1258,16 @@ pub const cpu_exynosM2 = Cpu{
18691258 .name = "exynos-m2",
18701259 .llvm_name = "exynos-m2",
18711260 .subfeatures = &[_]*const Feature {
1872 &feature_fuseAes,
18731261 &feature_usePostraScheduler,
1262 &feature_crc,
1263 &feature_zczFp,
1264 &feature_slowPaired128,
1265 &feature_force32bitJumpTables,
18741266 &feature_slowMisaligned128store,
18751267 &feature_perfmon,
18761268 &feature_fpArmv8,
1269 &feature_fuseAes,
18771270 &feature_customCheapAsMove,
1878 &feature_force32bitJumpTables,
1879 &feature_zczFp,
1880 &feature_crc,
1881 &feature_slowPaired128,
1882 &feature_exynosm2,
18831271 },
18841272};
18851273
......@@ -1887,20 +1275,19 @@ pub const cpu_exynosM3 = Cpu{
18871275 .name = "exynos-m3",
18881276 .llvm_name = "exynos-m3",
18891277 .subfeatures = &[_]*const Feature {
1890 &feature_fuseLiterals,
1891 &feature_predictableSelectExpensive,
1892 &feature_fuseAes,
18931278 &feature_fuseAddress,
1894 &feature_fuseCsel,
18951279 &feature_usePostraScheduler,
1280 &feature_crc,
1281 &feature_zczFp,
1282 &feature_fuseLiterals,
1283 &feature_lslFast,
1284 &feature_fuseCsel,
1285 &feature_force32bitJumpTables,
18961286 &feature_perfmon,
18971287 &feature_fpArmv8,
1288 &feature_fuseAes,
18981289 &feature_customCheapAsMove,
1899 &feature_lslFast,
1900 &feature_force32bitJumpTables,
1901 &feature_zczFp,
1902 &feature_crc,
1903 &feature_exynosm3,
1290 &feature_predictableSelectExpensive,
19041291 },
19051292};
19061293
......@@ -1909,31 +1296,30 @@ pub const cpu_exynosM4 = Cpu{
19091296 .llvm_name = "exynos-m4",
19101297 .subfeatures = &[_]*const Feature {
19111298 &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,
19301299 &feature_uaops,
1300 &feature_fuseCsel,
1301 &feature_force32bitJumpTables,
19311302 &feature_fuseArithLogic,
1932 &feature_usePostraScheduler,
19331303 &feature_vh,
1304 &feature_arithBccFusion,
1305 &feature_zczGp,
1306 &feature_usePostraScheduler,
1307 &feature_dotprod,
1308 &feature_lse,
1309 &feature_pan,
19341310 &feature_ras,
1311 &feature_fuseAes,
1312 &feature_fuseAddress,
1313 &feature_rdm,
1314 &feature_arithCbzFusion,
1315 &feature_crc,
19351316 &feature_zczFp,
1936 &feature_exynosm4,
1317 &feature_lslFast,
1318 &feature_lor,
1319 &feature_perfmon,
1320 &feature_fpArmv8,
1321 &feature_ccpp,
1322 &feature_customCheapAsMove,
19371323 },
19381324};
19391325
......@@ -1942,31 +1328,30 @@ pub const cpu_exynosM5 = Cpu{
19421328 .llvm_name = "exynos-m5",
19431329 .subfeatures = &[_]*const Feature {
19441330 &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,
19631331 &feature_uaops,
1332 &feature_fuseCsel,
1333 &feature_force32bitJumpTables,
19641334 &feature_fuseArithLogic,
1965 &feature_usePostraScheduler,
19661335 &feature_vh,
1336 &feature_arithBccFusion,
1337 &feature_zczGp,
1338 &feature_usePostraScheduler,
1339 &feature_dotprod,
1340 &feature_lse,
1341 &feature_pan,
19671342 &feature_ras,
1343 &feature_fuseAes,
1344 &feature_fuseAddress,
1345 &feature_rdm,
1346 &feature_arithCbzFusion,
1347 &feature_crc,
19681348 &feature_zczFp,
1969 &feature_exynosm4,
1349 &feature_lslFast,
1350 &feature_lor,
1351 &feature_perfmon,
1352 &feature_fpArmv8,
1353 &feature_ccpp,
1354 &feature_customCheapAsMove,
19701355 },
19711356};
19721357
......@@ -1974,18 +1359,17 @@ pub const cpu_falkor = Cpu{
19741359 .name = "falkor",
19751360 .llvm_name = "falkor",
19761361 .subfeatures = &[_]*const Feature {
1977 &feature_predictableSelectExpensive,
19781362 &feature_usePostraScheduler,
1979 &feature_perfmon,
1363 &feature_crc,
1364 &feature_zczFp,
1365 &feature_lslFast,
19801366 &feature_slowStrqroStore,
19811367 &feature_rdm,
1982 &feature_zczGp,
1368 &feature_perfmon,
19831369 &feature_fpArmv8,
1370 &feature_zczGp,
19841371 &feature_customCheapAsMove,
1985 &feature_lslFast,
1986 &feature_zczFp,
1987 &feature_crc,
1988 &feature_falkor,
1372 &feature_predictableSelectExpensive,
19891373 },
19901374};
19911375
......@@ -2007,16 +1391,15 @@ pub const cpu_kryo = Cpu{
20071391 .name = "kryo",
20081392 .llvm_name = "kryo",
20091393 .subfeatures = &[_]*const Feature {
2010 &feature_predictableSelectExpensive,
20111394 &feature_usePostraScheduler,
1395 &feature_crc,
1396 &feature_zczFp,
1397 &feature_lslFast,
20121398 &feature_perfmon,
2013 &feature_zczGp,
20141399 &feature_fpArmv8,
1400 &feature_zczGp,
20151401 &feature_customCheapAsMove,
2016 &feature_lslFast,
2017 &feature_zczFp,
2018 &feature_crc,
2019 &feature_kryo,
1402 &feature_predictableSelectExpensive,
20201403 },
20211404};
20221405
......@@ -2024,20 +1407,19 @@ pub const cpu_neoverseE1 = Cpu{
20241407 .name = "neoverse-e1",
20251408 .llvm_name = "neoverse-e1",
20261409 .subfeatures = &[_]*const Feature {
2027 &feature_ccpp,
2028 &feature_lor,
1410 &feature_crc,
1411 &feature_ssbs,
20291412 &feature_dotprod,
2030 &feature_pan,
1413 &feature_uaops,
1414 &feature_rcpc,
20311415 &feature_lse,
1416 &feature_lor,
1417 &feature_pan,
20321418 &feature_rdm,
20331419 &feature_ras,
20341420 &feature_vh,
20351421 &feature_fpArmv8,
2036 &feature_uaops,
2037 &feature_rcpc,
2038 &feature_ssbs,
2039 &feature_crc,
2040 &feature_neoversee1,
1422 &feature_ccpp,
20411423 },
20421424};
20431425
......@@ -2045,21 +1427,20 @@ pub const cpu_neoverseN1 = Cpu{
20451427 .name = "neoverse-n1",
20461428 .llvm_name = "neoverse-n1",
20471429 .subfeatures = &[_]*const Feature {
2048 &feature_ccpp,
2049 &feature_lor,
1430 &feature_ssbs,
20501431 &feature_dotprod,
1432 &feature_crc,
1433 &feature_uaops,
1434 &feature_rcpc,
1435 &feature_lse,
20511436 &feature_spe,
1437 &feature_lor,
20521438 &feature_pan,
2053 &feature_lse,
20541439 &feature_rdm,
20551440 &feature_ras,
20561441 &feature_vh,
20571442 &feature_fpArmv8,
2058 &feature_uaops,
2059 &feature_rcpc,
2060 &feature_ssbs,
2061 &feature_crc,
2062 &feature_neoversen1,
1443 &feature_ccpp,
20631444 },
20641445};
20651446
......@@ -2067,37 +1448,36 @@ pub const cpu_saphira = Cpu{
20671448 .name = "saphira",
20681449 .llvm_name = "saphira",
20691450 .subfeatures = &[_]*const Feature {
2070 &feature_ccpp,
2071 &feature_lor,
2072 &feature_dotprod,
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,
1451 &feature_uaops,
1452 &feature_vh,
1453 &feature_nv,
20821454 &feature_zczGp,
2083 &feature_rdm,
2084 &feature_ccidx,
20851455 &feature_mpam,
2086 &feature_pan,
2087 &feature_lse,
1456 &feature_predictableSelectExpensive,
1457 &feature_am,
1458 &feature_usePostraScheduler,
1459 &feature_dotprod,
20881460 &feature_rcpc,
2089 &feature_uaops,
1461 &feature_lse,
1462 &feature_pan,
1463 &feature_ras,
1464 &feature_tlbRmi,
20901465 &feature_sel2,
2091 &feature_usePostraScheduler,
2092 &feature_nv,
2093 &feature_am,
2094 &feature_spe,
1466 &feature_rdm,
1467 &feature_ccidx,
20951468 &feature_dit,
2096 &feature_vh,
2097 &feature_ras,
1469 &feature_crc,
20981470 &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,
20991480 &feature_pa,
2100 &feature_saphira,
21011481 },
21021482};
21031483
......@@ -2105,12 +1485,11 @@ pub const cpu_thunderx = Cpu{
21051485 .name = "thunderx",
21061486 .llvm_name = "thunderx",
21071487 .subfeatures = &[_]*const Feature {
2108 &feature_predictableSelectExpensive,
21091488 &feature_usePostraScheduler,
1489 &feature_crc,
21101490 &feature_perfmon,
21111491 &feature_fpArmv8,
2112 &feature_crc,
2113 &feature_thunderx,
1492 &feature_predictableSelectExpensive,
21141493 },
21151494};
21161495
......@@ -2118,18 +1497,17 @@ pub const cpu_thunderx2t99 = Cpu{
21181497 .name = "thunderx2t99",
21191498 .llvm_name = "thunderx2t99",
21201499 .subfeatures = &[_]*const Feature {
2121 &feature_predictableSelectExpensive,
21221500 &feature_usePostraScheduler,
2123 &feature_lor,
1501 &feature_crc,
21241502 &feature_lse,
1503 &feature_lor,
1504 &feature_aggressiveFma,
21251505 &feature_pan,
2126 &feature_arithBccFusion,
21271506 &feature_rdm,
2128 &feature_aggressiveFma,
21291507 &feature_vh,
21301508 &feature_fpArmv8,
2131 &feature_crc,
2132 &feature_thunderx2t99,
1509 &feature_arithBccFusion,
1510 &feature_predictableSelectExpensive,
21331511 },
21341512};
21351513
......@@ -2137,12 +1515,11 @@ pub const cpu_thunderxt81 = Cpu{
21371515 .name = "thunderxt81",
21381516 .llvm_name = "thunderxt81",
21391517 .subfeatures = &[_]*const Feature {
2140 &feature_predictableSelectExpensive,
21411518 &feature_usePostraScheduler,
1519 &feature_crc,
21421520 &feature_perfmon,
21431521 &feature_fpArmv8,
2144 &feature_crc,
2145 &feature_thunderxt81,
1522 &feature_predictableSelectExpensive,
21461523 },
21471524};
21481525
......@@ -2150,12 +1527,11 @@ pub const cpu_thunderxt83 = Cpu{
21501527 .name = "thunderxt83",
21511528 .llvm_name = "thunderxt83",
21521529 .subfeatures = &[_]*const Feature {
2153 &feature_predictableSelectExpensive,
21541530 &feature_usePostraScheduler,
1531 &feature_crc,
21551532 &feature_perfmon,
21561533 &feature_fpArmv8,
2157 &feature_crc,
2158 &feature_thunderxt83,
1534 &feature_predictableSelectExpensive,
21591535 },
21601536};
21611537
......@@ -2163,12 +1539,11 @@ pub const cpu_thunderxt88 = Cpu{
21631539 .name = "thunderxt88",
21641540 .llvm_name = "thunderxt88",
21651541 .subfeatures = &[_]*const Feature {
2166 &feature_predictableSelectExpensive,
21671542 &feature_usePostraScheduler,
1543 &feature_crc,
21681544 &feature_perfmon,
21691545 &feature_fpArmv8,
2170 &feature_crc,
2171 &feature_thunderxt88,
1546 &feature_predictableSelectExpensive,
21721547 },
21731548};
21741549
......@@ -2176,23 +1551,22 @@ pub const cpu_tsv110 = Cpu{
21761551 .name = "tsv110",
21771552 .llvm_name = "tsv110",
21781553 .subfeatures = &[_]*const Feature {
2179 &feature_fuseAes,
21801554 &feature_usePostraScheduler,
2181 &feature_ccpp,
2182 &feature_lor,
1555 &feature_crc,
21831556 &feature_dotprod,
1557 &feature_ccpp,
21841558 &feature_uaops,
2185 &feature_perfmon,
1559 &feature_lse,
1560 &feature_lor,
21861561 &feature_spe,
21871562 &feature_pan,
2188 &feature_lse,
21891563 &feature_rdm,
1564 &feature_perfmon,
1565 &feature_ras,
21901566 &feature_vh,
21911567 &feature_fpArmv8,
1568 &feature_fuseAes,
21921569 &feature_customCheapAsMove,
2193 &feature_ras,
2194 &feature_crc,
2195 &feature_tsv110,
21961570 },
21971571};
21981572
lib/std/target/amdgpu.zig+444-626
......@@ -312,43 +312,6 @@ pub const feature_gfx8Insts = Feature{
312312 },
313313};
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
352315pub const feature_gfx9Insts = Feature{
353316 .name = "gfx9-insts",
354317 .description = "Additional instructions for GFX9+",
......@@ -356,47 +319,6 @@ pub const feature_gfx9Insts = Feature{
356319 },
357320};
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
400322pub const feature_gfx10Insts = Feature{
401323 .name = "gfx10-insts",
402324 .description = "Additional instructions for GFX10+",
......@@ -684,39 +606,6 @@ pub const feature_scalarStores = Feature{
684606 },
685607};
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
720609pub const feature_trapHandler = Feature{
721610 .name = "trap-handler",
722611 .description = "Trap handler support",
......@@ -794,35 +683,6 @@ pub const feature_vcmpxPermlaneHazard = Feature{
794683 },
795684};
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
826686pub const feature_vscnt = Feature{
827687 .name = "vscnt",
828688 .description = "Has separate store vscnt counter",
......@@ -910,9 +770,7 @@ pub const features = &[_]*const Feature {
910770 &feature_gcn3Encoding,
911771 &feature_gfx7Gfx8Gfx9Insts,
912772 &feature_gfx8Insts,
913 &feature_gfx9,
914773 &feature_gfx9Insts,
915 &feature_gfx10,
916774 &feature_gfx10Insts,
917775 &feature_instFwdPrefetchBug,
918776 &feature_intClampInsts,
......@@ -954,8 +812,6 @@ pub const features = &[_]*const Feature {
954812 &feature_scalarAtomics,
955813 &feature_scalarFlatScratchInsts,
956814 &feature_scalarStores,
957 &feature_seaIslands,
958 &feature_southernIslands,
959815 &feature_trapHandler,
960816 &feature_trigReducedRange,
961817 &feature_unalignedBufferAccess,
......@@ -967,7 +823,6 @@ pub const features = &[_]*const Feature {
967823 &feature_vop3p,
968824 &feature_vcmpxExecWarHazard,
969825 &feature_vcmpxPermlaneHazard,
970 &feature_volcanicIslands,
971826 &feature_vscnt,
972827 &feature_wavefrontsize16,
973828 &feature_wavefrontsize32,
......@@ -983,17 +838,16 @@ pub const cpu_bonaire = Cpu{
983838 &feature_codeObjectV3,
984839 &feature_noXnackSupport,
985840 &feature_ldsbankcount32,
986 &feature_trigReducedRange,
987841 &feature_noSramEccSupport,
842 &feature_flatAddressSpace,
843 &feature_mimgR128,
844 &feature_trigReducedRange,
845 &feature_gfx7Gfx8Gfx9Insts,
846 &feature_ciInsts,
847 &feature_wavefrontsize64,
988848 &feature_fp64,
989849 &feature_movrel,
990 &feature_ciInsts,
991850 &feature_localmemorysize65536,
992 &feature_mimgR128,
993 &feature_wavefrontsize64,
994 &feature_flatAddressSpace,
995 &feature_gfx7Gfx8Gfx9Insts,
996 &feature_seaIslands,
997851 },
998852};
999853
......@@ -1005,29 +859,28 @@ pub const cpu_carrizo = Cpu{
1005859 &feature_fastFmaf,
1006860 &feature_ldsbankcount32,
1007861 &feature_unpackedD16Vmem,
1008 &feature_fp64,
1009 &feature_sMemrealtime,
1010 &feature_gfx8Insts,
1011 &feature_dpp,
862 &feature_mimgR128,
863 &feature_inv2piInlineImm,
1012864 &feature_ciInsts,
865 &feature_vgprIndexMode,
1013866 &feature_scalarStores,
1014 &feature_intClampInsts,
1015867 &feature_gcn3Encoding,
868 &feature_fp64,
869 &feature_dpp,
870 &feature_trigReducedRange,
1016871 &feature_gfx7Gfx8Gfx9Insts,
1017 &feature_wavefrontsize64,
872 &feature_sMemrealtime,
1018873 &feature_movrel,
1019 &feature_vgprIndexMode,
1020 &feature_trigReducedRange,
1021 &feature_noSramEccSupport,
1022 &feature_sdwa,
1023 &feature_sdwaMav,
1024 &feature_sdwaOutModsVopc,
1025874 &feature_localmemorysize65536,
1026 &feature_mimgR128,
875 &feature_noSramEccSupport,
876 &feature_gfx8Insts,
1027877 &feature_flatAddressSpace,
1028 &feature_inv2piInlineImm,
1029878 &feature_BitInsts16,
1030 &feature_volcanicIslands,
879 &feature_sdwaMav,
880 &feature_sdwa,
881 &feature_sdwaOutModsVopc,
882 &feature_wavefrontsize64,
883 &feature_intClampInsts,
1031884 &feature_xnack,
1032885 &feature_halfRate64Ops,
1033886 },
......@@ -1041,29 +894,28 @@ pub const cpu_fiji = Cpu{
1041894 &feature_noXnackSupport,
1042895 &feature_ldsbankcount32,
1043896 &feature_unpackedD16Vmem,
1044 &feature_fp64,
1045 &feature_sMemrealtime,
1046 &feature_gfx8Insts,
1047 &feature_dpp,
897 &feature_mimgR128,
898 &feature_inv2piInlineImm,
1048899 &feature_ciInsts,
900 &feature_vgprIndexMode,
1049901 &feature_scalarStores,
1050 &feature_intClampInsts,
1051902 &feature_gcn3Encoding,
903 &feature_fp64,
904 &feature_dpp,
905 &feature_trigReducedRange,
1052906 &feature_gfx7Gfx8Gfx9Insts,
1053 &feature_wavefrontsize64,
907 &feature_sMemrealtime,
1054908 &feature_movrel,
1055 &feature_vgprIndexMode,
1056 &feature_trigReducedRange,
1057 &feature_noSramEccSupport,
1058 &feature_sdwa,
1059 &feature_sdwaMav,
1060 &feature_sdwaOutModsVopc,
1061909 &feature_localmemorysize65536,
1062 &feature_mimgR128,
910 &feature_noSramEccSupport,
911 &feature_gfx8Insts,
1063912 &feature_flatAddressSpace,
1064 &feature_inv2piInlineImm,
1065913 &feature_BitInsts16,
1066 &feature_volcanicIslands,
914 &feature_sdwaMav,
915 &feature_sdwa,
916 &feature_sdwaOutModsVopc,
917 &feature_wavefrontsize64,
918 &feature_intClampInsts,
1067919 },
1068920};
1069921
......@@ -1092,41 +944,40 @@ pub const cpu_gfx1010 = Cpu{
1092944 &feature_dlInsts,
1093945 &feature_noXnackSupport,
1094946 &feature_flatSegmentOffsetBug,
1095 &feature_registerBanking,
1096 &feature_fp64,
1097 &feature_vop3p,
1098 &feature_sMemrealtime,
1099 &feature_gfx8Insts,
1100 &feature_dpp,
1101 &feature_sdwaSdst,
947 &feature_mimgR128,
948 &feature_addNoCarryInsts,
949 &feature_dpp8,
950 &feature_gfx9Insts,
1102951 &feature_ciInsts,
952 &feature_inv2piInlineImm,
953 &feature_fastFmaf,
954 &feature_registerBanking,
1103955 &feature_apertureRegs,
1104 &feature_intClampInsts,
956 &feature_flatGlobalInsts,
957 &feature_fp64,
958 &feature_vscnt,
1105959 &feature_flatScratchInsts,
960 &feature_dpp,
961 &feature_sMemrealtime,
962 &feature_vop3p,
963 &feature_flatInstOffsets,
1106964 &feature_sdwaScalar,
1107 &feature_fastFmaf,
1108 &feature_pkFmacF16Inst,
1109 &feature_vscnt,
965 &feature_sdwaSdst,
1110966 &feature_movrel,
1111 &feature_fmaMixInsts,
967 &feature_localmemorysize65536,
968 &feature_noSdstCmpx,
969 &feature_pkFmacF16Inst,
1112970 &feature_noSramEccSupport,
1113 &feature_sdwa,
1114 &feature_sdwaOmod,
1115971 &feature_vop3Literal,
1116 &feature_dpp8,
1117 &feature_gfx10Insts,
1118 &feature_localmemorysize65536,
1119 &feature_mimgR128,
972 &feature_gfx8Insts,
1120973 &feature_flatAddressSpace,
1121 &feature_addNoCarryInsts,
1122 &feature_noDataDepHazard,
1123 &feature_flatInstOffsets,
1124 &feature_inv2piInlineImm,
1125 &feature_gfx9Insts,
1126 &feature_flatGlobalInsts,
1127974 &feature_BitInsts16,
1128 &feature_noSdstCmpx,
1129 &feature_gfx10,
975 &feature_gfx10Insts,
976 &feature_sdwa,
977 &feature_intClampInsts,
978 &feature_noDataDepHazard,
979 &feature_fmaMixInsts,
980 &feature_sdwaOmod,
1130981 &feature_instFwdPrefetchBug,
1131982 &feature_ldsbankcount32,
1132983 &feature_ldsBranchVmemWarHazard,
......@@ -1157,41 +1008,40 @@ pub const cpu_gfx1011 = Cpu{
11571008 &feature_dot5Insts,
11581009 &feature_dot6Insts,
11591010 &feature_flatSegmentOffsetBug,
1011 &feature_mimgR128,
1012 &feature_addNoCarryInsts,
1013 &feature_dpp8,
1014 &feature_gfx9Insts,
1015 &feature_ciInsts,
1016 &feature_inv2piInlineImm,
1017 &feature_fastFmaf,
11601018 &feature_registerBanking,
1019 &feature_apertureRegs,
1020 &feature_flatGlobalInsts,
11611021 &feature_fp64,
1162 &feature_vop3p,
1022 &feature_vscnt,
1023 &feature_flatScratchInsts,
1024 &feature_dpp,
11631025 &feature_sMemrealtime,
1164 &feature_gfx8Insts,
1165 &feature_dpp,
1166 &feature_sdwaSdst,
1167 &feature_ciInsts,
1168 &feature_apertureRegs,
1169 &feature_intClampInsts,
1170 &feature_flatScratchInsts,
1026 &feature_vop3p,
1027 &feature_flatInstOffsets,
11711028 &feature_sdwaScalar,
1172 &feature_fastFmaf,
1173 &feature_pkFmacF16Inst,
1174 &feature_vscnt,
1029 &feature_sdwaSdst,
11751030 &feature_movrel,
1176 &feature_fmaMixInsts,
1031 &feature_localmemorysize65536,
1032 &feature_noSdstCmpx,
1033 &feature_pkFmacF16Inst,
11771034 &feature_noSramEccSupport,
1178 &feature_sdwa,
1179 &feature_sdwaOmod,
11801035 &feature_vop3Literal,
1181 &feature_dpp8,
1182 &feature_gfx10Insts,
1183 &feature_localmemorysize65536,
1184 &feature_mimgR128,
1036 &feature_gfx8Insts,
11851037 &feature_flatAddressSpace,
1186 &feature_addNoCarryInsts,
1187 &feature_noDataDepHazard,
1188 &feature_flatInstOffsets,
1189 &feature_inv2piInlineImm,
1190 &feature_gfx9Insts,
1191 &feature_flatGlobalInsts,
11921038 &feature_BitInsts16,
1193 &feature_noSdstCmpx,
1194 &feature_gfx10,
1039 &feature_gfx10Insts,
1040 &feature_sdwa,
1041 &feature_intClampInsts,
1042 &feature_noDataDepHazard,
1043 &feature_fmaMixInsts,
1044 &feature_sdwaOmod,
11951045 &feature_instFwdPrefetchBug,
11961046 &feature_ldsbankcount32,
11971047 &feature_ldsBranchVmemWarHazard,
......@@ -1221,41 +1071,40 @@ pub const cpu_gfx1012 = Cpu{
12211071 &feature_dot5Insts,
12221072 &feature_dot6Insts,
12231073 &feature_flatSegmentOffsetBug,
1224 &feature_registerBanking,
1225 &feature_fp64,
1226 &feature_vop3p,
1227 &feature_sMemrealtime,
1228 &feature_gfx8Insts,
1229 &feature_dpp,
1230 &feature_sdwaSdst,
1074 &feature_mimgR128,
1075 &feature_addNoCarryInsts,
1076 &feature_dpp8,
1077 &feature_gfx9Insts,
12311078 &feature_ciInsts,
1079 &feature_inv2piInlineImm,
1080 &feature_fastFmaf,
1081 &feature_registerBanking,
12321082 &feature_apertureRegs,
1233 &feature_intClampInsts,
1083 &feature_flatGlobalInsts,
1084 &feature_fp64,
1085 &feature_vscnt,
12341086 &feature_flatScratchInsts,
1087 &feature_dpp,
1088 &feature_sMemrealtime,
1089 &feature_vop3p,
1090 &feature_flatInstOffsets,
12351091 &feature_sdwaScalar,
1236 &feature_fastFmaf,
1237 &feature_pkFmacF16Inst,
1238 &feature_vscnt,
1092 &feature_sdwaSdst,
12391093 &feature_movrel,
1240 &feature_fmaMixInsts,
1094 &feature_localmemorysize65536,
1095 &feature_noSdstCmpx,
1096 &feature_pkFmacF16Inst,
12411097 &feature_noSramEccSupport,
1242 &feature_sdwa,
1243 &feature_sdwaOmod,
12441098 &feature_vop3Literal,
1245 &feature_dpp8,
1246 &feature_gfx10Insts,
1247 &feature_localmemorysize65536,
1248 &feature_mimgR128,
1099 &feature_gfx8Insts,
12491100 &feature_flatAddressSpace,
1250 &feature_addNoCarryInsts,
1251 &feature_noDataDepHazard,
1252 &feature_flatInstOffsets,
1253 &feature_inv2piInlineImm,
1254 &feature_gfx9Insts,
1255 &feature_flatGlobalInsts,
12561101 &feature_BitInsts16,
1257 &feature_noSdstCmpx,
1258 &feature_gfx10,
1102 &feature_gfx10Insts,
1103 &feature_sdwa,
1104 &feature_intClampInsts,
1105 &feature_noDataDepHazard,
1106 &feature_fmaMixInsts,
1107 &feature_sdwaOmod,
12591108 &feature_instFwdPrefetchBug,
12601109 &feature_ldsbankcount32,
12611110 &feature_ldsBranchVmemWarHazard,
......@@ -1282,14 +1131,13 @@ pub const cpu_gfx600 = Cpu{
12821131 &feature_noXnackSupport,
12831132 &feature_fastFmaf,
12841133 &feature_ldsbankcount32,
1285 &feature_localmemorysize32768,
1286 &feature_trigReducedRange,
12871134 &feature_noSramEccSupport,
1288 &feature_fp64,
1289 &feature_movrel,
12901135 &feature_mimgR128,
1136 &feature_trigReducedRange,
12911137 &feature_wavefrontsize64,
1292 &feature_southernIslands,
1138 &feature_localmemorysize32768,
1139 &feature_fp64,
1140 &feature_movrel,
12931141 &feature_halfRate64Ops,
12941142 },
12951143};
......@@ -1301,14 +1149,13 @@ pub const cpu_gfx601 = Cpu{
13011149 &feature_codeObjectV3,
13021150 &feature_noXnackSupport,
13031151 &feature_ldsbankcount32,
1304 &feature_localmemorysize32768,
1305 &feature_trigReducedRange,
13061152 &feature_noSramEccSupport,
1307 &feature_fp64,
1308 &feature_movrel,
13091153 &feature_mimgR128,
1154 &feature_trigReducedRange,
13101155 &feature_wavefrontsize64,
1311 &feature_southernIslands,
1156 &feature_localmemorysize32768,
1157 &feature_fp64,
1158 &feature_movrel,
13121159 },
13131160};
13141161
......@@ -1319,17 +1166,16 @@ pub const cpu_gfx700 = Cpu{
13191166 &feature_codeObjectV3,
13201167 &feature_noXnackSupport,
13211168 &feature_ldsbankcount32,
1322 &feature_trigReducedRange,
13231169 &feature_noSramEccSupport,
1170 &feature_flatAddressSpace,
1171 &feature_mimgR128,
1172 &feature_trigReducedRange,
1173 &feature_gfx7Gfx8Gfx9Insts,
1174 &feature_ciInsts,
1175 &feature_wavefrontsize64,
13241176 &feature_fp64,
13251177 &feature_movrel,
1326 &feature_ciInsts,
13271178 &feature_localmemorysize65536,
1328 &feature_mimgR128,
1329 &feature_wavefrontsize64,
1330 &feature_flatAddressSpace,
1331 &feature_gfx7Gfx8Gfx9Insts,
1332 &feature_seaIslands,
13331179 },
13341180};
13351181
......@@ -1341,17 +1187,16 @@ pub const cpu_gfx701 = Cpu{
13411187 &feature_noXnackSupport,
13421188 &feature_fastFmaf,
13431189 &feature_ldsbankcount32,
1344 &feature_trigReducedRange,
13451190 &feature_noSramEccSupport,
1191 &feature_flatAddressSpace,
1192 &feature_mimgR128,
1193 &feature_trigReducedRange,
1194 &feature_gfx7Gfx8Gfx9Insts,
1195 &feature_ciInsts,
1196 &feature_wavefrontsize64,
13461197 &feature_fp64,
13471198 &feature_movrel,
1348 &feature_ciInsts,
13491199 &feature_localmemorysize65536,
1350 &feature_mimgR128,
1351 &feature_wavefrontsize64,
1352 &feature_flatAddressSpace,
1353 &feature_gfx7Gfx8Gfx9Insts,
1354 &feature_seaIslands,
13551200 &feature_halfRate64Ops,
13561201 },
13571202};
......@@ -1364,17 +1209,16 @@ pub const cpu_gfx702 = Cpu{
13641209 &feature_noXnackSupport,
13651210 &feature_fastFmaf,
13661211 &feature_ldsbankcount16,
1367 &feature_trigReducedRange,
13681212 &feature_noSramEccSupport,
1213 &feature_flatAddressSpace,
1214 &feature_mimgR128,
1215 &feature_trigReducedRange,
1216 &feature_gfx7Gfx8Gfx9Insts,
1217 &feature_ciInsts,
1218 &feature_wavefrontsize64,
13691219 &feature_fp64,
13701220 &feature_movrel,
1371 &feature_ciInsts,
13721221 &feature_localmemorysize65536,
1373 &feature_mimgR128,
1374 &feature_wavefrontsize64,
1375 &feature_flatAddressSpace,
1376 &feature_gfx7Gfx8Gfx9Insts,
1377 &feature_seaIslands,
13781222 },
13791223};
13801224
......@@ -1385,17 +1229,16 @@ pub const cpu_gfx703 = Cpu{
13851229 &feature_codeObjectV3,
13861230 &feature_noXnackSupport,
13871231 &feature_ldsbankcount16,
1388 &feature_trigReducedRange,
13891232 &feature_noSramEccSupport,
1233 &feature_flatAddressSpace,
1234 &feature_mimgR128,
1235 &feature_trigReducedRange,
1236 &feature_gfx7Gfx8Gfx9Insts,
1237 &feature_ciInsts,
1238 &feature_wavefrontsize64,
13901239 &feature_fp64,
13911240 &feature_movrel,
1392 &feature_ciInsts,
13931241 &feature_localmemorysize65536,
1394 &feature_mimgR128,
1395 &feature_wavefrontsize64,
1396 &feature_flatAddressSpace,
1397 &feature_gfx7Gfx8Gfx9Insts,
1398 &feature_seaIslands,
13991242 },
14001243};
14011244
......@@ -1406,17 +1249,16 @@ pub const cpu_gfx704 = Cpu{
14061249 &feature_codeObjectV3,
14071250 &feature_noXnackSupport,
14081251 &feature_ldsbankcount32,
1409 &feature_trigReducedRange,
14101252 &feature_noSramEccSupport,
1253 &feature_flatAddressSpace,
1254 &feature_mimgR128,
1255 &feature_trigReducedRange,
1256 &feature_gfx7Gfx8Gfx9Insts,
1257 &feature_ciInsts,
1258 &feature_wavefrontsize64,
14111259 &feature_fp64,
14121260 &feature_movrel,
1413 &feature_ciInsts,
14141261 &feature_localmemorysize65536,
1415 &feature_mimgR128,
1416 &feature_wavefrontsize64,
1417 &feature_flatAddressSpace,
1418 &feature_gfx7Gfx8Gfx9Insts,
1419 &feature_seaIslands,
14201262 },
14211263};
14221264
......@@ -1428,29 +1270,28 @@ pub const cpu_gfx801 = Cpu{
14281270 &feature_fastFmaf,
14291271 &feature_ldsbankcount32,
14301272 &feature_unpackedD16Vmem,
1431 &feature_fp64,
1432 &feature_sMemrealtime,
1433 &feature_gfx8Insts,
1434 &feature_dpp,
1273 &feature_mimgR128,
1274 &feature_inv2piInlineImm,
14351275 &feature_ciInsts,
1276 &feature_vgprIndexMode,
14361277 &feature_scalarStores,
1437 &feature_intClampInsts,
14381278 &feature_gcn3Encoding,
1279 &feature_fp64,
1280 &feature_dpp,
1281 &feature_trigReducedRange,
14391282 &feature_gfx7Gfx8Gfx9Insts,
1440 &feature_wavefrontsize64,
1283 &feature_sMemrealtime,
14411284 &feature_movrel,
1442 &feature_vgprIndexMode,
1443 &feature_trigReducedRange,
1444 &feature_noSramEccSupport,
1445 &feature_sdwa,
1446 &feature_sdwaMav,
1447 &feature_sdwaOutModsVopc,
14481285 &feature_localmemorysize65536,
1449 &feature_mimgR128,
1286 &feature_noSramEccSupport,
1287 &feature_gfx8Insts,
14501288 &feature_flatAddressSpace,
1451 &feature_inv2piInlineImm,
14521289 &feature_BitInsts16,
1453 &feature_volcanicIslands,
1290 &feature_sdwaMav,
1291 &feature_sdwa,
1292 &feature_sdwaOutModsVopc,
1293 &feature_wavefrontsize64,
1294 &feature_intClampInsts,
14541295 &feature_xnack,
14551296 &feature_halfRate64Ops,
14561297 },
......@@ -1465,29 +1306,28 @@ pub const cpu_gfx802 = Cpu{
14651306 &feature_ldsbankcount32,
14661307 &feature_sgprInitBug,
14671308 &feature_unpackedD16Vmem,
1468 &feature_fp64,
1469 &feature_sMemrealtime,
1470 &feature_gfx8Insts,
1471 &feature_dpp,
1309 &feature_mimgR128,
1310 &feature_inv2piInlineImm,
14721311 &feature_ciInsts,
1312 &feature_vgprIndexMode,
14731313 &feature_scalarStores,
1474 &feature_intClampInsts,
14751314 &feature_gcn3Encoding,
1315 &feature_fp64,
1316 &feature_dpp,
1317 &feature_trigReducedRange,
14761318 &feature_gfx7Gfx8Gfx9Insts,
1477 &feature_wavefrontsize64,
1319 &feature_sMemrealtime,
14781320 &feature_movrel,
1479 &feature_vgprIndexMode,
1480 &feature_trigReducedRange,
1481 &feature_noSramEccSupport,
1482 &feature_sdwa,
1483 &feature_sdwaMav,
1484 &feature_sdwaOutModsVopc,
14851321 &feature_localmemorysize65536,
1486 &feature_mimgR128,
1322 &feature_noSramEccSupport,
1323 &feature_gfx8Insts,
14871324 &feature_flatAddressSpace,
1488 &feature_inv2piInlineImm,
14891325 &feature_BitInsts16,
1490 &feature_volcanicIslands,
1326 &feature_sdwaMav,
1327 &feature_sdwa,
1328 &feature_sdwaOutModsVopc,
1329 &feature_wavefrontsize64,
1330 &feature_intClampInsts,
14911331 },
14921332};
14931333
......@@ -1499,29 +1339,28 @@ pub const cpu_gfx803 = Cpu{
14991339 &feature_noXnackSupport,
15001340 &feature_ldsbankcount32,
15011341 &feature_unpackedD16Vmem,
1502 &feature_fp64,
1503 &feature_sMemrealtime,
1504 &feature_gfx8Insts,
1505 &feature_dpp,
1342 &feature_mimgR128,
1343 &feature_inv2piInlineImm,
15061344 &feature_ciInsts,
1345 &feature_vgprIndexMode,
15071346 &feature_scalarStores,
1508 &feature_intClampInsts,
15091347 &feature_gcn3Encoding,
1348 &feature_fp64,
1349 &feature_dpp,
1350 &feature_trigReducedRange,
15101351 &feature_gfx7Gfx8Gfx9Insts,
1511 &feature_wavefrontsize64,
1352 &feature_sMemrealtime,
15121353 &feature_movrel,
1513 &feature_vgprIndexMode,
1514 &feature_trigReducedRange,
1515 &feature_noSramEccSupport,
1516 &feature_sdwa,
1517 &feature_sdwaMav,
1518 &feature_sdwaOutModsVopc,
15191354 &feature_localmemorysize65536,
1520 &feature_mimgR128,
1355 &feature_noSramEccSupport,
1356 &feature_gfx8Insts,
15211357 &feature_flatAddressSpace,
1522 &feature_inv2piInlineImm,
15231358 &feature_BitInsts16,
1524 &feature_volcanicIslands,
1359 &feature_sdwaMav,
1360 &feature_sdwa,
1361 &feature_sdwaOutModsVopc,
1362 &feature_wavefrontsize64,
1363 &feature_intClampInsts,
15251364 },
15261365};
15271366
......@@ -1531,29 +1370,28 @@ pub const cpu_gfx810 = Cpu{
15311370 .subfeatures = &[_]*const Feature {
15321371 &feature_codeObjectV3,
15331372 &feature_ldsbankcount16,
1534 &feature_fp64,
1535 &feature_sMemrealtime,
1536 &feature_gfx8Insts,
1537 &feature_dpp,
1373 &feature_mimgR128,
1374 &feature_inv2piInlineImm,
15381375 &feature_ciInsts,
1376 &feature_vgprIndexMode,
15391377 &feature_scalarStores,
1540 &feature_intClampInsts,
15411378 &feature_gcn3Encoding,
1542 &feature_gfx7Gfx8Gfx9Insts,
1543 &feature_wavefrontsize64,
1544 &feature_movrel,
1545 &feature_vgprIndexMode,
1379 &feature_fp64,
1380 &feature_dpp,
15461381 &feature_trigReducedRange,
1547 &feature_noSramEccSupport,
1548 &feature_sdwa,
1549 &feature_sdwaMav,
1550 &feature_sdwaOutModsVopc,
1382 &feature_gfx7Gfx8Gfx9Insts,
1383 &feature_sMemrealtime,
1384 &feature_movrel,
15511385 &feature_localmemorysize65536,
1552 &feature_mimgR128,
1386 &feature_noSramEccSupport,
1387 &feature_gfx8Insts,
15531388 &feature_flatAddressSpace,
1554 &feature_inv2piInlineImm,
15551389 &feature_BitInsts16,
1556 &feature_volcanicIslands,
1390 &feature_sdwaMav,
1391 &feature_sdwa,
1392 &feature_sdwaOutModsVopc,
1393 &feature_wavefrontsize64,
1394 &feature_intClampInsts,
15571395 &feature_xnack,
15581396 },
15591397};
......@@ -1565,37 +1403,36 @@ pub const cpu_gfx900 = Cpu{
15651403 &feature_codeObjectV3,
15661404 &feature_noSramEccSupport,
15671405 &feature_noXnackSupport,
1568 &feature_fp64,
1569 &feature_vop3p,
1570 &feature_sMemrealtime,
1571 &feature_gfx8Insts,
1572 &feature_dpp,
1573 &feature_sdwaSdst,
1406 &feature_r128A16,
1407 &feature_addNoCarryInsts,
1408 &feature_inv2piInlineImm,
1409 &feature_gfx9Insts,
15741410 &feature_ciInsts,
1575 &feature_apertureRegs,
1411 &feature_vgprIndexMode,
1412 &feature_fastFmaf,
15761413 &feature_scalarStores,
1577 &feature_intClampInsts,
15781414 &feature_gcn3Encoding,
1415 &feature_apertureRegs,
1416 &feature_scalarAtomics,
1417 &feature_flatGlobalInsts,
1418 &feature_fp64,
15791419 &feature_flatScratchInsts,
1420 &feature_dpp,
1421 &feature_scalarFlatScratchInsts,
15801422 &feature_gfx7Gfx8Gfx9Insts,
1581 &feature_wavefrontsize64,
1582 &feature_scalarAtomics,
1423 &feature_sMemrealtime,
1424 &feature_vop3p,
1425 &feature_flatInstOffsets,
15831426 &feature_sdwaScalar,
1584 &feature_fastFmaf,
1585 &feature_vgprIndexMode,
1586 &feature_scalarFlatScratchInsts,
1587 &feature_sdwa,
1588 &feature_sdwaOmod,
1427 &feature_sdwaSdst,
15891428 &feature_localmemorysize65536,
1429 &feature_gfx8Insts,
15901430 &feature_flatAddressSpace,
1591 &feature_addNoCarryInsts,
1592 &feature_flatInstOffsets,
1593 &feature_inv2piInlineImm,
1594 &feature_gfx9Insts,
1595 &feature_flatGlobalInsts,
15961431 &feature_BitInsts16,
1597 &feature_r128A16,
1598 &feature_gfx9,
1432 &feature_sdwa,
1433 &feature_wavefrontsize64,
1434 &feature_intClampInsts,
1435 &feature_sdwaOmod,
15991436 &feature_ldsbankcount32,
16001437 &feature_madMixInsts,
16011438 },
......@@ -1607,37 +1444,36 @@ pub const cpu_gfx902 = Cpu{
16071444 .subfeatures = &[_]*const Feature {
16081445 &feature_codeObjectV3,
16091446 &feature_noSramEccSupport,
1610 &feature_fp64,
1611 &feature_vop3p,
1612 &feature_sMemrealtime,
1613 &feature_gfx8Insts,
1614 &feature_dpp,
1615 &feature_sdwaSdst,
1447 &feature_r128A16,
1448 &feature_addNoCarryInsts,
1449 &feature_inv2piInlineImm,
1450 &feature_gfx9Insts,
16161451 &feature_ciInsts,
1617 &feature_apertureRegs,
1452 &feature_vgprIndexMode,
1453 &feature_fastFmaf,
16181454 &feature_scalarStores,
1619 &feature_intClampInsts,
16201455 &feature_gcn3Encoding,
1456 &feature_apertureRegs,
1457 &feature_scalarAtomics,
1458 &feature_flatGlobalInsts,
1459 &feature_fp64,
16211460 &feature_flatScratchInsts,
1461 &feature_dpp,
1462 &feature_scalarFlatScratchInsts,
16221463 &feature_gfx7Gfx8Gfx9Insts,
1623 &feature_wavefrontsize64,
1624 &feature_scalarAtomics,
1464 &feature_sMemrealtime,
1465 &feature_vop3p,
1466 &feature_flatInstOffsets,
16251467 &feature_sdwaScalar,
1626 &feature_fastFmaf,
1627 &feature_vgprIndexMode,
1628 &feature_scalarFlatScratchInsts,
1629 &feature_sdwa,
1630 &feature_sdwaOmod,
1468 &feature_sdwaSdst,
16311469 &feature_localmemorysize65536,
1470 &feature_gfx8Insts,
16321471 &feature_flatAddressSpace,
1633 &feature_addNoCarryInsts,
1634 &feature_flatInstOffsets,
1635 &feature_inv2piInlineImm,
1636 &feature_gfx9Insts,
1637 &feature_flatGlobalInsts,
16381472 &feature_BitInsts16,
1639 &feature_r128A16,
1640 &feature_gfx9,
1473 &feature_sdwa,
1474 &feature_wavefrontsize64,
1475 &feature_intClampInsts,
1476 &feature_sdwaOmod,
16411477 &feature_ldsbankcount32,
16421478 &feature_madMixInsts,
16431479 &feature_xnack,
......@@ -1652,37 +1488,36 @@ pub const cpu_gfx904 = Cpu{
16521488 &feature_noSramEccSupport,
16531489 &feature_noXnackSupport,
16541490 &feature_fmaMixInsts,
1655 &feature_fp64,
1656 &feature_vop3p,
1657 &feature_sMemrealtime,
1658 &feature_gfx8Insts,
1659 &feature_dpp,
1660 &feature_sdwaSdst,
1491 &feature_r128A16,
1492 &feature_addNoCarryInsts,
1493 &feature_inv2piInlineImm,
1494 &feature_gfx9Insts,
16611495 &feature_ciInsts,
1662 &feature_apertureRegs,
1496 &feature_vgprIndexMode,
1497 &feature_fastFmaf,
16631498 &feature_scalarStores,
1664 &feature_intClampInsts,
16651499 &feature_gcn3Encoding,
1500 &feature_apertureRegs,
1501 &feature_scalarAtomics,
1502 &feature_flatGlobalInsts,
1503 &feature_fp64,
16661504 &feature_flatScratchInsts,
1505 &feature_dpp,
1506 &feature_scalarFlatScratchInsts,
16671507 &feature_gfx7Gfx8Gfx9Insts,
1668 &feature_wavefrontsize64,
1669 &feature_scalarAtomics,
1508 &feature_sMemrealtime,
1509 &feature_vop3p,
1510 &feature_flatInstOffsets,
16701511 &feature_sdwaScalar,
1671 &feature_fastFmaf,
1672 &feature_vgprIndexMode,
1673 &feature_scalarFlatScratchInsts,
1674 &feature_sdwa,
1675 &feature_sdwaOmod,
1512 &feature_sdwaSdst,
16761513 &feature_localmemorysize65536,
1514 &feature_gfx8Insts,
16771515 &feature_flatAddressSpace,
1678 &feature_addNoCarryInsts,
1679 &feature_flatInstOffsets,
1680 &feature_inv2piInlineImm,
1681 &feature_gfx9Insts,
1682 &feature_flatGlobalInsts,
16831516 &feature_BitInsts16,
1684 &feature_r128A16,
1685 &feature_gfx9,
1517 &feature_sdwa,
1518 &feature_wavefrontsize64,
1519 &feature_intClampInsts,
1520 &feature_sdwaOmod,
16861521 &feature_ldsbankcount32,
16871522 },
16881523};
......@@ -1697,37 +1532,36 @@ pub const cpu_gfx906 = Cpu{
16971532 &feature_dot1Insts,
16981533 &feature_dot2Insts,
16991534 &feature_fmaMixInsts,
1700 &feature_fp64,
1701 &feature_vop3p,
1702 &feature_sMemrealtime,
1703 &feature_gfx8Insts,
1704 &feature_dpp,
1705 &feature_sdwaSdst,
1535 &feature_r128A16,
1536 &feature_addNoCarryInsts,
1537 &feature_inv2piInlineImm,
1538 &feature_gfx9Insts,
17061539 &feature_ciInsts,
1707 &feature_apertureRegs,
1540 &feature_vgprIndexMode,
1541 &feature_fastFmaf,
17081542 &feature_scalarStores,
1709 &feature_intClampInsts,
17101543 &feature_gcn3Encoding,
1544 &feature_apertureRegs,
1545 &feature_scalarAtomics,
1546 &feature_flatGlobalInsts,
1547 &feature_fp64,
17111548 &feature_flatScratchInsts,
1549 &feature_dpp,
1550 &feature_scalarFlatScratchInsts,
17121551 &feature_gfx7Gfx8Gfx9Insts,
1713 &feature_wavefrontsize64,
1714 &feature_scalarAtomics,
1552 &feature_sMemrealtime,
1553 &feature_vop3p,
1554 &feature_flatInstOffsets,
17151555 &feature_sdwaScalar,
1716 &feature_fastFmaf,
1717 &feature_vgprIndexMode,
1718 &feature_scalarFlatScratchInsts,
1719 &feature_sdwa,
1720 &feature_sdwaOmod,
1556 &feature_sdwaSdst,
17211557 &feature_localmemorysize65536,
1558 &feature_gfx8Insts,
17221559 &feature_flatAddressSpace,
1723 &feature_addNoCarryInsts,
1724 &feature_flatInstOffsets,
1725 &feature_inv2piInlineImm,
1726 &feature_gfx9Insts,
1727 &feature_flatGlobalInsts,
17281560 &feature_BitInsts16,
1729 &feature_r128A16,
1730 &feature_gfx9,
1561 &feature_sdwa,
1562 &feature_wavefrontsize64,
1563 &feature_intClampInsts,
1564 &feature_sdwaOmod,
17311565 &feature_ldsbankcount32,
17321566 &feature_halfRate64Ops,
17331567 },
......@@ -1747,37 +1581,36 @@ pub const cpu_gfx908 = Cpu{
17471581 &feature_dot5Insts,
17481582 &feature_dot6Insts,
17491583 &feature_fmaMixInsts,
1750 &feature_fp64,
1751 &feature_vop3p,
1752 &feature_sMemrealtime,
1753 &feature_gfx8Insts,
1754 &feature_dpp,
1755 &feature_sdwaSdst,
1584 &feature_r128A16,
1585 &feature_addNoCarryInsts,
1586 &feature_inv2piInlineImm,
1587 &feature_gfx9Insts,
17561588 &feature_ciInsts,
1757 &feature_apertureRegs,
1589 &feature_vgprIndexMode,
1590 &feature_fastFmaf,
17581591 &feature_scalarStores,
1759 &feature_intClampInsts,
17601592 &feature_gcn3Encoding,
1593 &feature_apertureRegs,
1594 &feature_scalarAtomics,
1595 &feature_flatGlobalInsts,
1596 &feature_fp64,
17611597 &feature_flatScratchInsts,
1598 &feature_dpp,
1599 &feature_scalarFlatScratchInsts,
17621600 &feature_gfx7Gfx8Gfx9Insts,
1763 &feature_wavefrontsize64,
1764 &feature_scalarAtomics,
1601 &feature_sMemrealtime,
1602 &feature_vop3p,
1603 &feature_flatInstOffsets,
17651604 &feature_sdwaScalar,
1766 &feature_fastFmaf,
1767 &feature_vgprIndexMode,
1768 &feature_scalarFlatScratchInsts,
1769 &feature_sdwa,
1770 &feature_sdwaOmod,
1605 &feature_sdwaSdst,
17711606 &feature_localmemorysize65536,
1607 &feature_gfx8Insts,
17721608 &feature_flatAddressSpace,
1773 &feature_addNoCarryInsts,
1774 &feature_flatInstOffsets,
1775 &feature_inv2piInlineImm,
1776 &feature_gfx9Insts,
1777 &feature_flatGlobalInsts,
17781609 &feature_BitInsts16,
1779 &feature_r128A16,
1780 &feature_gfx9,
1610 &feature_sdwa,
1611 &feature_wavefrontsize64,
1612 &feature_intClampInsts,
1613 &feature_sdwaOmod,
17811614 &feature_ldsbankcount32,
17821615 &feature_maiInsts,
17831616 &feature_mfmaInlineLiteralBug,
......@@ -1792,37 +1625,36 @@ pub const cpu_gfx909 = Cpu{
17921625 .llvm_name = "gfx909",
17931626 .subfeatures = &[_]*const Feature {
17941627 &feature_codeObjectV3,
1795 &feature_fp64,
1796 &feature_vop3p,
1797 &feature_sMemrealtime,
1798 &feature_gfx8Insts,
1799 &feature_dpp,
1800 &feature_sdwaSdst,
1628 &feature_r128A16,
1629 &feature_addNoCarryInsts,
1630 &feature_inv2piInlineImm,
1631 &feature_gfx9Insts,
18011632 &feature_ciInsts,
1802 &feature_apertureRegs,
1633 &feature_vgprIndexMode,
1634 &feature_fastFmaf,
18031635 &feature_scalarStores,
1804 &feature_intClampInsts,
18051636 &feature_gcn3Encoding,
1637 &feature_apertureRegs,
1638 &feature_scalarAtomics,
1639 &feature_flatGlobalInsts,
1640 &feature_fp64,
18061641 &feature_flatScratchInsts,
1642 &feature_dpp,
1643 &feature_scalarFlatScratchInsts,
18071644 &feature_gfx7Gfx8Gfx9Insts,
1808 &feature_wavefrontsize64,
1809 &feature_scalarAtomics,
1645 &feature_sMemrealtime,
1646 &feature_vop3p,
1647 &feature_flatInstOffsets,
18101648 &feature_sdwaScalar,
1811 &feature_fastFmaf,
1812 &feature_vgprIndexMode,
1813 &feature_scalarFlatScratchInsts,
1814 &feature_sdwa,
1815 &feature_sdwaOmod,
1649 &feature_sdwaSdst,
18161650 &feature_localmemorysize65536,
1651 &feature_gfx8Insts,
18171652 &feature_flatAddressSpace,
1818 &feature_addNoCarryInsts,
1819 &feature_flatInstOffsets,
1820 &feature_inv2piInlineImm,
1821 &feature_gfx9Insts,
1822 &feature_flatGlobalInsts,
18231653 &feature_BitInsts16,
1824 &feature_r128A16,
1825 &feature_gfx9,
1654 &feature_sdwa,
1655 &feature_wavefrontsize64,
1656 &feature_intClampInsts,
1657 &feature_sdwaOmod,
18261658 &feature_ldsbankcount32,
18271659 &feature_madMixInsts,
18281660 &feature_xnack,
......@@ -1836,14 +1668,13 @@ pub const cpu_hainan = Cpu{
18361668 &feature_codeObjectV3,
18371669 &feature_noXnackSupport,
18381670 &feature_ldsbankcount32,
1839 &feature_localmemorysize32768,
1840 &feature_trigReducedRange,
18411671 &feature_noSramEccSupport,
1842 &feature_fp64,
1843 &feature_movrel,
18441672 &feature_mimgR128,
1673 &feature_trigReducedRange,
18451674 &feature_wavefrontsize64,
1846 &feature_southernIslands,
1675 &feature_localmemorysize32768,
1676 &feature_fp64,
1677 &feature_movrel,
18471678 },
18481679};
18491680
......@@ -1855,17 +1686,16 @@ pub const cpu_hawaii = Cpu{
18551686 &feature_noXnackSupport,
18561687 &feature_fastFmaf,
18571688 &feature_ldsbankcount32,
1858 &feature_trigReducedRange,
18591689 &feature_noSramEccSupport,
1690 &feature_flatAddressSpace,
1691 &feature_mimgR128,
1692 &feature_trigReducedRange,
1693 &feature_gfx7Gfx8Gfx9Insts,
1694 &feature_ciInsts,
1695 &feature_wavefrontsize64,
18601696 &feature_fp64,
18611697 &feature_movrel,
1862 &feature_ciInsts,
18631698 &feature_localmemorysize65536,
1864 &feature_mimgR128,
1865 &feature_wavefrontsize64,
1866 &feature_flatAddressSpace,
1867 &feature_gfx7Gfx8Gfx9Insts,
1868 &feature_seaIslands,
18691699 &feature_halfRate64Ops,
18701700 },
18711701};
......@@ -1879,29 +1709,28 @@ pub const cpu_iceland = Cpu{
18791709 &feature_ldsbankcount32,
18801710 &feature_sgprInitBug,
18811711 &feature_unpackedD16Vmem,
1882 &feature_fp64,
1883 &feature_sMemrealtime,
1884 &feature_gfx8Insts,
1885 &feature_dpp,
1712 &feature_mimgR128,
1713 &feature_inv2piInlineImm,
18861714 &feature_ciInsts,
1715 &feature_vgprIndexMode,
18871716 &feature_scalarStores,
1888 &feature_intClampInsts,
18891717 &feature_gcn3Encoding,
1718 &feature_fp64,
1719 &feature_dpp,
1720 &feature_trigReducedRange,
18901721 &feature_gfx7Gfx8Gfx9Insts,
1891 &feature_wavefrontsize64,
1722 &feature_sMemrealtime,
18921723 &feature_movrel,
1893 &feature_vgprIndexMode,
1894 &feature_trigReducedRange,
1895 &feature_noSramEccSupport,
1896 &feature_sdwa,
1897 &feature_sdwaMav,
1898 &feature_sdwaOutModsVopc,
18991724 &feature_localmemorysize65536,
1900 &feature_mimgR128,
1725 &feature_noSramEccSupport,
1726 &feature_gfx8Insts,
19011727 &feature_flatAddressSpace,
1902 &feature_inv2piInlineImm,
19031728 &feature_BitInsts16,
1904 &feature_volcanicIslands,
1729 &feature_sdwaMav,
1730 &feature_sdwa,
1731 &feature_sdwaOutModsVopc,
1732 &feature_wavefrontsize64,
1733 &feature_intClampInsts,
19051734 },
19061735};
19071736
......@@ -1912,17 +1741,16 @@ pub const cpu_kabini = Cpu{
19121741 &feature_codeObjectV3,
19131742 &feature_noXnackSupport,
19141743 &feature_ldsbankcount16,
1915 &feature_trigReducedRange,
19161744 &feature_noSramEccSupport,
1745 &feature_flatAddressSpace,
1746 &feature_mimgR128,
1747 &feature_trigReducedRange,
1748 &feature_gfx7Gfx8Gfx9Insts,
1749 &feature_ciInsts,
1750 &feature_wavefrontsize64,
19171751 &feature_fp64,
19181752 &feature_movrel,
1919 &feature_ciInsts,
19201753 &feature_localmemorysize65536,
1921 &feature_mimgR128,
1922 &feature_wavefrontsize64,
1923 &feature_flatAddressSpace,
1924 &feature_gfx7Gfx8Gfx9Insts,
1925 &feature_seaIslands,
19261754 },
19271755};
19281756
......@@ -1933,17 +1761,16 @@ pub const cpu_kaveri = Cpu{
19331761 &feature_codeObjectV3,
19341762 &feature_noXnackSupport,
19351763 &feature_ldsbankcount32,
1936 &feature_trigReducedRange,
19371764 &feature_noSramEccSupport,
1765 &feature_flatAddressSpace,
1766 &feature_mimgR128,
1767 &feature_trigReducedRange,
1768 &feature_gfx7Gfx8Gfx9Insts,
1769 &feature_ciInsts,
1770 &feature_wavefrontsize64,
19381771 &feature_fp64,
19391772 &feature_movrel,
1940 &feature_ciInsts,
19411773 &feature_localmemorysize65536,
1942 &feature_mimgR128,
1943 &feature_wavefrontsize64,
1944 &feature_flatAddressSpace,
1945 &feature_gfx7Gfx8Gfx9Insts,
1946 &feature_seaIslands,
19471774 },
19481775};
19491776
......@@ -1954,17 +1781,16 @@ pub const cpu_mullins = Cpu{
19541781 &feature_codeObjectV3,
19551782 &feature_noXnackSupport,
19561783 &feature_ldsbankcount16,
1957 &feature_trigReducedRange,
19581784 &feature_noSramEccSupport,
1785 &feature_flatAddressSpace,
1786 &feature_mimgR128,
1787 &feature_trigReducedRange,
1788 &feature_gfx7Gfx8Gfx9Insts,
1789 &feature_ciInsts,
1790 &feature_wavefrontsize64,
19591791 &feature_fp64,
19601792 &feature_movrel,
1961 &feature_ciInsts,
19621793 &feature_localmemorysize65536,
1963 &feature_mimgR128,
1964 &feature_wavefrontsize64,
1965 &feature_flatAddressSpace,
1966 &feature_gfx7Gfx8Gfx9Insts,
1967 &feature_seaIslands,
19681794 },
19691795};
19701796
......@@ -1975,14 +1801,13 @@ pub const cpu_oland = Cpu{
19751801 &feature_codeObjectV3,
19761802 &feature_noXnackSupport,
19771803 &feature_ldsbankcount32,
1978 &feature_localmemorysize32768,
1979 &feature_trigReducedRange,
19801804 &feature_noSramEccSupport,
1981 &feature_fp64,
1982 &feature_movrel,
19831805 &feature_mimgR128,
1806 &feature_trigReducedRange,
19841807 &feature_wavefrontsize64,
1985 &feature_southernIslands,
1808 &feature_localmemorysize32768,
1809 &feature_fp64,
1810 &feature_movrel,
19861811 },
19871812};
19881813
......@@ -1993,14 +1818,13 @@ pub const cpu_pitcairn = Cpu{
19931818 &feature_codeObjectV3,
19941819 &feature_noXnackSupport,
19951820 &feature_ldsbankcount32,
1996 &feature_localmemorysize32768,
1997 &feature_trigReducedRange,
19981821 &feature_noSramEccSupport,
1999 &feature_fp64,
2000 &feature_movrel,
20011822 &feature_mimgR128,
1823 &feature_trigReducedRange,
20021824 &feature_wavefrontsize64,
2003 &feature_southernIslands,
1825 &feature_localmemorysize32768,
1826 &feature_fp64,
1827 &feature_movrel,
20041828 },
20051829};
20061830
......@@ -2012,29 +1836,28 @@ pub const cpu_polaris10 = Cpu{
20121836 &feature_noXnackSupport,
20131837 &feature_ldsbankcount32,
20141838 &feature_unpackedD16Vmem,
2015 &feature_fp64,
2016 &feature_sMemrealtime,
2017 &feature_gfx8Insts,
2018 &feature_dpp,
1839 &feature_mimgR128,
1840 &feature_inv2piInlineImm,
20191841 &feature_ciInsts,
1842 &feature_vgprIndexMode,
20201843 &feature_scalarStores,
2021 &feature_intClampInsts,
20221844 &feature_gcn3Encoding,
1845 &feature_fp64,
1846 &feature_dpp,
1847 &feature_trigReducedRange,
20231848 &feature_gfx7Gfx8Gfx9Insts,
2024 &feature_wavefrontsize64,
1849 &feature_sMemrealtime,
20251850 &feature_movrel,
2026 &feature_vgprIndexMode,
2027 &feature_trigReducedRange,
2028 &feature_noSramEccSupport,
2029 &feature_sdwa,
2030 &feature_sdwaMav,
2031 &feature_sdwaOutModsVopc,
20321851 &feature_localmemorysize65536,
2033 &feature_mimgR128,
1852 &feature_noSramEccSupport,
1853 &feature_gfx8Insts,
20341854 &feature_flatAddressSpace,
2035 &feature_inv2piInlineImm,
20361855 &feature_BitInsts16,
2037 &feature_volcanicIslands,
1856 &feature_sdwaMav,
1857 &feature_sdwa,
1858 &feature_sdwaOutModsVopc,
1859 &feature_wavefrontsize64,
1860 &feature_intClampInsts,
20381861 },
20391862};
20401863
......@@ -2046,29 +1869,28 @@ pub const cpu_polaris11 = Cpu{
20461869 &feature_noXnackSupport,
20471870 &feature_ldsbankcount32,
20481871 &feature_unpackedD16Vmem,
2049 &feature_fp64,
2050 &feature_sMemrealtime,
2051 &feature_gfx8Insts,
2052 &feature_dpp,
1872 &feature_mimgR128,
1873 &feature_inv2piInlineImm,
20531874 &feature_ciInsts,
1875 &feature_vgprIndexMode,
20541876 &feature_scalarStores,
2055 &feature_intClampInsts,
20561877 &feature_gcn3Encoding,
1878 &feature_fp64,
1879 &feature_dpp,
1880 &feature_trigReducedRange,
20571881 &feature_gfx7Gfx8Gfx9Insts,
2058 &feature_wavefrontsize64,
1882 &feature_sMemrealtime,
20591883 &feature_movrel,
2060 &feature_vgprIndexMode,
2061 &feature_trigReducedRange,
2062 &feature_noSramEccSupport,
2063 &feature_sdwa,
2064 &feature_sdwaMav,
2065 &feature_sdwaOutModsVopc,
20661884 &feature_localmemorysize65536,
2067 &feature_mimgR128,
1885 &feature_noSramEccSupport,
1886 &feature_gfx8Insts,
20681887 &feature_flatAddressSpace,
2069 &feature_inv2piInlineImm,
20701888 &feature_BitInsts16,
2071 &feature_volcanicIslands,
1889 &feature_sdwaMav,
1890 &feature_sdwa,
1891 &feature_sdwaOutModsVopc,
1892 &feature_wavefrontsize64,
1893 &feature_intClampInsts,
20721894 },
20731895};
20741896
......@@ -2078,29 +1900,28 @@ pub const cpu_stoney = Cpu{
20781900 .subfeatures = &[_]*const Feature {
20791901 &feature_codeObjectV3,
20801902 &feature_ldsbankcount16,
2081 &feature_fp64,
2082 &feature_sMemrealtime,
2083 &feature_gfx8Insts,
2084 &feature_dpp,
1903 &feature_mimgR128,
1904 &feature_inv2piInlineImm,
20851905 &feature_ciInsts,
1906 &feature_vgprIndexMode,
20861907 &feature_scalarStores,
2087 &feature_intClampInsts,
20881908 &feature_gcn3Encoding,
1909 &feature_fp64,
1910 &feature_dpp,
1911 &feature_trigReducedRange,
20891912 &feature_gfx7Gfx8Gfx9Insts,
2090 &feature_wavefrontsize64,
1913 &feature_sMemrealtime,
20911914 &feature_movrel,
2092 &feature_vgprIndexMode,
2093 &feature_trigReducedRange,
2094 &feature_noSramEccSupport,
2095 &feature_sdwa,
2096 &feature_sdwaMav,
2097 &feature_sdwaOutModsVopc,
20981915 &feature_localmemorysize65536,
2099 &feature_mimgR128,
1916 &feature_noSramEccSupport,
1917 &feature_gfx8Insts,
21001918 &feature_flatAddressSpace,
2101 &feature_inv2piInlineImm,
21021919 &feature_BitInsts16,
2103 &feature_volcanicIslands,
1920 &feature_sdwaMav,
1921 &feature_sdwa,
1922 &feature_sdwaOutModsVopc,
1923 &feature_wavefrontsize64,
1924 &feature_intClampInsts,
21041925 &feature_xnack,
21051926 },
21061927};
......@@ -2113,14 +1934,13 @@ pub const cpu_tahiti = Cpu{
21131934 &feature_noXnackSupport,
21141935 &feature_fastFmaf,
21151936 &feature_ldsbankcount32,
2116 &feature_localmemorysize32768,
2117 &feature_trigReducedRange,
21181937 &feature_noSramEccSupport,
2119 &feature_fp64,
2120 &feature_movrel,
21211938 &feature_mimgR128,
1939 &feature_trigReducedRange,
21221940 &feature_wavefrontsize64,
2123 &feature_southernIslands,
1941 &feature_localmemorysize32768,
1942 &feature_fp64,
1943 &feature_movrel,
21241944 &feature_halfRate64Ops,
21251945 },
21261946};
......@@ -2134,29 +1954,28 @@ pub const cpu_tonga = Cpu{
21341954 &feature_ldsbankcount32,
21351955 &feature_sgprInitBug,
21361956 &feature_unpackedD16Vmem,
2137 &feature_fp64,
2138 &feature_sMemrealtime,
2139 &feature_gfx8Insts,
2140 &feature_dpp,
1957 &feature_mimgR128,
1958 &feature_inv2piInlineImm,
21411959 &feature_ciInsts,
1960 &feature_vgprIndexMode,
21421961 &feature_scalarStores,
2143 &feature_intClampInsts,
21441962 &feature_gcn3Encoding,
1963 &feature_fp64,
1964 &feature_dpp,
1965 &feature_trigReducedRange,
21451966 &feature_gfx7Gfx8Gfx9Insts,
2146 &feature_wavefrontsize64,
1967 &feature_sMemrealtime,
21471968 &feature_movrel,
2148 &feature_vgprIndexMode,
2149 &feature_trigReducedRange,
2150 &feature_noSramEccSupport,
2151 &feature_sdwa,
2152 &feature_sdwaMav,
2153 &feature_sdwaOutModsVopc,
21541969 &feature_localmemorysize65536,
2155 &feature_mimgR128,
1970 &feature_noSramEccSupport,
1971 &feature_gfx8Insts,
21561972 &feature_flatAddressSpace,
2157 &feature_inv2piInlineImm,
21581973 &feature_BitInsts16,
2159 &feature_volcanicIslands,
1974 &feature_sdwaMav,
1975 &feature_sdwa,
1976 &feature_sdwaOutModsVopc,
1977 &feature_wavefrontsize64,
1978 &feature_intClampInsts,
21601979 },
21611980};
21621981
......@@ -2167,14 +1986,13 @@ pub const cpu_verde = Cpu{
21671986 &feature_codeObjectV3,
21681987 &feature_noXnackSupport,
21691988 &feature_ldsbankcount32,
2170 &feature_localmemorysize32768,
2171 &feature_trigReducedRange,
21721989 &feature_noSramEccSupport,
2173 &feature_fp64,
2174 &feature_movrel,
21751990 &feature_mimgR128,
1991 &feature_trigReducedRange,
21761992 &feature_wavefrontsize64,
2177 &feature_southernIslands,
1993 &feature_localmemorysize32768,
1994 &feature_fp64,
1995 &feature_movrel,
21781996 },
21791997};
21801998
lib/std/target/arm.zig+649-1839
......@@ -1,1646 +1,706 @@
11const Feature = @import("std").target.Feature;
22const Cpu = @import("std").target.Cpu;
33
4pub const feature_armv2 = Feature{
5 .name = "armv2",
6 .description = "ARMv2 architecture",
7 .subfeatures = &[_]*const Feature {
8 },
9};
10
11pub const feature_armv2a = Feature{
12 .name = "armv2a",
13 .description = "ARMv2a architecture",
4pub const feature_msecext8 = Feature{
5 .name = "8msecext",
6 .description = "Enable support for ARMv8-M Security Extensions",
147 .subfeatures = &[_]*const Feature {
158 },
169};
1710
18pub const feature_armv3 = Feature{
19 .name = "armv3",
20 .description = "ARMv3 architecture",
11pub const feature_aclass = Feature{
12 .name = "aclass",
13 .description = "Is application profile ('A' series)",
2114 .subfeatures = &[_]*const Feature {
2215 },
2316};
2417
25pub const feature_armv3m = Feature{
26 .name = "armv3m",
27 .description = "ARMv3m architecture",
18pub const feature_aes = Feature{
19 .name = "aes",
20 .description = "Enable AES support",
2821 .subfeatures = &[_]*const Feature {
22 &feature_fpregs,
23 &feature_d32,
2924 },
3025};
3126
32pub const feature_armv4 = Feature{
33 .name = "armv4",
34 .description = "ARMv4 architecture",
27pub const feature_acquireRelease = Feature{
28 .name = "acquire-release",
29 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
3530 .subfeatures = &[_]*const Feature {
3631 },
3732};
3833
39pub const feature_armv4t = Feature{
40 .name = "armv4t",
41 .description = "ARMv4t architecture",
34pub const feature_avoidMovsShop = Feature{
35 .name = "avoid-movs-shop",
36 .description = "Avoid movs instructions with shifter operand",
4237 .subfeatures = &[_]*const Feature {
43 &feature_v4t,
4438 },
4539};
4640
47pub const feature_armv5t = Feature{
48 .name = "armv5t",
49 .description = "ARMv5t architecture",
41pub const feature_avoidPartialCpsr = Feature{
42 .name = "avoid-partial-cpsr",
43 .description = "Avoid CPSR partial update for OOO execution",
5044 .subfeatures = &[_]*const Feature {
51 &feature_v4t,
5245 },
5346};
5447
55pub const feature_armv5te = Feature{
56 .name = "armv5te",
57 .description = "ARMv5te architecture",
48pub const feature_crc = Feature{
49 .name = "crc",
50 .description = "Enable support for CRC instructions",
5851 .subfeatures = &[_]*const Feature {
59 &feature_v4t,
6052 },
6153};
6254
63pub const feature_armv5tej = Feature{
64 .name = "armv5tej",
65 .description = "ARMv5tej architecture",
55pub const feature_cheapPredicableCpsr = Feature{
56 .name = "cheap-predicable-cpsr",
57 .description = "Disable +1 predication cost for instructions updating CPSR",
6658 .subfeatures = &[_]*const Feature {
67 &feature_v4t,
6859 },
6960};
7061
71pub const feature_armv6 = Feature{
72 .name = "armv6",
73 .description = "ARMv6 architecture",
62pub const feature_vldnAlign = Feature{
63 .name = "vldn-align",
64 .description = "Check for VLDn unaligned access",
7465 .subfeatures = &[_]*const Feature {
75 &feature_v4t,
76 &feature_dsp,
7766 },
7867};
7968
80pub const feature_armv6j = Feature{
81 .name = "armv6j",
82 .description = "ARMv7a architecture",
69pub const feature_crypto = Feature{
70 .name = "crypto",
71 .description = "Enable support for Cryptography extensions",
8372 .subfeatures = &[_]*const Feature {
84 &feature_v4t,
85 &feature_dsp,
73 &feature_fpregs,
74 &feature_d32,
8675 },
8776};
8877
89pub const feature_armv6k = Feature{
90 .name = "armv6k",
91 .description = "ARMv6k architecture",
78pub const feature_d32 = Feature{
79 .name = "d32",
80 .description = "Extend FP to 32 double registers",
9281 .subfeatures = &[_]*const Feature {
93 &feature_v4t,
9482 },
9583};
9684
97pub const feature_armv6kz = Feature{
98 .name = "armv6kz",
99 .description = "ARMv6kz architecture",
85pub const feature_db = Feature{
86 .name = "db",
87 .description = "Has data barrier (dmb/dsb) instructions",
10088 .subfeatures = &[_]*const Feature {
101 &feature_v4t,
102 &feature_trustzone,
10389 },
10490};
10591
106pub const feature_armv6M = Feature{
107 .name = "armv6-m",
108 .description = "ARMv6m architecture",
92pub const feature_dfb = Feature{
93 .name = "dfb",
94 .description = "Has full data barrier (dfb) instruction",
10995 .subfeatures = &[_]*const Feature {
110 &feature_db,
111 &feature_mclass,
112 &feature_thumbMode,
113 &feature_strictAlign,
114 &feature_noarm,
115 &feature_v4t,
11696 },
11797};
11898
119pub const feature_armv6sM = Feature{
120 .name = "armv6s-m",
121 .description = "ARMv6sm architecture",
99pub const feature_dsp = Feature{
100 .name = "dsp",
101 .description = "Supports DSP instructions in ARM and/or Thumb2",
122102 .subfeatures = &[_]*const Feature {
123 &feature_db,
124 &feature_mclass,
125 &feature_thumbMode,
126 &feature_strictAlign,
127 &feature_noarm,
128 &feature_v4t,
129103 },
130104};
131105
132pub const feature_armv6t2 = Feature{
133 .name = "armv6t2",
134 .description = "ARMv6t2 architecture",
106pub const feature_dontWidenVmovs = Feature{
107 .name = "dont-widen-vmovs",
108 .description = "Don't widen VMOVS to VMOVD",
135109 .subfeatures = &[_]*const Feature {
136 &feature_thumb2,
137 &feature_dsp,
138 &feature_v4t,
139110 },
140111};
141112
142pub const feature_armv7A = Feature{
143 .name = "armv7-a",
144 .description = "ARMv7a architecture",
113pub const feature_dotprod = Feature{
114 .name = "dotprod",
115 .description = "Enable support for dot product instructions",
145116 .subfeatures = &[_]*const Feature {
146 &feature_db,
147 &feature_dsp,
148117 &feature_fpregs,
149 &feature_thumb2,
150 &feature_v7clrex,
151 &feature_aclass,
152 &feature_perfmon,
153 &feature_v4t,
154118 &feature_d32,
155119 },
156120};
157121
158pub const feature_armv7eM = Feature{
159 .name = "armv7e-m",
160 .description = "ARMv7em architecture",
122pub const feature_executeOnly = Feature{
123 .name = "execute-only",
124 .description = "Enable the generation of execute only code.",
161125 .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,
172126 },
173127};
174128
175pub const feature_armv7k = Feature{
176 .name = "armv7k",
177 .description = "ARMv7a architecture",
129pub const feature_expandFpMlx = Feature{
130 .name = "expand-fp-mlx",
131 .description = "Expand VFP/NEON MLA/MLS instructions",
178132 .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,
188133 },
189134};
190135
191pub const feature_armv7M = Feature{
192 .name = "armv7-m",
193 .description = "ARMv7m architecture",
136pub const feature_fp16 = Feature{
137 .name = "fp16",
138 .description = "Enable half-precision floating point",
194139 .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,
204140 },
205141};
206142
207pub const feature_armv7R = Feature{
208 .name = "armv7-r",
209 .description = "ARMv7r architecture",
143pub const feature_fp16fml = Feature{
144 .name = "fp16fml",
145 .description = "Enable full half-precision floating point fml instructions",
210146 .subfeatures = &[_]*const Feature {
211 &feature_db,
212 &feature_dsp,
213 &feature_hwdiv,
214 &feature_rclass,
215 &feature_thumb2,
216 &feature_v7clrex,
217 &feature_perfmon,
218 &feature_v4t,
147 &feature_fp16,
148 &feature_fpregs,
219149 },
220150};
221151
222pub const feature_armv7s = Feature{
223 .name = "armv7s",
224 .description = "ARMv7a architecture",
152pub const feature_fp64 = Feature{
153 .name = "fp64",
154 .description = "Floating point unit supports double precision",
225155 .subfeatures = &[_]*const Feature {
226 &feature_db,
227 &feature_dsp,
228156 &feature_fpregs,
229 &feature_thumb2,
230 &feature_v7clrex,
231 &feature_aclass,
232 &feature_perfmon,
233 &feature_v4t,
234 &feature_d32,
235157 },
236158};
237159
238pub const feature_armv7ve = Feature{
239 .name = "armv7ve",
240 .description = "ARMv7ve architecture",
160pub const feature_fpao = Feature{
161 .name = "fpao",
162 .description = "Enable fast computation of positive address offsets",
241163 .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,
255164 },
256165};
257166
258pub const feature_armv8A = Feature{
259 .name = "armv8-a",
260 .description = "ARMv8a architecture",
167pub const feature_fpArmv8 = Feature{
168 .name = "fp-armv8",
169 .description = "Enable ARMv8 FP",
261170 .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,
275171 &feature_fp16,
276 &feature_perfmon,
172 &feature_fpregs,
277173 &feature_d32,
278174 },
279175};
280176
281pub const feature_armv8Mbase = Feature{
282 .name = "armv8-m.base",
283 .description = "ARMv8mBaseline architecture",
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",
177pub const feature_fpArmv8d16 = Feature{
178 .name = "fp-armv8d16",
179 .description = "Enable ARMv8 FP with only 16 d-registers",
301180 .subfeatures = &[_]*const Feature {
302 &feature_db,
303 &feature_mclass,
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,
181 &feature_fp16,
182 &feature_fpregs,
313183 },
314184};
315185
316pub const feature_armv8R = Feature{
317 .name = "armv8-r",
318 .description = "ARMv8r architecture",
186pub const feature_fpArmv8d16sp = Feature{
187 .name = "fp-armv8d16sp",
188 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
319189 .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,
334190 &feature_fp16,
335 &feature_d32,
191 &feature_fpregs,
336192 },
337193};
338194
339pub const feature_armv81A = Feature{
340 .name = "armv8.1-a",
341 .description = "ARMv81a architecture",
195pub const feature_fpArmv8sp = Feature{
196 .name = "fp-armv8sp",
197 .description = "Enable ARMv8 FP with no double precision",
342198 .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,
356199 &feature_fp16,
357 &feature_perfmon,
200 &feature_fpregs,
358201 &feature_d32,
359202 },
360203};
361204
362pub const feature_armv81Mmain = Feature{
363 .name = "armv8.1-m.main",
364 .description = "ARMv81mMainline architecture",
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",
205pub const feature_fpregs = Feature{
206 .name = "fpregs",
207 .description = "Enable FP registers",
385208 .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,
403209 },
404210};
405211
406pub const feature_armv83A = Feature{
407 .name = "armv8.3-a",
408 .description = "ARMv83a architecture",
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",
212pub const feature_fpregs16 = Feature{
213 .name = "fpregs16",
214 .description = "Enable 16-bit FP registers",
1042215 .subfeatures = &[_]*const Feature {
216 &feature_fpregs,
1043217 },
1044218};
1045219
1046pub const feature_useMisched = Feature{
1047 .name = "use-misched",
1048 .description = "Use the MachineScheduler",
220pub const feature_fpregs64 = Feature{
221 .name = "fpregs64",
222 .description = "Enable 64-bit FP registers",
1049223 .subfeatures = &[_]*const Feature {
224 &feature_fpregs,
1050225 },
1051226};
1052227
1053pub const feature_wideStrideVfp = Feature{
1054 .name = "wide-stride-vfp",
1055 .description = "Use a wide stride when allocating VFP registers",
228pub const feature_fullfp16 = Feature{
229 .name = "fullfp16",
230 .description = "Enable full half-precision floating point",
1056231 .subfeatures = &[_]*const Feature {
232 &feature_fp16,
233 &feature_fpregs,
1057234 },
1058235};
1059236
1060pub const feature_v7clrex = Feature{
1061 .name = "v7clrex",
1062 .description = "Has v7 clrex instruction",
237pub const feature_fuseAes = Feature{
238 .name = "fuse-aes",
239 .description = "CPU fuses AES crypto operations",
1063240 .subfeatures = &[_]*const Feature {
1064241 },
1065242};
1066243
1067pub const feature_vfp2 = Feature{
1068 .name = "vfp2",
1069 .description = "Enable VFP2 instructions",
244pub const feature_fuseLiterals = Feature{
245 .name = "fuse-literals",
246 .description = "CPU fuses literal generation operations",
1070247 .subfeatures = &[_]*const Feature {
1071 &feature_fpregs,
1072248 },
1073249};
1074250
1075pub const feature_vfp2sp = Feature{
1076 .name = "vfp2sp",
1077 .description = "Enable VFP2 instructions with no double precision",
251pub const feature_hwdivArm = Feature{
252 .name = "hwdiv-arm",
253 .description = "Enable divide instructions in ARM mode",
1078254 .subfeatures = &[_]*const Feature {
1079 &feature_fpregs,
1080255 },
1081256};
1082257
1083pub const feature_vfp3 = Feature{
1084 .name = "vfp3",
1085 .description = "Enable VFP3 instructions",
258pub const feature_hwdiv = Feature{
259 .name = "hwdiv",
260 .description = "Enable divide instructions in Thumb",
1086261 .subfeatures = &[_]*const Feature {
1087 &feature_fpregs,
1088 &feature_d32,
1089262 },
1090263};
1091264
1092pub const feature_vfp3d16 = Feature{
1093 .name = "vfp3d16",
1094 .description = "Enable VFP3 instructions with only 16 d-registers",
265pub const feature_noBranchPredictor = Feature{
266 .name = "no-branch-predictor",
267 .description = "Has no branch predictor",
1095268 .subfeatures = &[_]*const Feature {
1096 &feature_fpregs,
1097269 },
1098270};
1099271
1100pub const feature_vfp3d16sp = Feature{
1101 .name = "vfp3d16sp",
1102 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
272pub const feature_retAddrStack = Feature{
273 .name = "ret-addr-stack",
274 .description = "Has return address stack",
1103275 .subfeatures = &[_]*const Feature {
1104 &feature_fpregs,
1105276 },
1106277};
1107278
1108pub const feature_vfp3sp = Feature{
1109 .name = "vfp3sp",
1110 .description = "Enable VFP3 instructions with no double precision",
279pub const feature_slowfpvmlx = Feature{
280 .name = "slowfpvmlx",
281 .description = "Disable VFP / NEON MAC instructions",
1111282 .subfeatures = &[_]*const Feature {
1112 &feature_fpregs,
1113 &feature_d32,
1114283 },
1115284};
1116285
1117pub const feature_vfp4 = Feature{
1118 .name = "vfp4",
1119 .description = "Enable VFP4 instructions",
286pub const feature_vmlxHazards = Feature{
287 .name = "vmlx-hazards",
288 .description = "Has VMLx hazards",
1120289 .subfeatures = &[_]*const Feature {
1121 &feature_fp16,
1122 &feature_d32,
1123 &feature_fpregs,
1124290 },
1125291};
1126292
1127pub const feature_vfp4d16 = Feature{
1128 .name = "vfp4d16",
1129 .description = "Enable VFP4 instructions with only 16 d-registers",
293pub const feature_lob = Feature{
294 .name = "lob",
295 .description = "Enable Low Overhead Branch extensions",
1130296 .subfeatures = &[_]*const Feature {
1131 &feature_fp16,
1132 &feature_fpregs,
1133297 },
1134298};
1135299
1136pub const feature_vfp4d16sp = Feature{
1137 .name = "vfp4d16sp",
1138 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
300pub const feature_longCalls = Feature{
301 .name = "long-calls",
302 .description = "Generate calls via indirect call instructions",
1139303 .subfeatures = &[_]*const Feature {
1140 &feature_fp16,
1141 &feature_fpregs,
1142304 },
1143305};
1144306
1145pub const feature_vfp4sp = Feature{
1146 .name = "vfp4sp",
1147 .description = "Enable VFP4 instructions with no double precision",
307pub const feature_mclass = Feature{
308 .name = "mclass",
309 .description = "Is microcontroller profile ('M' series)",
1148310 .subfeatures = &[_]*const Feature {
1149 &feature_fp16,
1150 &feature_d32,
1151 &feature_fpregs,
1152311 },
1153312};
1154313
1155pub const feature_vmlxForwarding = Feature{
1156 .name = "vmlx-forwarding",
1157 .description = "Has multiplier accumulator forwarding",
314pub const feature_mp = Feature{
315 .name = "mp",
316 .description = "Supports Multiprocessing extension",
1158317 .subfeatures = &[_]*const Feature {
1159318 },
1160319};
1161320
1162pub const feature_virtualization = Feature{
1163 .name = "virtualization",
1164 .description = "Supports Virtualization extension",
321pub const feature_mve1beat = Feature{
322 .name = "mve1beat",
323 .description = "Model MVE instructions as a 1 beat per tick architecture",
1165324 .subfeatures = &[_]*const Feature {
1166 &feature_hwdivArm,
1167 &feature_hwdiv,
1168325 },
1169326};
1170327
1171pub const feature_zcz = Feature{
1172 .name = "zcz",
1173 .description = "Has zero-cycle zeroing instructions",
328pub const feature_mve2beat = Feature{
329 .name = "mve2beat",
330 .description = "Model MVE instructions as a 2 beats per tick architecture",
1174331 .subfeatures = &[_]*const Feature {
1175332 },
1176333};
1177334
1178pub const feature_mvefp = Feature{
1179 .name = "mve.fp",
1180 .description = "Support M-Class Vector Extension with integer and floating ops",
335pub const feature_mve4beat = Feature{
336 .name = "mve4beat",
337 .description = "Model MVE instructions as a 4 beats per tick architecture",
1181338 .subfeatures = &[_]*const Feature {
1182 &feature_dsp,
1183 &feature_fpregs,
1184 &feature_v4t,
1185 &feature_thumb2,
1186 &feature_v7clrex,
1187 &feature_perfmon,
1188 &feature_fp16,
1189339 },
1190340};
1191341
1192pub const feature_mve = Feature{
1193 .name = "mve",
1194 .description = "Support M-Class Vector Extension with integer ops",
342pub const feature_muxedUnits = Feature{
343 .name = "muxed-units",
344 .description = "Has muxed AGU and NEON/FPU",
1195345 .subfeatures = &[_]*const Feature {
1196 &feature_dsp,
1197 &feature_fpregs,
1198 &feature_thumb2,
1199 &feature_v7clrex,
1200 &feature_perfmon,
1201 &feature_v4t,
1202346 },
1203347};
1204348
1205pub const feature_v4t = Feature{
1206 .name = "v4t",
1207 .description = "Support ARM v4T instructions",
349pub const feature_neon = Feature{
350 .name = "neon",
351 .description = "Enable NEON instructions",
1208352 .subfeatures = &[_]*const Feature {
353 &feature_fpregs,
354 &feature_d32,
1209355 },
1210356};
1211357
1212pub const feature_v5te = Feature{
1213 .name = "v5te",
1214 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",
358pub const feature_neonfp = Feature{
359 .name = "neonfp",
360 .description = "Use NEON for single precision FP",
1215361 .subfeatures = &[_]*const Feature {
1216 &feature_v4t,
1217362 },
1218363};
1219364
1220pub const feature_v5t = Feature{
1221 .name = "v5t",
1222 .description = "Support ARM v5T instructions",
365pub const feature_neonFpmovs = Feature{
366 .name = "neon-fpmovs",
367 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
1223368 .subfeatures = &[_]*const Feature {
1224 &feature_v4t,
1225369 },
1226370};
1227371
1228pub const feature_v6k = Feature{
1229 .name = "v6k",
1230 .description = "Support ARM v6k instructions",
372pub const feature_naclTrap = Feature{
373 .name = "nacl-trap",
374 .description = "NaCl trap",
1231375 .subfeatures = &[_]*const Feature {
1232 &feature_v4t,
1233376 },
1234377};
1235378
1236pub const feature_v6m = Feature{
1237 .name = "v6m",
1238 .description = "Support ARM v6M instructions",
379pub const feature_noarm = Feature{
380 .name = "noarm",
381 .description = "Does not support ARM mode execution",
1239382 .subfeatures = &[_]*const Feature {
1240 &feature_v4t,
1241383 },
1242384};
1243385
1244pub const feature_v6 = Feature{
1245 .name = "v6",
1246 .description = "Support ARM v6 instructions",
386pub const feature_noMovt = Feature{
387 .name = "no-movt",
388 .description = "Don't use movt/movw pairs for 32-bit imms",
1247389 .subfeatures = &[_]*const Feature {
1248 &feature_v4t,
1249390 },
1250391};
1251392
1252pub const feature_v6t2 = Feature{
1253 .name = "v6t2",
1254 .description = "Support ARM v6t2 instructions",
393pub const feature_noNegImmediates = Feature{
394 .name = "no-neg-immediates",
395 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
1255396 .subfeatures = &[_]*const Feature {
1256 &feature_thumb2,
1257 &feature_v4t,
1258397 },
1259398};
1260399
1261pub const feature_v7 = Feature{
1262 .name = "v7",
1263 .description = "Support ARM v7 instructions",
400pub const feature_disablePostraScheduler = Feature{
401 .name = "disable-postra-scheduler",
402 .description = "Don't schedule again after register allocation",
1264403 .subfeatures = &[_]*const Feature {
1265 &feature_thumb2,
1266 &feature_v7clrex,
1267 &feature_v4t,
1268 &feature_perfmon,
1269404 },
1270405};
1271406
1272pub const feature_v8m = Feature{
1273 .name = "v8m",
1274 .description = "Support ARM v8M Baseline instructions",
407pub const feature_nonpipelinedVfp = Feature{
408 .name = "nonpipelined-vfp",
409 .description = "VFP instructions are not pipelined",
1275410 .subfeatures = &[_]*const Feature {
1276 &feature_v4t,
1277411 },
1278412};
1279413
1280pub const feature_v8mmain = Feature{
1281 .name = "v8m.main",
1282 .description = "Support ARM v8M Mainline instructions",
414pub const feature_perfmon = Feature{
415 .name = "perfmon",
416 .description = "Enable support for Performance Monitor extensions",
1283417 .subfeatures = &[_]*const Feature {
1284 &feature_thumb2,
1285 &feature_v7clrex,
1286 &feature_v4t,
1287 &feature_perfmon,
1288418 },
1289419};
1290420
1291pub const feature_v8 = Feature{
1292 .name = "v8",
1293 .description = "Support ARM v8 instructions",
421pub const feature_bit32 = Feature{
422 .name = "32bit",
423 .description = "Prefer 32-bit Thumb instrs",
1294424 .subfeatures = &[_]*const Feature {
1295 &feature_thumb2,
1296 &feature_v7clrex,
1297 &feature_acquireRelease,
1298 &feature_perfmon,
1299 &feature_v4t,
1300425 },
1301426};
1302427
1303pub const feature_v81mmain = Feature{
1304 .name = "v8.1m.main",
1305 .description = "Support ARM v8-1M Mainline instructions",
428pub const feature_preferIshst = Feature{
429 .name = "prefer-ishst",
430 .description = "Prefer ISHST barriers",
1306431 .subfeatures = &[_]*const Feature {
1307 &feature_thumb2,
1308 &feature_v7clrex,
1309 &feature_v4t,
1310 &feature_perfmon,
1311432 },
1312433};
1313434
1314pub const feature_v81a = Feature{
1315 .name = "v8.1a",
1316 .description = "Support ARM v8.1a instructions",
435pub const feature_loopAlign = Feature{
436 .name = "loop-align",
437 .description = "Prefer 32-bit alignment for loops",
1317438 .subfeatures = &[_]*const Feature {
1318 &feature_thumb2,
1319 &feature_v7clrex,
1320 &feature_acquireRelease,
1321 &feature_perfmon,
1322 &feature_v4t,
1323439 },
1324440};
1325441
1326pub const feature_v82a = Feature{
1327 .name = "v8.2a",
1328 .description = "Support ARM v8.2a instructions",
442pub const feature_preferVmovsr = Feature{
443 .name = "prefer-vmovsr",
444 .description = "Prefer VMOVSR",
1329445 .subfeatures = &[_]*const Feature {
1330 &feature_thumb2,
1331 &feature_v7clrex,
1332 &feature_acquireRelease,
1333 &feature_perfmon,
1334 &feature_v4t,
1335446 },
1336447};
1337448
1338pub const feature_v83a = Feature{
1339 .name = "v8.3a",
1340 .description = "Support ARM v8.3a instructions",
449pub const feature_profUnpr = Feature{
450 .name = "prof-unpr",
451 .description = "Is profitable to unpredicate",
1341452 .subfeatures = &[_]*const Feature {
1342 &feature_thumb2,
1343 &feature_v7clrex,
1344 &feature_acquireRelease,
1345 &feature_perfmon,
1346 &feature_v4t,
1347453 },
1348454};
1349455
1350pub const feature_v84a = Feature{
1351 .name = "v8.4a",
1352 .description = "Support ARM v8.4a instructions",
456pub const feature_ras = Feature{
457 .name = "ras",
458 .description = "Enable Reliability, Availability and Serviceability extensions",
1353459 .subfeatures = &[_]*const Feature {
1354 &feature_fpregs,
1355 &feature_thumb2,
1356 &feature_v7clrex,
1357 &feature_acquireRelease,
1358 &feature_perfmon,
1359 &feature_v4t,
1360 &feature_d32,
1361460 },
1362461};
1363462
1364pub const feature_v85a = Feature{
1365 .name = "v8.5a",
1366 .description = "Support ARM v8.5a instructions",
463pub const feature_rclass = Feature{
464 .name = "rclass",
465 .description = "Is realtime profile ('R' series)",
1367466 .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,
1376467 },
1377468};
1378469
1379pub const feature_iwmmxt = Feature{
1380 .name = "iwmmxt",
1381 .description = "ARMv5te architecture",
470pub const feature_readTpHard = Feature{
471 .name = "read-tp-hard",
472 .description = "Reading thread pointer from register",
1382473 .subfeatures = &[_]*const Feature {
1383 &feature_v4t,
1384474 },
1385475};
1386476
1387pub const feature_iwmmxt2 = Feature{
1388 .name = "iwmmxt2",
1389 .description = "ARMv5te architecture",
477pub const feature_reserveR9 = Feature{
478 .name = "reserve-r9",
479 .description = "Reserve R9, making it unavailable as GPR",
1390480 .subfeatures = &[_]*const Feature {
1391 &feature_v4t,
1392481 },
1393482};
1394483
1395pub const feature_softFloat = Feature{
1396 .name = "soft-float",
1397 .description = "Use software floating point features.",
484pub const feature_sb = Feature{
485 .name = "sb",
486 .description = "Enable v8.5a Speculation Barrier",
1398487 .subfeatures = &[_]*const Feature {
1399488 },
1400489};
1401490
1402pub const feature_thumbMode = Feature{
1403 .name = "thumb-mode",
1404 .description = "Thumb mode",
491pub const feature_sha2 = Feature{
492 .name = "sha2",
493 .description = "Enable SHA1 and SHA256 support",
1405494 .subfeatures = &[_]*const Feature {
495 &feature_fpregs,
496 &feature_d32,
1406497 },
1407498};
1408499
1409pub const feature_a5 = Feature{
1410 .name = "a5",
1411 .description = "Cortex-A5 ARM processors",
500pub const feature_slowFpBrcc = Feature{
501 .name = "slow-fp-brcc",
502 .description = "FP compare + branch is slow",
1412503 .subfeatures = &[_]*const Feature {
1413504 },
1414505};
1415506
1416pub const feature_a7 = Feature{
1417 .name = "a7",
1418 .description = "Cortex-A7 ARM processors",
507pub const feature_slowLoadDSubreg = Feature{
508 .name = "slow-load-D-subreg",
509 .description = "Loading into D subregs is slow",
1419510 .subfeatures = &[_]*const Feature {
1420511 },
1421512};
1422513
1423pub const feature_a8 = Feature{
1424 .name = "a8",
1425 .description = "Cortex-A8 ARM processors",
514pub const feature_slowOddReg = Feature{
515 .name = "slow-odd-reg",
516 .description = "VLDM/VSTM starting with an odd register is slow",
1426517 .subfeatures = &[_]*const Feature {
1427518 },
1428519};
1429520
1430pub const feature_a9 = Feature{
1431 .name = "a9",
1432 .description = "Cortex-A9 ARM processors",
521pub const feature_slowVdup32 = Feature{
522 .name = "slow-vdup32",
523 .description = "Has slow VDUP32 - prefer VMOV",
1433524 .subfeatures = &[_]*const Feature {
1434525 },
1435526};
1436527
1437pub const feature_a12 = Feature{
1438 .name = "a12",
1439 .description = "Cortex-A12 ARM processors",
528pub const feature_slowVgetlni32 = Feature{
529 .name = "slow-vgetlni32",
530 .description = "Has slow VGETLNi32 - prefer VMOV",
1440531 .subfeatures = &[_]*const Feature {
1441532 },
1442533};
1443534
1444pub const feature_a15 = Feature{
1445 .name = "a15",
1446 .description = "Cortex-A15 ARM processors",
535pub const feature_splatVfpNeon = Feature{
536 .name = "splat-vfp-neon",
537 .description = "Splat register from VFP to NEON",
1447538 .subfeatures = &[_]*const Feature {
539 &feature_dontWidenVmovs,
1448540 },
1449541};
1450542
1451pub const feature_a17 = Feature{
1452 .name = "a17",
1453 .description = "Cortex-A17 ARM processors",
543pub const feature_strictAlign = Feature{
544 .name = "strict-align",
545 .description = "Disallow all unaligned memory access",
1454546 .subfeatures = &[_]*const Feature {
1455547 },
1456548};
1457549
1458pub const feature_a32 = Feature{
1459 .name = "a32",
1460 .description = "Cortex-A32 ARM processors",
550pub const feature_thumb2 = Feature{
551 .name = "thumb2",
552 .description = "Enable Thumb2 instructions",
1461553 .subfeatures = &[_]*const Feature {
1462554 },
1463555};
1464556
1465pub const feature_a35 = Feature{
1466 .name = "a35",
1467 .description = "Cortex-A35 ARM processors",
557pub const feature_trustzone = Feature{
558 .name = "trustzone",
559 .description = "Enable support for TrustZone security extensions",
1468560 .subfeatures = &[_]*const Feature {
1469561 },
1470562};
1471563
1472pub const feature_a53 = Feature{
1473 .name = "a53",
1474 .description = "Cortex-A53 ARM processors",
564pub const feature_useAa = Feature{
565 .name = "use-aa",
566 .description = "Use alias analysis during codegen",
1475567 .subfeatures = &[_]*const Feature {
1476568 },
1477569};
1478570
1479pub const feature_a55 = Feature{
1480 .name = "a55",
1481 .description = "Cortex-A55 ARM processors",
571pub const feature_useMisched = Feature{
572 .name = "use-misched",
573 .description = "Use the MachineScheduler",
1482574 .subfeatures = &[_]*const Feature {
1483575 },
1484576};
1485577
1486pub const feature_a57 = Feature{
1487 .name = "a57",
1488 .description = "Cortex-A57 ARM processors",
578pub const feature_wideStrideVfp = Feature{
579 .name = "wide-stride-vfp",
580 .description = "Use a wide stride when allocating VFP registers",
1489581 .subfeatures = &[_]*const Feature {
1490582 },
1491583};
1492584
1493pub const feature_a72 = Feature{
1494 .name = "a72",
1495 .description = "Cortex-A72 ARM processors",
585pub const feature_v7clrex = Feature{
586 .name = "v7clrex",
587 .description = "Has v7 clrex instruction",
1496588 .subfeatures = &[_]*const Feature {
1497589 },
1498590};
1499591
1500pub const feature_a73 = Feature{
1501 .name = "a73",
1502 .description = "Cortex-A73 ARM processors",
592pub const feature_vfp2 = Feature{
593 .name = "vfp2",
594 .description = "Enable VFP2 instructions",
1503595 .subfeatures = &[_]*const Feature {
596 &feature_fpregs,
1504597 },
1505598};
1506599
1507pub const feature_a75 = Feature{
1508 .name = "a75",
1509 .description = "Cortex-A75 ARM processors",
600pub const feature_vfp2sp = Feature{
601 .name = "vfp2sp",
602 .description = "Enable VFP2 instructions with no double precision",
1510603 .subfeatures = &[_]*const Feature {
604 &feature_fpregs,
1511605 },
1512606};
1513607
1514pub const feature_a76 = Feature{
1515 .name = "a76",
1516 .description = "Cortex-A76 ARM processors",
608pub const feature_vfp3 = Feature{
609 .name = "vfp3",
610 .description = "Enable VFP3 instructions",
1517611 .subfeatures = &[_]*const Feature {
612 &feature_fpregs,
613 &feature_d32,
1518614 },
1519615};
1520616
1521pub const feature_exynos = Feature{
1522 .name = "exynos",
1523 .description = "Samsung Exynos processors",
617pub const feature_vfp3d16 = Feature{
618 .name = "vfp3d16",
619 .description = "Enable VFP3 instructions with only 16 d-registers",
1524620 .subfeatures = &[_]*const Feature {
1525 &feature_useAa,
1526 &feature_hwdivArm,
1527 &feature_zcz,
1528 &feature_hwdiv,
1529 &feature_expandFpMlx,
1530 &feature_slowVdup32,
1531621 &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,
1543622 },
1544623};
1545624
1546pub const feature_krait = Feature{
1547 .name = "krait",
1548 .description = "Qualcomm Krait processors",
625pub const feature_vfp3d16sp = Feature{
626 .name = "vfp3d16sp",
627 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
1549628 .subfeatures = &[_]*const Feature {
629 &feature_fpregs,
1550630 },
1551631};
1552632
1553pub const feature_kryo = Feature{
1554 .name = "kryo",
1555 .description = "Qualcomm Kryo processors",
633pub const feature_vfp3sp = Feature{
634 .name = "vfp3sp",
635 .description = "Enable VFP3 instructions with no double precision",
1556636 .subfeatures = &[_]*const Feature {
637 &feature_fpregs,
638 &feature_d32,
1557639 },
1558640};
1559641
1560pub const feature_m3 = Feature{
1561 .name = "m3",
1562 .description = "Cortex-M3 ARM processors",
642pub const feature_vfp4 = Feature{
643 .name = "vfp4",
644 .description = "Enable VFP4 instructions",
1563645 .subfeatures = &[_]*const Feature {
646 &feature_fp16,
647 &feature_fpregs,
648 &feature_d32,
1564649 },
1565650};
1566651
1567pub const feature_r4 = Feature{
1568 .name = "r4",
1569 .description = "Cortex-R4 ARM processors",
652pub const feature_vfp4d16 = Feature{
653 .name = "vfp4d16",
654 .description = "Enable VFP4 instructions with only 16 d-registers",
1570655 .subfeatures = &[_]*const Feature {
656 &feature_fp16,
657 &feature_fpregs,
1571658 },
1572659};
1573660
1574pub const feature_r5 = Feature{
1575 .name = "r5",
1576 .description = "Cortex-R5 ARM processors",
661pub const feature_vfp4d16sp = Feature{
662 .name = "vfp4d16sp",
663 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
1577664 .subfeatures = &[_]*const Feature {
665 &feature_fp16,
666 &feature_fpregs,
1578667 },
1579668};
1580669
1581pub const feature_r7 = Feature{
1582 .name = "r7",
1583 .description = "Cortex-R7 ARM processors",
670pub const feature_vfp4sp = Feature{
671 .name = "vfp4sp",
672 .description = "Enable VFP4 instructions with no double precision",
1584673 .subfeatures = &[_]*const Feature {
674 &feature_fp16,
675 &feature_fpregs,
676 &feature_d32,
1585677 },
1586678};
1587679
1588pub const feature_r52 = Feature{
1589 .name = "r52",
1590 .description = "Cortex-R52 ARM processors",
680pub const feature_vmlxForwarding = Feature{
681 .name = "vmlx-forwarding",
682 .description = "Has multiplier accumulator forwarding",
1591683 .subfeatures = &[_]*const Feature {
1592684 },
1593685};
1594686
1595pub const feature_swift = Feature{
1596 .name = "swift",
1597 .description = "Swift ARM processors",
687pub const feature_virtualization = Feature{
688 .name = "virtualization",
689 .description = "Supports Virtualization extension",
1598690 .subfeatures = &[_]*const Feature {
691 &feature_hwdiv,
692 &feature_hwdivArm,
1599693 },
1600694};
1601695
1602pub const feature_xscale = Feature{
1603 .name = "xscale",
1604 .description = "ARMv5te architecture",
696pub const feature_zcz = Feature{
697 .name = "zcz",
698 .description = "Has zero-cycle zeroing instructions",
1605699 .subfeatures = &[_]*const Feature {
1606 &feature_v4t,
1607700 },
1608701};
1609702
1610703pub 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,
1644704 &feature_msecext8,
1645705 &feature_aclass,
1646706 &feature_aes,
......@@ -1734,63 +794,12 @@ pub const features = &[_]*const Feature {
1734794 &feature_vmlxForwarding,
1735795 &feature_virtualization,
1736796 &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,
1786797};
1787798
1788799pub const cpu_arm1020e = Cpu{
1789800 .name = "arm1020e",
1790801 .llvm_name = "arm1020e",
1791802 .subfeatures = &[_]*const Feature {
1792 &feature_v4t,
1793 &feature_armv5te,
1794803 },
1795804};
1796805
......@@ -1798,8 +807,6 @@ pub const cpu_arm1020t = Cpu{
1798807 .name = "arm1020t",
1799808 .llvm_name = "arm1020t",
1800809 .subfeatures = &[_]*const Feature {
1801 &feature_v4t,
1802 &feature_armv5t,
1803810 },
1804811};
1805812
......@@ -1807,8 +814,6 @@ pub const cpu_arm1022e = Cpu{
1807814 .name = "arm1022e",
1808815 .llvm_name = "arm1022e",
1809816 .subfeatures = &[_]*const Feature {
1810 &feature_v4t,
1811 &feature_armv5te,
1812817 },
1813818};
1814819
......@@ -1816,8 +821,6 @@ pub const cpu_arm10e = Cpu{
1816821 .name = "arm10e",
1817822 .llvm_name = "arm10e",
1818823 .subfeatures = &[_]*const Feature {
1819 &feature_v4t,
1820 &feature_armv5te,
1821824 },
1822825};
1823826
......@@ -1825,8 +828,6 @@ pub const cpu_arm10tdmi = Cpu{
1825828 .name = "arm10tdmi",
1826829 .llvm_name = "arm10tdmi",
1827830 .subfeatures = &[_]*const Feature {
1828 &feature_v4t,
1829 &feature_armv5t,
1830831 },
1831832};
1832833
......@@ -1834,9 +835,7 @@ pub const cpu_arm1136jS = Cpu{
1834835 .name = "arm1136j-s",
1835836 .llvm_name = "arm1136j-s",
1836837 .subfeatures = &[_]*const Feature {
1837 &feature_v4t,
1838838 &feature_dsp,
1839 &feature_armv6,
1840839 },
1841840};
1842841
......@@ -1844,9 +843,7 @@ pub const cpu_arm1136jfS = Cpu{
1844843 .name = "arm1136jf-s",
1845844 .llvm_name = "arm1136jf-s",
1846845 .subfeatures = &[_]*const Feature {
1847 &feature_v4t,
1848846 &feature_dsp,
1849 &feature_armv6,
1850847 &feature_slowfpvmlx,
1851848 &feature_fpregs,
1852849 &feature_vfp2,
......@@ -1857,10 +854,8 @@ pub const cpu_arm1156t2S = Cpu{
1857854 .name = "arm1156t2-s",
1858855 .llvm_name = "arm1156t2-s",
1859856 .subfeatures = &[_]*const Feature {
1860 &feature_thumb2,
1861857 &feature_dsp,
1862 &feature_v4t,
1863 &feature_armv6t2,
858 &feature_thumb2,
1864859 },
1865860};
1866861
......@@ -1868,10 +863,8 @@ pub const cpu_arm1156t2fS = Cpu{
1868863 .name = "arm1156t2f-s",
1869864 .llvm_name = "arm1156t2f-s",
1870865 .subfeatures = &[_]*const Feature {
1871 &feature_thumb2,
1872866 &feature_dsp,
1873 &feature_v4t,
1874 &feature_armv6t2,
867 &feature_thumb2,
1875868 &feature_slowfpvmlx,
1876869 &feature_fpregs,
1877870 &feature_vfp2,
......@@ -1882,9 +875,7 @@ pub const cpu_arm1176jS = Cpu{
1882875 .name = "arm1176j-s",
1883876 .llvm_name = "arm1176j-s",
1884877 .subfeatures = &[_]*const Feature {
1885 &feature_v4t,
1886878 &feature_trustzone,
1887 &feature_armv6kz,
1888879 },
1889880};
1890881
......@@ -1892,9 +883,7 @@ pub const cpu_arm1176jzS = Cpu{
1892883 .name = "arm1176jz-s",
1893884 .llvm_name = "arm1176jz-s",
1894885 .subfeatures = &[_]*const Feature {
1895 &feature_v4t,
1896886 &feature_trustzone,
1897 &feature_armv6kz,
1898887 },
1899888};
1900889
......@@ -1902,9 +891,7 @@ pub const cpu_arm1176jzfS = Cpu{
1902891 .name = "arm1176jzf-s",
1903892 .llvm_name = "arm1176jzf-s",
1904893 .subfeatures = &[_]*const Feature {
1905 &feature_v4t,
1906894 &feature_trustzone,
1907 &feature_armv6kz,
1908895 &feature_slowfpvmlx,
1909896 &feature_fpregs,
1910897 &feature_vfp2,
......@@ -1915,8 +902,6 @@ pub const cpu_arm710t = Cpu{
1915902 .name = "arm710t",
1916903 .llvm_name = "arm710t",
1917904 .subfeatures = &[_]*const Feature {
1918 &feature_v4t,
1919 &feature_armv4t,
1920905 },
1921906};
1922907
......@@ -1924,8 +909,6 @@ pub const cpu_arm720t = Cpu{
1924909 .name = "arm720t",
1925910 .llvm_name = "arm720t",
1926911 .subfeatures = &[_]*const Feature {
1927 &feature_v4t,
1928 &feature_armv4t,
1929912 },
1930913};
1931914
......@@ -1933,8 +916,6 @@ pub const cpu_arm7tdmi = Cpu{
1933916 .name = "arm7tdmi",
1934917 .llvm_name = "arm7tdmi",
1935918 .subfeatures = &[_]*const Feature {
1936 &feature_v4t,
1937 &feature_armv4t,
1938919 },
1939920};
1940921
......@@ -1942,8 +923,6 @@ pub const cpu_arm7tdmiS = Cpu{
1942923 .name = "arm7tdmi-s",
1943924 .llvm_name = "arm7tdmi-s",
1944925 .subfeatures = &[_]*const Feature {
1945 &feature_v4t,
1946 &feature_armv4t,
1947926 },
1948927};
1949928
......@@ -1951,7 +930,6 @@ pub const cpu_arm8 = Cpu{
1951930 .name = "arm8",
1952931 .llvm_name = "arm8",
1953932 .subfeatures = &[_]*const Feature {
1954 &feature_armv4,
1955933 },
1956934};
1957935
......@@ -1959,7 +937,6 @@ pub const cpu_arm810 = Cpu{
1959937 .name = "arm810",
1960938 .llvm_name = "arm810",
1961939 .subfeatures = &[_]*const Feature {
1962 &feature_armv4,
1963940 },
1964941};
1965942
......@@ -1967,8 +944,6 @@ pub const cpu_arm9 = Cpu{
1967944 .name = "arm9",
1968945 .llvm_name = "arm9",
1969946 .subfeatures = &[_]*const Feature {
1970 &feature_v4t,
1971 &feature_armv4t,
1972947 },
1973948};
1974949
......@@ -1976,8 +951,6 @@ pub const cpu_arm920 = Cpu{
1976951 .name = "arm920",
1977952 .llvm_name = "arm920",
1978953 .subfeatures = &[_]*const Feature {
1979 &feature_v4t,
1980 &feature_armv4t,
1981954 },
1982955};
1983956
......@@ -1985,8 +958,6 @@ pub const cpu_arm920t = Cpu{
1985958 .name = "arm920t",
1986959 .llvm_name = "arm920t",
1987960 .subfeatures = &[_]*const Feature {
1988 &feature_v4t,
1989 &feature_armv4t,
1990961 },
1991962};
1992963
......@@ -1994,8 +965,6 @@ pub const cpu_arm922t = Cpu{
1994965 .name = "arm922t",
1995966 .llvm_name = "arm922t",
1996967 .subfeatures = &[_]*const Feature {
1997 &feature_v4t,
1998 &feature_armv4t,
1999968 },
2000969};
2001970
......@@ -2003,8 +972,6 @@ pub const cpu_arm926ejS = Cpu{
2003972 .name = "arm926ej-s",
2004973 .llvm_name = "arm926ej-s",
2005974 .subfeatures = &[_]*const Feature {
2006 &feature_v4t,
2007 &feature_armv5te,
2008975 },
2009976};
2010977
......@@ -2012,8 +979,6 @@ pub const cpu_arm940t = Cpu{
2012979 .name = "arm940t",
2013980 .llvm_name = "arm940t",
2014981 .subfeatures = &[_]*const Feature {
2015 &feature_v4t,
2016 &feature_armv4t,
2017982 },
2018983};
2019984
......@@ -2021,8 +986,6 @@ pub const cpu_arm946eS = Cpu{
2021986 .name = "arm946e-s",
2022987 .llvm_name = "arm946e-s",
2023988 .subfeatures = &[_]*const Feature {
2024 &feature_v4t,
2025 &feature_armv5te,
2026989 },
2027990};
2028991
......@@ -2030,8 +993,6 @@ pub const cpu_arm966eS = Cpu{
2030993 .name = "arm966e-s",
2031994 .llvm_name = "arm966e-s",
2032995 .subfeatures = &[_]*const Feature {
2033 &feature_v4t,
2034 &feature_armv5te,
2035996 },
2036997};
2037998
......@@ -2039,8 +1000,6 @@ pub const cpu_arm968eS = Cpu{
20391000 .name = "arm968e-s",
20401001 .llvm_name = "arm968e-s",
20411002 .subfeatures = &[_]*const Feature {
2042 &feature_v4t,
2043 &feature_armv5te,
20441003 },
20451004};
20461005
......@@ -2048,8 +1007,6 @@ pub const cpu_arm9e = Cpu{
20481007 .name = "arm9e",
20491008 .llvm_name = "arm9e",
20501009 .subfeatures = &[_]*const Feature {
2051 &feature_v4t,
2052 &feature_armv5te,
20531010 },
20541011};
20551012
......@@ -2057,8 +1014,6 @@ pub const cpu_arm9tdmi = Cpu{
20571014 .name = "arm9tdmi",
20581015 .llvm_name = "arm9tdmi",
20591016 .subfeatures = &[_]*const Feature {
2060 &feature_v4t,
2061 &feature_armv4t,
20621017 },
20631018};
20641019
......@@ -2066,16 +1021,14 @@ pub const cpu_cortexA12 = Cpu{
20661021 .name = "cortex-a12",
20671022 .llvm_name = "cortex-a12",
20681023 .subfeatures = &[_]*const Feature {
1024 &feature_fpregs,
20691025 &feature_db,
1026 &feature_d32,
1027 &feature_perfmon,
20701028 &feature_dsp,
2071 &feature_fpregs,
2072 &feature_thumb2,
2073 &feature_v7clrex,
20741029 &feature_aclass,
2075 &feature_perfmon,
2076 &feature_v4t,
2077 &feature_d32,
2078 &feature_armv7A,
1030 &feature_v7clrex,
1031 &feature_thumb2,
20791032 &feature_avoidPartialCpsr,
20801033 &feature_retAddrStack,
20811034 &feature_mp,
......@@ -2083,10 +1036,9 @@ pub const cpu_cortexA12 = Cpu{
20831036 &feature_fp16,
20841037 &feature_vfp4,
20851038 &feature_vmlxForwarding,
2086 &feature_hwdivArm,
20871039 &feature_hwdiv,
1040 &feature_hwdivArm,
20881041 &feature_virtualization,
2089 &feature_a12,
20901042 },
20911043};
20921044
......@@ -2094,16 +1046,14 @@ pub const cpu_cortexA15 = Cpu{
20941046 .name = "cortex-a15",
20951047 .llvm_name = "cortex-a15",
20961048 .subfeatures = &[_]*const Feature {
1049 &feature_fpregs,
20971050 &feature_db,
1051 &feature_d32,
1052 &feature_perfmon,
20981053 &feature_dsp,
2099 &feature_fpregs,
2100 &feature_thumb2,
2101 &feature_v7clrex,
21021054 &feature_aclass,
2103 &feature_perfmon,
2104 &feature_v4t,
2105 &feature_d32,
2106 &feature_armv7A,
1055 &feature_v7clrex,
1056 &feature_thumb2,
21071057 &feature_avoidPartialCpsr,
21081058 &feature_vldnAlign,
21091059 &feature_dontWidenVmovs,
......@@ -2114,10 +1064,9 @@ pub const cpu_cortexA15 = Cpu{
21141064 &feature_trustzone,
21151065 &feature_fp16,
21161066 &feature_vfp4,
2117 &feature_hwdivArm,
21181067 &feature_hwdiv,
1068 &feature_hwdivArm,
21191069 &feature_virtualization,
2120 &feature_a15,
21211070 },
21221071};
21231072
......@@ -2125,16 +1074,14 @@ pub const cpu_cortexA17 = Cpu{
21251074 .name = "cortex-a17",
21261075 .llvm_name = "cortex-a17",
21271076 .subfeatures = &[_]*const Feature {
1077 &feature_fpregs,
21281078 &feature_db,
1079 &feature_d32,
1080 &feature_perfmon,
21291081 &feature_dsp,
2130 &feature_fpregs,
2131 &feature_thumb2,
2132 &feature_v7clrex,
21331082 &feature_aclass,
2134 &feature_perfmon,
2135 &feature_v4t,
2136 &feature_d32,
2137 &feature_armv7A,
1083 &feature_v7clrex,
1084 &feature_thumb2,
21381085 &feature_avoidPartialCpsr,
21391086 &feature_retAddrStack,
21401087 &feature_mp,
......@@ -2142,10 +1089,9 @@ pub const cpu_cortexA17 = Cpu{
21421089 &feature_fp16,
21431090 &feature_vfp4,
21441091 &feature_vmlxForwarding,
2145 &feature_hwdivArm,
21461092 &feature_hwdiv,
1093 &feature_hwdivArm,
21471094 &feature_virtualization,
2148 &feature_a17,
21491095 },
21501096};
21511097
......@@ -2153,23 +1099,21 @@ pub const cpu_cortexA32 = Cpu{
21531099 .name = "cortex-a32",
21541100 .llvm_name = "cortex-a32",
21551101 .subfeatures = &[_]*const Feature {
2156 &feature_db,
2157 &feature_dsp,
2158 &feature_hwdivArm,
21591102 &feature_hwdiv,
21601103 &feature_trustzone,
21611104 &feature_fpregs,
2162 &feature_v4t,
2163 &feature_thumb2,
2164 &feature_v7clrex,
2165 &feature_aclass,
2166 &feature_crc,
2167 &feature_mp,
1105 &feature_db,
21681106 &feature_acquireRelease,
2169 &feature_fp16,
2170 &feature_perfmon,
21711107 &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,
21731117 &feature_crypto,
21741118 },
21751119};
......@@ -2178,25 +1122,22 @@ pub const cpu_cortexA35 = Cpu{
21781122 .name = "cortex-a35",
21791123 .llvm_name = "cortex-a35",
21801124 .subfeatures = &[_]*const Feature {
2181 &feature_db,
2182 &feature_dsp,
2183 &feature_hwdivArm,
21841125 &feature_hwdiv,
21851126 &feature_trustzone,
21861127 &feature_fpregs,
2187 &feature_v4t,
2188 &feature_thumb2,
2189 &feature_v7clrex,
2190 &feature_aclass,
2191 &feature_crc,
2192 &feature_mp,
1128 &feature_db,
21931129 &feature_acquireRelease,
2194 &feature_fp16,
2195 &feature_perfmon,
21961130 &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,
21981140 &feature_crypto,
2199 &feature_a35,
22001141 },
22011142};
22021143
......@@ -2204,16 +1145,14 @@ pub const cpu_cortexA5 = Cpu{
22041145 .name = "cortex-a5",
22051146 .llvm_name = "cortex-a5",
22061147 .subfeatures = &[_]*const Feature {
1148 &feature_fpregs,
22071149 &feature_db,
1150 &feature_d32,
1151 &feature_perfmon,
22081152 &feature_dsp,
2209 &feature_fpregs,
2210 &feature_thumb2,
2211 &feature_v7clrex,
22121153 &feature_aclass,
2213 &feature_perfmon,
2214 &feature_v4t,
2215 &feature_d32,
2216 &feature_armv7A,
1154 &feature_v7clrex,
1155 &feature_thumb2,
22171156 &feature_retAddrStack,
22181157 &feature_slowfpvmlx,
22191158 &feature_mp,
......@@ -2222,7 +1161,6 @@ pub const cpu_cortexA5 = Cpu{
22221161 &feature_fp16,
22231162 &feature_vfp4,
22241163 &feature_vmlxForwarding,
2225 &feature_a5,
22261164 },
22271165};
22281166
......@@ -2230,26 +1168,23 @@ pub const cpu_cortexA53 = Cpu{
22301168 .name = "cortex-a53",
22311169 .llvm_name = "cortex-a53",
22321170 .subfeatures = &[_]*const Feature {
2233 &feature_db,
2234 &feature_dsp,
2235 &feature_hwdivArm,
22361171 &feature_hwdiv,
22371172 &feature_trustzone,
22381173 &feature_fpregs,
2239 &feature_v4t,
2240 &feature_thumb2,
2241 &feature_v7clrex,
2242 &feature_aclass,
2243 &feature_crc,
2244 &feature_mp,
1174 &feature_db,
22451175 &feature_acquireRelease,
2246 &feature_fp16,
2247 &feature_perfmon,
22481176 &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,
22501186 &feature_crypto,
22511187 &feature_fpao,
2252 &feature_a53,
22531188 },
22541189};
22551190
......@@ -2257,26 +1192,23 @@ pub const cpu_cortexA55 = Cpu{
22571192 .name = "cortex-a55",
22581193 .llvm_name = "cortex-a55",
22591194 .subfeatures = &[_]*const Feature {
2260 &feature_db,
2261 &feature_dsp,
2262 &feature_hwdivArm,
22631195 &feature_hwdiv,
22641196 &feature_trustzone,
22651197 &feature_fpregs,
2266 &feature_v4t,
2267 &feature_thumb2,
1198 &feature_db,
1199 &feature_acquireRelease,
1200 &feature_d32,
1201 &feature_perfmon,
1202 &feature_mp,
22681203 &feature_ras,
2269 &feature_v7clrex,
1204 &feature_hwdivArm,
1205 &feature_dsp,
22701206 &feature_aclass,
2271 &feature_crc,
2272 &feature_mp,
2273 &feature_acquireRelease,
22741207 &feature_fp16,
2275 &feature_perfmon,
2276 &feature_d32,
2277 &feature_armv82A,
1208 &feature_v7clrex,
1209 &feature_crc,
1210 &feature_thumb2,
22781211 &feature_dotprod,
2279 &feature_a55,
22801212 },
22811213};
22821214
......@@ -2284,28 +1216,25 @@ pub const cpu_cortexA57 = Cpu{
22841216 .name = "cortex-a57",
22851217 .llvm_name = "cortex-a57",
22861218 .subfeatures = &[_]*const Feature {
2287 &feature_db,
2288 &feature_dsp,
2289 &feature_hwdivArm,
22901219 &feature_hwdiv,
22911220 &feature_trustzone,
22921221 &feature_fpregs,
2293 &feature_v4t,
2294 &feature_thumb2,
2295 &feature_v7clrex,
2296 &feature_aclass,
2297 &feature_crc,
2298 &feature_mp,
1222 &feature_db,
22991223 &feature_acquireRelease,
2300 &feature_fp16,
2301 &feature_perfmon,
23021224 &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,
23041234 &feature_avoidPartialCpsr,
23051235 &feature_cheapPredicableCpsr,
23061236 &feature_crypto,
23071237 &feature_fpao,
2308 &feature_a57,
23091238 },
23101239};
23111240
......@@ -2313,16 +1242,14 @@ pub const cpu_cortexA7 = Cpu{
23131242 .name = "cortex-a7",
23141243 .llvm_name = "cortex-a7",
23151244 .subfeatures = &[_]*const Feature {
1245 &feature_fpregs,
23161246 &feature_db,
1247 &feature_d32,
1248 &feature_perfmon,
23171249 &feature_dsp,
2318 &feature_fpregs,
2319 &feature_thumb2,
2320 &feature_v7clrex,
23211250 &feature_aclass,
2322 &feature_perfmon,
2323 &feature_v4t,
2324 &feature_d32,
2325 &feature_armv7A,
1251 &feature_v7clrex,
1252 &feature_thumb2,
23261253 &feature_retAddrStack,
23271254 &feature_slowfpvmlx,
23281255 &feature_vmlxHazards,
......@@ -2332,10 +1259,9 @@ pub const cpu_cortexA7 = Cpu{
23321259 &feature_fp16,
23331260 &feature_vfp4,
23341261 &feature_vmlxForwarding,
2335 &feature_hwdivArm,
23361262 &feature_hwdiv,
1263 &feature_hwdivArm,
23371264 &feature_virtualization,
2338 &feature_a7,
23391265 },
23401266};
23411267
......@@ -2343,25 +1269,22 @@ pub const cpu_cortexA72 = Cpu{
23431269 .name = "cortex-a72",
23441270 .llvm_name = "cortex-a72",
23451271 .subfeatures = &[_]*const Feature {
2346 &feature_db,
2347 &feature_dsp,
2348 &feature_hwdivArm,
23491272 &feature_hwdiv,
23501273 &feature_trustzone,
23511274 &feature_fpregs,
2352 &feature_v4t,
2353 &feature_thumb2,
2354 &feature_v7clrex,
2355 &feature_aclass,
2356 &feature_crc,
2357 &feature_mp,
1275 &feature_db,
23581276 &feature_acquireRelease,
2359 &feature_fp16,
2360 &feature_perfmon,
23611277 &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,
23631287 &feature_crypto,
2364 &feature_a72,
23651288 },
23661289};
23671290
......@@ -2369,25 +1292,22 @@ pub const cpu_cortexA73 = Cpu{
23691292 .name = "cortex-a73",
23701293 .llvm_name = "cortex-a73",
23711294 .subfeatures = &[_]*const Feature {
2372 &feature_db,
2373 &feature_dsp,
2374 &feature_hwdivArm,
23751295 &feature_hwdiv,
23761296 &feature_trustzone,
23771297 &feature_fpregs,
2378 &feature_v4t,
2379 &feature_thumb2,
2380 &feature_v7clrex,
2381 &feature_aclass,
2382 &feature_crc,
2383 &feature_mp,
1298 &feature_db,
23841299 &feature_acquireRelease,
2385 &feature_fp16,
2386 &feature_perfmon,
23871300 &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,
23891310 &feature_crypto,
2390 &feature_a73,
23911311 },
23921312};
23931313
......@@ -2395,26 +1315,23 @@ pub const cpu_cortexA75 = Cpu{
23951315 .name = "cortex-a75",
23961316 .llvm_name = "cortex-a75",
23971317 .subfeatures = &[_]*const Feature {
2398 &feature_db,
2399 &feature_dsp,
2400 &feature_hwdivArm,
24011318 &feature_hwdiv,
24021319 &feature_trustzone,
24031320 &feature_fpregs,
2404 &feature_v4t,
2405 &feature_thumb2,
1321 &feature_db,
1322 &feature_acquireRelease,
1323 &feature_d32,
1324 &feature_perfmon,
1325 &feature_mp,
24061326 &feature_ras,
2407 &feature_v7clrex,
1327 &feature_hwdivArm,
1328 &feature_dsp,
24081329 &feature_aclass,
2409 &feature_crc,
2410 &feature_mp,
2411 &feature_acquireRelease,
24121330 &feature_fp16,
2413 &feature_perfmon,
2414 &feature_d32,
2415 &feature_armv82A,
1331 &feature_v7clrex,
1332 &feature_crc,
1333 &feature_thumb2,
24161334 &feature_dotprod,
2417 &feature_a75,
24181335 },
24191336};
24201337
......@@ -2422,28 +1339,25 @@ pub const cpu_cortexA76 = Cpu{
24221339 .name = "cortex-a76",
24231340 .llvm_name = "cortex-a76",
24241341 .subfeatures = &[_]*const Feature {
2425 &feature_db,
2426 &feature_dsp,
2427 &feature_hwdivArm,
24281342 &feature_hwdiv,
24291343 &feature_trustzone,
24301344 &feature_fpregs,
2431 &feature_v4t,
2432 &feature_thumb2,
1345 &feature_db,
1346 &feature_acquireRelease,
1347 &feature_d32,
1348 &feature_perfmon,
1349 &feature_mp,
24331350 &feature_ras,
2434 &feature_v7clrex,
1351 &feature_hwdivArm,
1352 &feature_dsp,
24351353 &feature_aclass,
2436 &feature_crc,
2437 &feature_mp,
2438 &feature_acquireRelease,
24391354 &feature_fp16,
2440 &feature_perfmon,
2441 &feature_d32,
2442 &feature_armv82A,
1355 &feature_v7clrex,
1356 &feature_crc,
1357 &feature_thumb2,
24431358 &feature_crypto,
24441359 &feature_dotprod,
24451360 &feature_fullfp16,
2446 &feature_a76,
24471361 },
24481362};
24491363
......@@ -2451,28 +1365,25 @@ pub const cpu_cortexA76ae = Cpu{
24511365 .name = "cortex-a76ae",
24521366 .llvm_name = "cortex-a76ae",
24531367 .subfeatures = &[_]*const Feature {
2454 &feature_db,
2455 &feature_dsp,
2456 &feature_hwdivArm,
24571368 &feature_hwdiv,
24581369 &feature_trustzone,
24591370 &feature_fpregs,
2460 &feature_v4t,
2461 &feature_thumb2,
1371 &feature_db,
1372 &feature_acquireRelease,
1373 &feature_d32,
1374 &feature_perfmon,
1375 &feature_mp,
24621376 &feature_ras,
2463 &feature_v7clrex,
1377 &feature_hwdivArm,
1378 &feature_dsp,
24641379 &feature_aclass,
2465 &feature_crc,
2466 &feature_mp,
2467 &feature_acquireRelease,
24681380 &feature_fp16,
2469 &feature_perfmon,
2470 &feature_d32,
2471 &feature_armv82A,
1381 &feature_v7clrex,
1382 &feature_crc,
1383 &feature_thumb2,
24721384 &feature_crypto,
24731385 &feature_dotprod,
24741386 &feature_fullfp16,
2475 &feature_a76,
24761387 },
24771388};
24781389
......@@ -2480,16 +1391,14 @@ pub const cpu_cortexA8 = Cpu{
24801391 .name = "cortex-a8",
24811392 .llvm_name = "cortex-a8",
24821393 .subfeatures = &[_]*const Feature {
1394 &feature_fpregs,
24831395 &feature_db,
1396 &feature_d32,
1397 &feature_perfmon,
24841398 &feature_dsp,
2485 &feature_fpregs,
2486 &feature_thumb2,
2487 &feature_v7clrex,
24881399 &feature_aclass,
2489 &feature_perfmon,
2490 &feature_v4t,
2491 &feature_d32,
2492 &feature_armv7A,
1400 &feature_v7clrex,
1401 &feature_thumb2,
24931402 &feature_retAddrStack,
24941403 &feature_slowfpvmlx,
24951404 &feature_vmlxHazards,
......@@ -2497,7 +1406,6 @@ pub const cpu_cortexA8 = Cpu{
24971406 &feature_slowFpBrcc,
24981407 &feature_trustzone,
24991408 &feature_vmlxForwarding,
2500 &feature_a8,
25011409 },
25021410};
25031411
......@@ -2505,16 +1413,14 @@ pub const cpu_cortexA9 = Cpu{
25051413 .name = "cortex-a9",
25061414 .llvm_name = "cortex-a9",
25071415 .subfeatures = &[_]*const Feature {
1416 &feature_fpregs,
25081417 &feature_db,
1418 &feature_d32,
1419 &feature_perfmon,
25091420 &feature_dsp,
2510 &feature_fpregs,
2511 &feature_thumb2,
2512 &feature_v7clrex,
25131421 &feature_aclass,
2514 &feature_perfmon,
2515 &feature_v4t,
2516 &feature_d32,
2517 &feature_armv7A,
1422 &feature_v7clrex,
1423 &feature_thumb2,
25181424 &feature_avoidPartialCpsr,
25191425 &feature_vldnAlign,
25201426 &feature_expandFpMlx,
......@@ -2527,7 +1433,6 @@ pub const cpu_cortexA9 = Cpu{
25271433 &feature_preferVmovsr,
25281434 &feature_trustzone,
25291435 &feature_vmlxForwarding,
2530 &feature_a9,
25311436 },
25321437};
25331438
......@@ -2536,12 +1441,9 @@ pub const cpu_cortexM0 = Cpu{
25361441 .llvm_name = "cortex-m0",
25371442 .subfeatures = &[_]*const Feature {
25381443 &feature_db,
2539 &feature_mclass,
2540 &feature_thumbMode,
25411444 &feature_strictAlign,
25421445 &feature_noarm,
2543 &feature_v4t,
2544 &feature_armv6M,
1446 &feature_mclass,
25451447 },
25461448};
25471449
......@@ -2550,12 +1452,9 @@ pub const cpu_cortexM0plus = Cpu{
25501452 .llvm_name = "cortex-m0plus",
25511453 .subfeatures = &[_]*const Feature {
25521454 &feature_db,
2553 &feature_mclass,
2554 &feature_thumbMode,
25551455 &feature_strictAlign,
25561456 &feature_noarm,
2557 &feature_v4t,
2558 &feature_armv6M,
1457 &feature_mclass,
25591458 },
25601459};
25611460
......@@ -2564,12 +1463,9 @@ pub const cpu_cortexM1 = Cpu{
25641463 .llvm_name = "cortex-m1",
25651464 .subfeatures = &[_]*const Feature {
25661465 &feature_db,
2567 &feature_mclass,
2568 &feature_thumbMode,
25691466 &feature_strictAlign,
25701467 &feature_noarm,
2571 &feature_v4t,
2572 &feature_armv6M,
1468 &feature_mclass,
25731469 },
25741470};
25751471
......@@ -2577,17 +1473,14 @@ pub const cpu_cortexM23 = Cpu{
25771473 .name = "cortex-m23",
25781474 .llvm_name = "cortex-m23",
25791475 .subfeatures = &[_]*const Feature {
2580 &feature_db,
2581 &feature_mclass,
25821476 &feature_hwdiv,
2583 &feature_thumbMode,
2584 &feature_strictAlign,
2585 &feature_v7clrex,
25861477 &feature_msecext8,
1478 &feature_db,
1479 &feature_strictAlign,
25871480 &feature_acquireRelease,
25881481 &feature_noarm,
2589 &feature_v4t,
2590 &feature_armv8Mbase,
1482 &feature_v7clrex,
1483 &feature_mclass,
25911484 &feature_noMovt,
25921485 },
25931486};
......@@ -2596,21 +1489,17 @@ pub const cpu_cortexM3 = Cpu{
25961489 .name = "cortex-m3",
25971490 .llvm_name = "cortex-m3",
25981491 .subfeatures = &[_]*const Feature {
2599 &feature_db,
2600 &feature_mclass,
26011492 &feature_hwdiv,
2602 &feature_thumbMode,
2603 &feature_thumb2,
2604 &feature_v7clrex,
1493 &feature_db,
26051494 &feature_perfmon,
26061495 &feature_noarm,
2607 &feature_v4t,
2608 &feature_armv7M,
1496 &feature_v7clrex,
1497 &feature_mclass,
1498 &feature_thumb2,
26091499 &feature_noBranchPredictor,
26101500 &feature_loopAlign,
26111501 &feature_useAa,
26121502 &feature_useMisched,
2613 &feature_m3,
26141503 },
26151504};
26161505
......@@ -2618,18 +1507,15 @@ pub const cpu_cortexM33 = Cpu{
26181507 .name = "cortex-m33",
26191508 .llvm_name = "cortex-m33",
26201509 .subfeatures = &[_]*const Feature {
2621 &feature_db,
2622 &feature_mclass,
26231510 &feature_hwdiv,
2624 &feature_thumbMode,
2625 &feature_thumb2,
2626 &feature_v7clrex,
26271511 &feature_msecext8,
1512 &feature_db,
26281513 &feature_acquireRelease,
26291514 &feature_perfmon,
26301515 &feature_noarm,
2631 &feature_v4t,
2632 &feature_armv8Mmain,
1516 &feature_v7clrex,
1517 &feature_mclass,
1518 &feature_thumb2,
26331519 &feature_dsp,
26341520 &feature_fp16,
26351521 &feature_fpregs,
......@@ -2646,18 +1532,15 @@ pub const cpu_cortexM35p = Cpu{
26461532 .name = "cortex-m35p",
26471533 .llvm_name = "cortex-m35p",
26481534 .subfeatures = &[_]*const Feature {
2649 &feature_db,
2650 &feature_mclass,
26511535 &feature_hwdiv,
2652 &feature_thumbMode,
2653 &feature_thumb2,
2654 &feature_v7clrex,
26551536 &feature_msecext8,
1537 &feature_db,
26561538 &feature_acquireRelease,
26571539 &feature_perfmon,
26581540 &feature_noarm,
2659 &feature_v4t,
2660 &feature_armv8Mmain,
1541 &feature_v7clrex,
1542 &feature_mclass,
1543 &feature_thumb2,
26611544 &feature_dsp,
26621545 &feature_fp16,
26631546 &feature_fpregs,
......@@ -2674,17 +1557,14 @@ pub const cpu_cortexM4 = Cpu{
26741557 .name = "cortex-m4",
26751558 .llvm_name = "cortex-m4",
26761559 .subfeatures = &[_]*const Feature {
2677 &feature_db,
2678 &feature_mclass,
26791560 &feature_hwdiv,
2680 &feature_dsp,
2681 &feature_thumbMode,
2682 &feature_thumb2,
2683 &feature_v7clrex,
1561 &feature_db,
26841562 &feature_perfmon,
26851563 &feature_noarm,
2686 &feature_v4t,
2687 &feature_armv7eM,
1564 &feature_dsp,
1565 &feature_v7clrex,
1566 &feature_mclass,
1567 &feature_thumb2,
26881568 &feature_noBranchPredictor,
26891569 &feature_slowfpvmlx,
26901570 &feature_loopAlign,
......@@ -2700,19 +1580,16 @@ pub const cpu_cortexM7 = Cpu{
27001580 .name = "cortex-m7",
27011581 .llvm_name = "cortex-m7",
27021582 .subfeatures = &[_]*const Feature {
2703 &feature_db,
2704 &feature_mclass,
27051583 &feature_hwdiv,
2706 &feature_dsp,
2707 &feature_thumbMode,
2708 &feature_thumb2,
2709 &feature_v7clrex,
1584 &feature_db,
27101585 &feature_perfmon,
27111586 &feature_noarm,
2712 &feature_v4t,
2713 &feature_armv7eM,
2714 &feature_fpregs,
1587 &feature_dsp,
1588 &feature_v7clrex,
1589 &feature_mclass,
1590 &feature_thumb2,
27151591 &feature_fp16,
1592 &feature_fpregs,
27161593 &feature_fpArmv8d16,
27171594 },
27181595};
......@@ -2721,18 +1598,15 @@ pub const cpu_cortexR4 = Cpu{
27211598 .name = "cortex-r4",
27221599 .llvm_name = "cortex-r4",
27231600 .subfeatures = &[_]*const Feature {
2724 &feature_db,
2725 &feature_dsp,
27261601 &feature_hwdiv,
27271602 &feature_rclass,
2728 &feature_thumb2,
2729 &feature_v7clrex,
1603 &feature_db,
27301604 &feature_perfmon,
2731 &feature_v4t,
2732 &feature_armv7R,
1605 &feature_dsp,
1606 &feature_v7clrex,
1607 &feature_thumb2,
27331608 &feature_avoidPartialCpsr,
27341609 &feature_retAddrStack,
2735 &feature_r4,
27361610 },
27371611};
27381612
......@@ -2740,22 +1614,19 @@ pub const cpu_cortexR4f = Cpu{
27401614 .name = "cortex-r4f",
27411615 .llvm_name = "cortex-r4f",
27421616 .subfeatures = &[_]*const Feature {
2743 &feature_db,
2744 &feature_dsp,
27451617 &feature_hwdiv,
27461618 &feature_rclass,
2747 &feature_thumb2,
2748 &feature_v7clrex,
1619 &feature_db,
27491620 &feature_perfmon,
2750 &feature_v4t,
2751 &feature_armv7R,
1621 &feature_dsp,
1622 &feature_v7clrex,
1623 &feature_thumb2,
27521624 &feature_avoidPartialCpsr,
27531625 &feature_retAddrStack,
27541626 &feature_slowfpvmlx,
27551627 &feature_slowFpBrcc,
27561628 &feature_fpregs,
27571629 &feature_vfp3d16,
2758 &feature_r4,
27591630 },
27601631};
27611632
......@@ -2763,15 +1634,13 @@ pub const cpu_cortexR5 = Cpu{
27631634 .name = "cortex-r5",
27641635 .llvm_name = "cortex-r5",
27651636 .subfeatures = &[_]*const Feature {
2766 &feature_db,
2767 &feature_dsp,
27681637 &feature_hwdiv,
27691638 &feature_rclass,
2770 &feature_thumb2,
2771 &feature_v7clrex,
1639 &feature_db,
27721640 &feature_perfmon,
2773 &feature_v4t,
2774 &feature_armv7R,
1641 &feature_dsp,
1642 &feature_v7clrex,
1643 &feature_thumb2,
27751644 &feature_avoidPartialCpsr,
27761645 &feature_hwdivArm,
27771646 &feature_retAddrStack,
......@@ -2779,7 +1648,6 @@ pub const cpu_cortexR5 = Cpu{
27791648 &feature_slowFpBrcc,
27801649 &feature_fpregs,
27811650 &feature_vfp3d16,
2782 &feature_r5,
27831651 },
27841652};
27851653
......@@ -2787,27 +1655,24 @@ pub const cpu_cortexR52 = Cpu{
27871655 .name = "cortex-r52",
27881656 .llvm_name = "cortex-r52",
27891657 .subfeatures = &[_]*const Feature {
2790 &feature_db,
2791 &feature_dsp,
2792 &feature_hwdivArm,
27931658 &feature_hwdiv,
27941659 &feature_rclass,
27951660 &feature_fpregs,
2796 &feature_v4t,
2797 &feature_dfb,
2798 &feature_thumb2,
2799 &feature_v7clrex,
1661 &feature_db,
1662 &feature_acquireRelease,
1663 &feature_d32,
28001664 &feature_perfmon,
2801 &feature_crc,
28021665 &feature_mp,
2803 &feature_acquireRelease,
1666 &feature_dfb,
1667 &feature_hwdivArm,
1668 &feature_dsp,
28041669 &feature_fp16,
2805 &feature_d32,
2806 &feature_armv8R,
1670 &feature_v7clrex,
1671 &feature_crc,
1672 &feature_thumb2,
28071673 &feature_fpao,
28081674 &feature_useAa,
28091675 &feature_useMisched,
2810 &feature_r52,
28111676 },
28121677};
28131678
......@@ -2815,15 +1680,13 @@ pub const cpu_cortexR7 = Cpu{
28151680 .name = "cortex-r7",
28161681 .llvm_name = "cortex-r7",
28171682 .subfeatures = &[_]*const Feature {
2818 &feature_db,
2819 &feature_dsp,
28201683 &feature_hwdiv,
28211684 &feature_rclass,
2822 &feature_thumb2,
2823 &feature_v7clrex,
1685 &feature_db,
28241686 &feature_perfmon,
2825 &feature_v4t,
2826 &feature_armv7R,
1687 &feature_dsp,
1688 &feature_v7clrex,
1689 &feature_thumb2,
28271690 &feature_avoidPartialCpsr,
28281691 &feature_fp16,
28291692 &feature_hwdivArm,
......@@ -2833,7 +1696,6 @@ pub const cpu_cortexR7 = Cpu{
28331696 &feature_slowFpBrcc,
28341697 &feature_fpregs,
28351698 &feature_vfp3d16,
2836 &feature_r7,
28371699 },
28381700};
28391701
......@@ -2841,15 +1703,13 @@ pub const cpu_cortexR8 = Cpu{
28411703 .name = "cortex-r8",
28421704 .llvm_name = "cortex-r8",
28431705 .subfeatures = &[_]*const Feature {
2844 &feature_db,
2845 &feature_dsp,
28461706 &feature_hwdiv,
28471707 &feature_rclass,
2848 &feature_thumb2,
2849 &feature_v7clrex,
1708 &feature_db,
28501709 &feature_perfmon,
2851 &feature_v4t,
2852 &feature_armv7R,
1710 &feature_dsp,
1711 &feature_v7clrex,
1712 &feature_thumb2,
28531713 &feature_avoidPartialCpsr,
28541714 &feature_fp16,
28551715 &feature_hwdivArm,
......@@ -2866,23 +1726,21 @@ pub const cpu_cyclone = Cpu{
28661726 .name = "cyclone",
28671727 .llvm_name = "cyclone",
28681728 .subfeatures = &[_]*const Feature {
1729 &feature_hwdiv,
1730 &feature_trustzone,
1731 &feature_fpregs,
28691732 &feature_db,
2870 &feature_dsp,
1733 &feature_acquireRelease,
1734 &feature_d32,
1735 &feature_perfmon,
1736 &feature_mp,
28711737 &feature_hwdivArm,
2872 &feature_hwdiv,
2873 &feature_trustzone,
2874 &feature_fpregs,
2875 &feature_v4t,
2876 &feature_thumb2,
2877 &feature_v7clrex,
1738 &feature_dsp,
28781739 &feature_aclass,
2879 &feature_crc,
2880 &feature_mp,
2881 &feature_acquireRelease,
28821740 &feature_fp16,
2883 &feature_perfmon,
2884 &feature_d32,
2885 &feature_armv8A,
1741 &feature_v7clrex,
1742 &feature_crc,
1743 &feature_thumb2,
28861744 &feature_avoidMovsShop,
28871745 &feature_avoidPartialCpsr,
28881746 &feature_crypto,
......@@ -2893,7 +1751,6 @@ pub const cpu_cyclone = Cpu{
28931751 &feature_useMisched,
28941752 &feature_vfp4,
28951753 &feature_zcz,
2896 &feature_swift,
28971754 },
28981755};
28991756
......@@ -2901,8 +1758,6 @@ pub const cpu_ep9312 = Cpu{
29011758 .name = "ep9312",
29021759 .llvm_name = "ep9312",
29031760 .subfeatures = &[_]*const Feature {
2904 &feature_v4t,
2905 &feature_armv4t,
29061761 },
29071762};
29081763
......@@ -2910,37 +1765,34 @@ pub const cpu_exynosM1 = Cpu{
29101765 .name = "exynos-m1",
29111766 .llvm_name = "exynos-m1",
29121767 .subfeatures = &[_]*const Feature {
2913 &feature_db,
2914 &feature_dsp,
2915 &feature_hwdivArm,
29161768 &feature_hwdiv,
29171769 &feature_trustzone,
29181770 &feature_fpregs,
2919 &feature_v4t,
2920 &feature_thumb2,
2921 &feature_v7clrex,
2922 &feature_aclass,
2923 &feature_crc,
2924 &feature_mp,
1771 &feature_db,
29251772 &feature_acquireRelease,
2926 &feature_fp16,
2927 &feature_perfmon,
29281773 &feature_d32,
2929 &feature_armv8A,
2930 &feature_useAa,
2931 &feature_zcz,
2932 &feature_expandFpMlx,
1774 &feature_perfmon,
1775 &feature_mp,
1776 &feature_hwdivArm,
1777 &feature_dsp,
1778 &feature_aclass,
1779 &feature_fp16,
1780 &feature_v7clrex,
1781 &feature_crc,
1782 &feature_thumb2,
29331783 &feature_slowVdup32,
1784 &feature_expandFpMlx,
29341785 &feature_slowVgetlni32,
2935 &feature_profUnpr,
1786 &feature_fuseLiterals,
29361787 &feature_wideStrideVfp,
1788 &feature_slowFpBrcc,
29371789 &feature_retAddrStack,
1790 &feature_dontWidenVmovs,
1791 &feature_zcz,
29381792 &feature_fuseAes,
2939 &feature_fuseLiterals,
29401793 &feature_slowfpvmlx,
2941 &feature_slowFpBrcc,
2942 &feature_dontWidenVmovs,
2943 &feature_exynos,
1794 &feature_profUnpr,
1795 &feature_useAa,
29441796 },
29451797};
29461798
......@@ -2948,37 +1800,34 @@ pub const cpu_exynosM2 = Cpu{
29481800 .name = "exynos-m2",
29491801 .llvm_name = "exynos-m2",
29501802 .subfeatures = &[_]*const Feature {
2951 &feature_db,
2952 &feature_dsp,
2953 &feature_hwdivArm,
29541803 &feature_hwdiv,
29551804 &feature_trustzone,
29561805 &feature_fpregs,
2957 &feature_v4t,
2958 &feature_thumb2,
2959 &feature_v7clrex,
2960 &feature_aclass,
2961 &feature_crc,
2962 &feature_mp,
1806 &feature_db,
29631807 &feature_acquireRelease,
2964 &feature_fp16,
2965 &feature_perfmon,
29661808 &feature_d32,
2967 &feature_armv8A,
2968 &feature_useAa,
2969 &feature_zcz,
2970 &feature_expandFpMlx,
1809 &feature_perfmon,
1810 &feature_mp,
1811 &feature_hwdivArm,
1812 &feature_dsp,
1813 &feature_aclass,
1814 &feature_fp16,
1815 &feature_v7clrex,
1816 &feature_crc,
1817 &feature_thumb2,
29711818 &feature_slowVdup32,
1819 &feature_expandFpMlx,
29721820 &feature_slowVgetlni32,
2973 &feature_profUnpr,
1821 &feature_fuseLiterals,
29741822 &feature_wideStrideVfp,
1823 &feature_slowFpBrcc,
29751824 &feature_retAddrStack,
1825 &feature_dontWidenVmovs,
1826 &feature_zcz,
29761827 &feature_fuseAes,
2977 &feature_fuseLiterals,
29781828 &feature_slowfpvmlx,
2979 &feature_slowFpBrcc,
2980 &feature_dontWidenVmovs,
2981 &feature_exynos,
1829 &feature_profUnpr,
1830 &feature_useAa,
29821831 },
29831832};
29841833
......@@ -2986,37 +1835,34 @@ pub const cpu_exynosM3 = Cpu{
29861835 .name = "exynos-m3",
29871836 .llvm_name = "exynos-m3",
29881837 .subfeatures = &[_]*const Feature {
2989 &feature_db,
2990 &feature_dsp,
2991 &feature_hwdivArm,
29921838 &feature_hwdiv,
29931839 &feature_trustzone,
29941840 &feature_fpregs,
2995 &feature_v4t,
2996 &feature_thumb2,
2997 &feature_v7clrex,
2998 &feature_aclass,
2999 &feature_crc,
3000 &feature_mp,
1841 &feature_db,
30011842 &feature_acquireRelease,
3002 &feature_fp16,
3003 &feature_perfmon,
30041843 &feature_d32,
3005 &feature_armv8A,
3006 &feature_useAa,
3007 &feature_zcz,
3008 &feature_expandFpMlx,
1844 &feature_perfmon,
1845 &feature_mp,
1846 &feature_hwdivArm,
1847 &feature_dsp,
1848 &feature_aclass,
1849 &feature_fp16,
1850 &feature_v7clrex,
1851 &feature_crc,
1852 &feature_thumb2,
30091853 &feature_slowVdup32,
1854 &feature_expandFpMlx,
30101855 &feature_slowVgetlni32,
3011 &feature_profUnpr,
1856 &feature_fuseLiterals,
30121857 &feature_wideStrideVfp,
1858 &feature_slowFpBrcc,
30131859 &feature_retAddrStack,
1860 &feature_dontWidenVmovs,
1861 &feature_zcz,
30141862 &feature_fuseAes,
3015 &feature_fuseLiterals,
30161863 &feature_slowfpvmlx,
3017 &feature_slowFpBrcc,
3018 &feature_dontWidenVmovs,
3019 &feature_exynos,
1864 &feature_profUnpr,
1865 &feature_useAa,
30201866 },
30211867};
30221868
......@@ -3024,40 +1870,37 @@ pub const cpu_exynosM4 = Cpu{
30241870 .name = "exynos-m4",
30251871 .llvm_name = "exynos-m4",
30261872 .subfeatures = &[_]*const Feature {
3027 &feature_db,
3028 &feature_dsp,
3029 &feature_hwdivArm,
30301873 &feature_hwdiv,
30311874 &feature_trustzone,
30321875 &feature_fpregs,
3033 &feature_v4t,
3034 &feature_thumb2,
1876 &feature_db,
1877 &feature_acquireRelease,
1878 &feature_d32,
1879 &feature_perfmon,
1880 &feature_mp,
30351881 &feature_ras,
3036 &feature_v7clrex,
1882 &feature_hwdivArm,
1883 &feature_dsp,
30371884 &feature_aclass,
3038 &feature_crc,
3039 &feature_mp,
3040 &feature_acquireRelease,
30411885 &feature_fp16,
3042 &feature_perfmon,
3043 &feature_d32,
3044 &feature_armv82A,
1886 &feature_v7clrex,
1887 &feature_crc,
1888 &feature_thumb2,
30451889 &feature_dotprod,
30461890 &feature_fullfp16,
3047 &feature_useAa,
3048 &feature_zcz,
3049 &feature_expandFpMlx,
30501891 &feature_slowVdup32,
1892 &feature_expandFpMlx,
30511893 &feature_slowVgetlni32,
3052 &feature_profUnpr,
1894 &feature_fuseLiterals,
30531895 &feature_wideStrideVfp,
1896 &feature_slowFpBrcc,
30541897 &feature_retAddrStack,
1898 &feature_dontWidenVmovs,
1899 &feature_zcz,
30551900 &feature_fuseAes,
3056 &feature_fuseLiterals,
30571901 &feature_slowfpvmlx,
3058 &feature_slowFpBrcc,
3059 &feature_dontWidenVmovs,
3060 &feature_exynos,
1902 &feature_profUnpr,
1903 &feature_useAa,
30611904 },
30621905};
30631906
......@@ -3065,40 +1908,37 @@ pub const cpu_exynosM5 = Cpu{
30651908 .name = "exynos-m5",
30661909 .llvm_name = "exynos-m5",
30671910 .subfeatures = &[_]*const Feature {
3068 &feature_db,
3069 &feature_dsp,
3070 &feature_hwdivArm,
30711911 &feature_hwdiv,
30721912 &feature_trustzone,
30731913 &feature_fpregs,
3074 &feature_v4t,
3075 &feature_thumb2,
1914 &feature_db,
1915 &feature_acquireRelease,
1916 &feature_d32,
1917 &feature_perfmon,
1918 &feature_mp,
30761919 &feature_ras,
3077 &feature_v7clrex,
1920 &feature_hwdivArm,
1921 &feature_dsp,
30781922 &feature_aclass,
3079 &feature_crc,
3080 &feature_mp,
3081 &feature_acquireRelease,
30821923 &feature_fp16,
3083 &feature_perfmon,
3084 &feature_d32,
3085 &feature_armv82A,
1924 &feature_v7clrex,
1925 &feature_crc,
1926 &feature_thumb2,
30861927 &feature_dotprod,
30871928 &feature_fullfp16,
3088 &feature_useAa,
3089 &feature_zcz,
3090 &feature_expandFpMlx,
30911929 &feature_slowVdup32,
1930 &feature_expandFpMlx,
30921931 &feature_slowVgetlni32,
3093 &feature_profUnpr,
1932 &feature_fuseLiterals,
30941933 &feature_wideStrideVfp,
1934 &feature_slowFpBrcc,
30951935 &feature_retAddrStack,
1936 &feature_dontWidenVmovs,
1937 &feature_zcz,
30961938 &feature_fuseAes,
3097 &feature_fuseLiterals,
30981939 &feature_slowfpvmlx,
3099 &feature_slowFpBrcc,
3100 &feature_dontWidenVmovs,
3101 &feature_exynos,
1940 &feature_profUnpr,
1941 &feature_useAa,
31021942 },
31031943};
31041944
......@@ -3113,8 +1953,6 @@ pub const cpu_iwmmxt = Cpu{
31131953 .name = "iwmmxt",
31141954 .llvm_name = "iwmmxt",
31151955 .subfeatures = &[_]*const Feature {
3116 &feature_v4t,
3117 &feature_armv5te,
31181956 },
31191957};
31201958
......@@ -3122,16 +1960,14 @@ pub const cpu_krait = Cpu{
31221960 .name = "krait",
31231961 .llvm_name = "krait",
31241962 .subfeatures = &[_]*const Feature {
1963 &feature_fpregs,
31251964 &feature_db,
1965 &feature_d32,
1966 &feature_perfmon,
31261967 &feature_dsp,
3127 &feature_fpregs,
3128 &feature_thumb2,
3129 &feature_v7clrex,
31301968 &feature_aclass,
3131 &feature_perfmon,
3132 &feature_v4t,
3133 &feature_d32,
3134 &feature_armv7A,
1969 &feature_v7clrex,
1970 &feature_thumb2,
31351971 &feature_avoidPartialCpsr,
31361972 &feature_vldnAlign,
31371973 &feature_fp16,
......@@ -3141,7 +1977,6 @@ pub const cpu_krait = Cpu{
31411977 &feature_muxedUnits,
31421978 &feature_vfp4,
31431979 &feature_vmlxForwarding,
3144 &feature_krait,
31451980 },
31461981};
31471982
......@@ -3149,25 +1984,22 @@ pub const cpu_kryo = Cpu{
31491984 .name = "kryo",
31501985 .llvm_name = "kryo",
31511986 .subfeatures = &[_]*const Feature {
3152 &feature_db,
3153 &feature_dsp,
3154 &feature_hwdivArm,
31551987 &feature_hwdiv,
31561988 &feature_trustzone,
31571989 &feature_fpregs,
3158 &feature_v4t,
3159 &feature_thumb2,
3160 &feature_v7clrex,
3161 &feature_aclass,
3162 &feature_crc,
3163 &feature_mp,
1990 &feature_db,
31641991 &feature_acquireRelease,
3165 &feature_fp16,
3166 &feature_perfmon,
31671992 &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,
31692002 &feature_crypto,
3170 &feature_kryo,
31712003 },
31722004};
31732005
......@@ -3175,8 +2007,6 @@ pub const cpu_mpcore = Cpu{
31752007 .name = "mpcore",
31762008 .llvm_name = "mpcore",
31772009 .subfeatures = &[_]*const Feature {
3178 &feature_v4t,
3179 &feature_armv6k,
31802010 &feature_slowfpvmlx,
31812011 &feature_fpregs,
31822012 &feature_vfp2,
......@@ -3187,8 +2017,6 @@ pub const cpu_mpcorenovfp = Cpu{
31872017 .name = "mpcorenovfp",
31882018 .llvm_name = "mpcorenovfp",
31892019 .subfeatures = &[_]*const Feature {
3190 &feature_v4t,
3191 &feature_armv6k,
31922020 },
31932021};
31942022
......@@ -3196,24 +2024,22 @@ pub const cpu_neoverseN1 = Cpu{
31962024 .name = "neoverse-n1",
31972025 .llvm_name = "neoverse-n1",
31982026 .subfeatures = &[_]*const Feature {
3199 &feature_db,
3200 &feature_dsp,
3201 &feature_hwdivArm,
32022027 &feature_hwdiv,
32032028 &feature_trustzone,
32042029 &feature_fpregs,
3205 &feature_v4t,
3206 &feature_thumb2,
2030 &feature_db,
2031 &feature_acquireRelease,
2032 &feature_d32,
2033 &feature_perfmon,
2034 &feature_mp,
32072035 &feature_ras,
3208 &feature_v7clrex,
2036 &feature_hwdivArm,
2037 &feature_dsp,
32092038 &feature_aclass,
3210 &feature_crc,
3211 &feature_mp,
3212 &feature_acquireRelease,
32132039 &feature_fp16,
3214 &feature_perfmon,
3215 &feature_d32,
3216 &feature_armv82A,
2040 &feature_v7clrex,
2041 &feature_crc,
2042 &feature_thumb2,
32172043 &feature_crypto,
32182044 &feature_dotprod,
32192045 },
......@@ -3224,12 +2050,9 @@ pub const cpu_sc000 = Cpu{
32242050 .llvm_name = "sc000",
32252051 .subfeatures = &[_]*const Feature {
32262052 &feature_db,
3227 &feature_mclass,
3228 &feature_thumbMode,
32292053 &feature_strictAlign,
32302054 &feature_noarm,
3231 &feature_v4t,
3232 &feature_armv6M,
2055 &feature_mclass,
32332056 },
32342057};
32352058
......@@ -3237,20 +2060,16 @@ pub const cpu_sc300 = Cpu{
32372060 .name = "sc300",
32382061 .llvm_name = "sc300",
32392062 .subfeatures = &[_]*const Feature {
3240 &feature_db,
3241 &feature_mclass,
32422063 &feature_hwdiv,
3243 &feature_thumbMode,
3244 &feature_thumb2,
3245 &feature_v7clrex,
2064 &feature_db,
32462065 &feature_perfmon,
32472066 &feature_noarm,
3248 &feature_v4t,
3249 &feature_armv7M,
2067 &feature_v7clrex,
2068 &feature_mclass,
2069 &feature_thumb2,
32502070 &feature_noBranchPredictor,
32512071 &feature_useAa,
32522072 &feature_useMisched,
3253 &feature_m3,
32542073 },
32552074};
32562075
......@@ -3258,7 +2077,6 @@ pub const cpu_strongarm = Cpu{
32582077 .name = "strongarm",
32592078 .llvm_name = "strongarm",
32602079 .subfeatures = &[_]*const Feature {
3261 &feature_armv4,
32622080 },
32632081};
32642082
......@@ -3266,7 +2084,6 @@ pub const cpu_strongarm110 = Cpu{
32662084 .name = "strongarm110",
32672085 .llvm_name = "strongarm110",
32682086 .subfeatures = &[_]*const Feature {
3269 &feature_armv4,
32702087 },
32712088};
32722089
......@@ -3274,7 +2091,6 @@ pub const cpu_strongarm1100 = Cpu{
32742091 .name = "strongarm1100",
32752092 .llvm_name = "strongarm1100",
32762093 .subfeatures = &[_]*const Feature {
3277 &feature_armv4,
32782094 },
32792095};
32802096
......@@ -3282,7 +2098,6 @@ pub const cpu_strongarm1110 = Cpu{
32822098 .name = "strongarm1110",
32832099 .llvm_name = "strongarm1110",
32842100 .subfeatures = &[_]*const Feature {
3285 &feature_armv4,
32862101 },
32872102};
32882103
......@@ -3290,16 +2105,14 @@ pub const cpu_swift = Cpu{
32902105 .name = "swift",
32912106 .llvm_name = "swift",
32922107 .subfeatures = &[_]*const Feature {
2108 &feature_fpregs,
32932109 &feature_db,
2110 &feature_d32,
2111 &feature_perfmon,
32942112 &feature_dsp,
3295 &feature_fpregs,
3296 &feature_thumb2,
3297 &feature_v7clrex,
32982113 &feature_aclass,
3299 &feature_perfmon,
3300 &feature_v4t,
3301 &feature_d32,
3302 &feature_armv7A,
2114 &feature_v7clrex,
2115 &feature_thumb2,
33032116 &feature_avoidMovsShop,
33042117 &feature_avoidPartialCpsr,
33052118 &feature_hwdivArm,
......@@ -3320,7 +2133,6 @@ pub const cpu_swift = Cpu{
33202133 &feature_wideStrideVfp,
33212134 &feature_fp16,
33222135 &feature_vfp4,
3323 &feature_swift,
33242136 },
33252137};
33262138
......@@ -3328,8 +2140,6 @@ pub const cpu_xscale = Cpu{
33282140 .name = "xscale",
33292141 .llvm_name = "xscale",
33302142 .subfeatures = &[_]*const Feature {
3331 &feature_v4t,
3332 &feature_armv5te,
33332143 },
33342144};
33352145
lib/std/target/avr.zig+1389-2161
......@@ -1,227 +1,6 @@
11const Feature = @import("std").target.Feature;
22const 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
2254pub const feature_addsubiw = Feature{
2265 .name = "addsubiw",
2276 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
......@@ -334,29 +113,6 @@ pub const feature_sram = Feature{
334113 },
335114};
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
360116pub const feature_smallstack = Feature{
361117 .name = "smallstack",
362118 .description = "The device has an 8-bit stack pointer",
......@@ -372,20 +128,6 @@ pub const feature_tinyencoding = Feature{
372128};
373129
374130pub 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,
389131 &feature_addsubiw,
390132 &feature_break,
391133 &feature_des,
......@@ -402,7 +144,6 @@ pub const features = &[_]*const Feature {
402144 &feature_spm,
403145 &feature_spmx,
404146 &feature_sram,
405 &feature_special,
406147 &feature_smallstack,
407148 &feature_tinyencoding,
408149};
......@@ -411,14 +152,12 @@ pub const cpu_at43usb320 = Cpu{
411152 .name = "at43usb320",
412153 .llvm_name = "at43usb320",
413154 .subfeatures = &[_]*const Feature {
414 &feature_ijmpcall,
415 &feature_jmpcall,
416 &feature_sram,
417155 &feature_addsubiw,
418 &feature_elpm,
156 &feature_jmpcall,
419157 &feature_lpm,
420 &feature_avr0,
421 &feature_avr31,
158 &feature_elpm,
159 &feature_sram,
160 &feature_ijmpcall,
422161 },
423162};
424163
......@@ -426,13 +165,11 @@ pub const cpu_at43usb355 = Cpu{
426165 .name = "at43usb355",
427166 .llvm_name = "at43usb355",
428167 .subfeatures = &[_]*const Feature {
429 &feature_ijmpcall,
430 &feature_jmpcall,
431 &feature_sram,
432168 &feature_addsubiw,
169 &feature_jmpcall,
433170 &feature_lpm,
434 &feature_avr0,
435 &feature_avr3,
171 &feature_sram,
172 &feature_ijmpcall,
436173 },
437174};
438175
......@@ -440,13 +177,11 @@ pub const cpu_at76c711 = Cpu{
440177 .name = "at76c711",
441178 .llvm_name = "at76c711",
442179 .subfeatures = &[_]*const Feature {
443 &feature_ijmpcall,
444 &feature_jmpcall,
445 &feature_sram,
446180 &feature_addsubiw,
181 &feature_jmpcall,
447182 &feature_lpm,
448 &feature_avr0,
449 &feature_avr3,
183 &feature_sram,
184 &feature_ijmpcall,
450185 },
451186};
452187
......@@ -454,12 +189,10 @@ pub const cpu_at86rf401 = Cpu{
454189 .name = "at86rf401",
455190 .llvm_name = "at86rf401",
456191 .subfeatures = &[_]*const Feature {
457 &feature_ijmpcall,
458 &feature_sram,
459192 &feature_addsubiw,
460193 &feature_lpm,
461 &feature_avr0,
462 &feature_avr2,
194 &feature_sram,
195 &feature_ijmpcall,
463196 &feature_lpmx,
464197 &feature_movw,
465198 },
......@@ -469,12 +202,10 @@ pub const cpu_at90c8534 = Cpu{
469202 .name = "at90c8534",
470203 .llvm_name = "at90c8534",
471204 .subfeatures = &[_]*const Feature {
472 &feature_ijmpcall,
473 &feature_sram,
474205 &feature_addsubiw,
475206 &feature_lpm,
476 &feature_avr0,
477 &feature_avr2,
207 &feature_sram,
208 &feature_ijmpcall,
478209 },
479210};
480211
......@@ -482,20 +213,18 @@ pub const cpu_at90can128 = Cpu{
482213 .name = "at90can128",
483214 .llvm_name = "at90can128",
484215 .subfeatures = &[_]*const Feature {
485 &feature_spm,
486216 &feature_lpmx,
487 &feature_ijmpcall,
488 &feature_jmpcall,
489 &feature_sram,
217 &feature_spm,
490218 &feature_addsubiw,
491 &feature_elpm,
492 &feature_mul,
493 &feature_break,
219 &feature_jmpcall,
494220 &feature_lpm,
221 &feature_break,
222 &feature_mul,
223 &feature_elpm,
495224 &feature_elpmx,
496 &feature_avr0,
225 &feature_sram,
226 &feature_ijmpcall,
497227 &feature_movw,
498 &feature_avr51,
499228 },
500229};
501230
......@@ -503,18 +232,16 @@ pub const cpu_at90can32 = Cpu{
503232 .name = "at90can32",
504233 .llvm_name = "at90can32",
505234 .subfeatures = &[_]*const Feature {
506 &feature_spm,
507235 &feature_lpmx,
508 &feature_ijmpcall,
509 &feature_jmpcall,
510 &feature_sram,
236 &feature_spm,
511237 &feature_addsubiw,
512 &feature_mul,
513 &feature_break,
238 &feature_jmpcall,
514239 &feature_lpm,
515 &feature_avr0,
240 &feature_break,
241 &feature_mul,
242 &feature_sram,
243 &feature_ijmpcall,
516244 &feature_movw,
517 &feature_avr5,
518245 },
519246};
520247
......@@ -522,18 +249,16 @@ pub const cpu_at90can64 = Cpu{
522249 .name = "at90can64",
523250 .llvm_name = "at90can64",
524251 .subfeatures = &[_]*const Feature {
525 &feature_spm,
526252 &feature_lpmx,
527 &feature_ijmpcall,
528 &feature_jmpcall,
529 &feature_sram,
253 &feature_spm,
530254 &feature_addsubiw,
531 &feature_mul,
532 &feature_break,
255 &feature_jmpcall,
533256 &feature_lpm,
534 &feature_avr0,
257 &feature_break,
258 &feature_mul,
259 &feature_sram,
260 &feature_ijmpcall,
535261 &feature_movw,
536 &feature_avr5,
537262 },
538263};
539264
......@@ -541,17 +266,15 @@ pub const cpu_at90pwm1 = Cpu{
541266 .name = "at90pwm1",
542267 .llvm_name = "at90pwm1",
543268 .subfeatures = &[_]*const Feature {
544 &feature_spm,
545269 &feature_lpmx,
546 &feature_ijmpcall,
547 &feature_sram,
270 &feature_spm,
548271 &feature_addsubiw,
549 &feature_mul,
550272 &feature_break,
551273 &feature_lpm,
552 &feature_avr0,
274 &feature_mul,
275 &feature_sram,
276 &feature_ijmpcall,
553277 &feature_movw,
554 &feature_avr4,
555278 },
556279};
557280
......@@ -559,18 +282,16 @@ pub const cpu_at90pwm161 = Cpu{
559282 .name = "at90pwm161",
560283 .llvm_name = "at90pwm161",
561284 .subfeatures = &[_]*const Feature {
562 &feature_spm,
563285 &feature_lpmx,
564 &feature_ijmpcall,
565 &feature_jmpcall,
566 &feature_sram,
286 &feature_spm,
567287 &feature_addsubiw,
568 &feature_mul,
569 &feature_break,
288 &feature_jmpcall,
570289 &feature_lpm,
571 &feature_avr0,
290 &feature_break,
291 &feature_mul,
292 &feature_sram,
293 &feature_ijmpcall,
572294 &feature_movw,
573 &feature_avr5,
574295 },
575296};
576297
......@@ -578,17 +299,15 @@ pub const cpu_at90pwm2 = Cpu{
578299 .name = "at90pwm2",
579300 .llvm_name = "at90pwm2",
580301 .subfeatures = &[_]*const Feature {
581 &feature_spm,
582302 &feature_lpmx,
583 &feature_ijmpcall,
584 &feature_sram,
303 &feature_spm,
585304 &feature_addsubiw,
586 &feature_mul,
587305 &feature_break,
588306 &feature_lpm,
589 &feature_avr0,
307 &feature_mul,
308 &feature_sram,
309 &feature_ijmpcall,
590310 &feature_movw,
591 &feature_avr4,
592311 },
593312};
594313
......@@ -596,18 +315,16 @@ pub const cpu_at90pwm216 = Cpu{
596315 .name = "at90pwm216",
597316 .llvm_name = "at90pwm216",
598317 .subfeatures = &[_]*const Feature {
599 &feature_spm,
600318 &feature_lpmx,
601 &feature_ijmpcall,
602 &feature_jmpcall,
603 &feature_sram,
319 &feature_spm,
604320 &feature_addsubiw,
605 &feature_mul,
606 &feature_break,
321 &feature_jmpcall,
607322 &feature_lpm,
608 &feature_avr0,
323 &feature_break,
324 &feature_mul,
325 &feature_sram,
326 &feature_ijmpcall,
609327 &feature_movw,
610 &feature_avr5,
611328 },
612329};
613330
......@@ -615,17 +332,15 @@ pub const cpu_at90pwm2b = Cpu{
615332 .name = "at90pwm2b",
616333 .llvm_name = "at90pwm2b",
617334 .subfeatures = &[_]*const Feature {
618 &feature_spm,
619335 &feature_lpmx,
620 &feature_ijmpcall,
621 &feature_sram,
336 &feature_spm,
622337 &feature_addsubiw,
623 &feature_mul,
624338 &feature_break,
625339 &feature_lpm,
626 &feature_avr0,
340 &feature_mul,
341 &feature_sram,
342 &feature_ijmpcall,
627343 &feature_movw,
628 &feature_avr4,
629344 },
630345};
631346
......@@ -633,17 +348,15 @@ pub const cpu_at90pwm3 = Cpu{
633348 .name = "at90pwm3",
634349 .llvm_name = "at90pwm3",
635350 .subfeatures = &[_]*const Feature {
636 &feature_spm,
637351 &feature_lpmx,
638 &feature_ijmpcall,
639 &feature_sram,
352 &feature_spm,
640353 &feature_addsubiw,
641 &feature_mul,
642354 &feature_break,
643355 &feature_lpm,
644 &feature_avr0,
356 &feature_mul,
357 &feature_sram,
358 &feature_ijmpcall,
645359 &feature_movw,
646 &feature_avr4,
647360 },
648361};
649362
......@@ -651,18 +364,16 @@ pub const cpu_at90pwm316 = Cpu{
651364 .name = "at90pwm316",
652365 .llvm_name = "at90pwm316",
653366 .subfeatures = &[_]*const Feature {
654 &feature_spm,
655367 &feature_lpmx,
656 &feature_ijmpcall,
657 &feature_jmpcall,
658 &feature_sram,
368 &feature_spm,
659369 &feature_addsubiw,
660 &feature_mul,
661 &feature_break,
370 &feature_jmpcall,
662371 &feature_lpm,
663 &feature_avr0,
372 &feature_break,
373 &feature_mul,
374 &feature_sram,
375 &feature_ijmpcall,
664376 &feature_movw,
665 &feature_avr5,
666377 },
667378};
668379
......@@ -670,17 +381,15 @@ pub const cpu_at90pwm3b = Cpu{
670381 .name = "at90pwm3b",
671382 .llvm_name = "at90pwm3b",
672383 .subfeatures = &[_]*const Feature {
673 &feature_spm,
674384 &feature_lpmx,
675 &feature_ijmpcall,
676 &feature_sram,
385 &feature_spm,
677386 &feature_addsubiw,
678 &feature_mul,
679387 &feature_break,
680388 &feature_lpm,
681 &feature_avr0,
389 &feature_mul,
390 &feature_sram,
391 &feature_ijmpcall,
682392 &feature_movw,
683 &feature_avr4,
684393 },
685394};
686395
......@@ -688,17 +397,15 @@ pub const cpu_at90pwm81 = Cpu{
688397 .name = "at90pwm81",
689398 .llvm_name = "at90pwm81",
690399 .subfeatures = &[_]*const Feature {
691 &feature_spm,
692400 &feature_lpmx,
693 &feature_ijmpcall,
694 &feature_sram,
401 &feature_spm,
695402 &feature_addsubiw,
696 &feature_mul,
697403 &feature_break,
698404 &feature_lpm,
699 &feature_avr0,
405 &feature_mul,
406 &feature_sram,
407 &feature_ijmpcall,
700408 &feature_movw,
701 &feature_avr4,
702409 },
703410};
704411
......@@ -706,7 +413,6 @@ pub const cpu_at90s1200 = Cpu{
706413 .name = "at90s1200",
707414 .llvm_name = "at90s1200",
708415 .subfeatures = &[_]*const Feature {
709 &feature_avr0,
710416 },
711417};
712418
......@@ -714,12 +420,10 @@ pub const cpu_at90s2313 = Cpu{
714420 .name = "at90s2313",
715421 .llvm_name = "at90s2313",
716422 .subfeatures = &[_]*const Feature {
717 &feature_ijmpcall,
718 &feature_sram,
719423 &feature_addsubiw,
720424 &feature_lpm,
721 &feature_avr0,
722 &feature_avr2,
425 &feature_sram,
426 &feature_ijmpcall,
723427 },
724428};
725429
......@@ -727,12 +431,10 @@ pub const cpu_at90s2323 = Cpu{
727431 .name = "at90s2323",
728432 .llvm_name = "at90s2323",
729433 .subfeatures = &[_]*const Feature {
730 &feature_ijmpcall,
731 &feature_sram,
732434 &feature_addsubiw,
733435 &feature_lpm,
734 &feature_avr0,
735 &feature_avr2,
436 &feature_sram,
437 &feature_ijmpcall,
736438 },
737439};
738440
......@@ -740,12 +442,10 @@ pub const cpu_at90s2333 = Cpu{
740442 .name = "at90s2333",
741443 .llvm_name = "at90s2333",
742444 .subfeatures = &[_]*const Feature {
743 &feature_ijmpcall,
744 &feature_sram,
745445 &feature_addsubiw,
746446 &feature_lpm,
747 &feature_avr0,
748 &feature_avr2,
447 &feature_sram,
448 &feature_ijmpcall,
749449 },
750450};
751451
......@@ -753,12 +453,10 @@ pub const cpu_at90s2343 = Cpu{
753453 .name = "at90s2343",
754454 .llvm_name = "at90s2343",
755455 .subfeatures = &[_]*const Feature {
756 &feature_ijmpcall,
757 &feature_sram,
758456 &feature_addsubiw,
759457 &feature_lpm,
760 &feature_avr0,
761 &feature_avr2,
458 &feature_sram,
459 &feature_ijmpcall,
762460 },
763461};
764462
......@@ -766,12 +464,10 @@ pub const cpu_at90s4414 = Cpu{
766464 .name = "at90s4414",
767465 .llvm_name = "at90s4414",
768466 .subfeatures = &[_]*const Feature {
769 &feature_ijmpcall,
770 &feature_sram,
771467 &feature_addsubiw,
772468 &feature_lpm,
773 &feature_avr0,
774 &feature_avr2,
469 &feature_sram,
470 &feature_ijmpcall,
775471 },
776472};
777473
......@@ -779,12 +475,10 @@ pub const cpu_at90s4433 = Cpu{
779475 .name = "at90s4433",
780476 .llvm_name = "at90s4433",
781477 .subfeatures = &[_]*const Feature {
782 &feature_ijmpcall,
783 &feature_sram,
784478 &feature_addsubiw,
785479 &feature_lpm,
786 &feature_avr0,
787 &feature_avr2,
480 &feature_sram,
481 &feature_ijmpcall,
788482 },
789483};
790484
......@@ -792,12 +486,10 @@ pub const cpu_at90s4434 = Cpu{
792486 .name = "at90s4434",
793487 .llvm_name = "at90s4434",
794488 .subfeatures = &[_]*const Feature {
795 &feature_ijmpcall,
796 &feature_sram,
797489 &feature_addsubiw,
798490 &feature_lpm,
799 &feature_avr0,
800 &feature_avr2,
491 &feature_sram,
492 &feature_ijmpcall,
801493 },
802494};
803495
......@@ -805,12 +497,10 @@ pub const cpu_at90s8515 = Cpu{
805497 .name = "at90s8515",
806498 .llvm_name = "at90s8515",
807499 .subfeatures = &[_]*const Feature {
808 &feature_ijmpcall,
809 &feature_sram,
810500 &feature_addsubiw,
811501 &feature_lpm,
812 &feature_avr0,
813 &feature_avr2,
502 &feature_sram,
503 &feature_ijmpcall,
814504 },
815505};
816506
......@@ -818,12 +508,10 @@ pub const cpu_at90s8535 = Cpu{
818508 .name = "at90s8535",
819509 .llvm_name = "at90s8535",
820510 .subfeatures = &[_]*const Feature {
821 &feature_ijmpcall,
822 &feature_sram,
823511 &feature_addsubiw,
824512 &feature_lpm,
825 &feature_avr0,
826 &feature_avr2,
513 &feature_sram,
514 &feature_ijmpcall,
827515 },
828516};
829517
......@@ -831,18 +519,16 @@ pub const cpu_at90scr100 = Cpu{
831519 .name = "at90scr100",
832520 .llvm_name = "at90scr100",
833521 .subfeatures = &[_]*const Feature {
834 &feature_spm,
835522 &feature_lpmx,
836 &feature_ijmpcall,
837 &feature_jmpcall,
838 &feature_sram,
523 &feature_spm,
839524 &feature_addsubiw,
840 &feature_mul,
841 &feature_break,
525 &feature_jmpcall,
842526 &feature_lpm,
843 &feature_avr0,
527 &feature_break,
528 &feature_mul,
529 &feature_sram,
530 &feature_ijmpcall,
844531 &feature_movw,
845 &feature_avr5,
846532 },
847533};
848534
......@@ -850,20 +536,18 @@ pub const cpu_at90usb1286 = Cpu{
850536 .name = "at90usb1286",
851537 .llvm_name = "at90usb1286",
852538 .subfeatures = &[_]*const Feature {
853 &feature_spm,
854539 &feature_lpmx,
855 &feature_ijmpcall,
856 &feature_jmpcall,
857 &feature_sram,
540 &feature_spm,
858541 &feature_addsubiw,
859 &feature_elpm,
860 &feature_mul,
861 &feature_break,
542 &feature_jmpcall,
862543 &feature_lpm,
544 &feature_break,
545 &feature_mul,
546 &feature_elpm,
863547 &feature_elpmx,
864 &feature_avr0,
548 &feature_sram,
549 &feature_ijmpcall,
865550 &feature_movw,
866 &feature_avr51,
867551 },
868552};
869553
......@@ -871,20 +555,18 @@ pub const cpu_at90usb1287 = Cpu{
871555 .name = "at90usb1287",
872556 .llvm_name = "at90usb1287",
873557 .subfeatures = &[_]*const Feature {
874 &feature_spm,
875558 &feature_lpmx,
876 &feature_ijmpcall,
877 &feature_jmpcall,
878 &feature_sram,
559 &feature_spm,
879560 &feature_addsubiw,
880 &feature_elpm,
881 &feature_mul,
882 &feature_break,
561 &feature_jmpcall,
883562 &feature_lpm,
563 &feature_break,
564 &feature_mul,
565 &feature_elpm,
884566 &feature_elpmx,
885 &feature_avr0,
567 &feature_sram,
568 &feature_ijmpcall,
886569 &feature_movw,
887 &feature_avr51,
888570 },
889571};
890572
......@@ -892,17 +574,15 @@ pub const cpu_at90usb162 = Cpu{
892574 .name = "at90usb162",
893575 .llvm_name = "at90usb162",
894576 .subfeatures = &[_]*const Feature {
895 &feature_spm,
896577 &feature_lpmx,
897 &feature_ijmpcall,
898 &feature_jmpcall,
899 &feature_sram,
578 &feature_spm,
900579 &feature_addsubiw,
901 &feature_break,
580 &feature_jmpcall,
902581 &feature_lpm,
903 &feature_avr0,
582 &feature_break,
583 &feature_sram,
584 &feature_ijmpcall,
904585 &feature_movw,
905 &feature_avr35,
906586 },
907587};
908588
......@@ -910,18 +590,16 @@ pub const cpu_at90usb646 = Cpu{
910590 .name = "at90usb646",
911591 .llvm_name = "at90usb646",
912592 .subfeatures = &[_]*const Feature {
913 &feature_spm,
914593 &feature_lpmx,
915 &feature_ijmpcall,
916 &feature_jmpcall,
917 &feature_sram,
594 &feature_spm,
918595 &feature_addsubiw,
919 &feature_mul,
920 &feature_break,
596 &feature_jmpcall,
921597 &feature_lpm,
922 &feature_avr0,
598 &feature_break,
599 &feature_mul,
600 &feature_sram,
601 &feature_ijmpcall,
923602 &feature_movw,
924 &feature_avr5,
925603 },
926604};
927605
......@@ -929,18 +607,16 @@ pub const cpu_at90usb647 = Cpu{
929607 .name = "at90usb647",
930608 .llvm_name = "at90usb647",
931609 .subfeatures = &[_]*const Feature {
932 &feature_spm,
933610 &feature_lpmx,
934 &feature_ijmpcall,
935 &feature_jmpcall,
936 &feature_sram,
611 &feature_spm,
937612 &feature_addsubiw,
938 &feature_mul,
939 &feature_break,
613 &feature_jmpcall,
940614 &feature_lpm,
941 &feature_avr0,
615 &feature_break,
616 &feature_mul,
617 &feature_sram,
618 &feature_ijmpcall,
942619 &feature_movw,
943 &feature_avr5,
944620 },
945621};
946622
......@@ -948,17 +624,15 @@ pub const cpu_at90usb82 = Cpu{
948624 .name = "at90usb82",
949625 .llvm_name = "at90usb82",
950626 .subfeatures = &[_]*const Feature {
951 &feature_spm,
952627 &feature_lpmx,
953 &feature_ijmpcall,
954 &feature_jmpcall,
955 &feature_sram,
628 &feature_spm,
956629 &feature_addsubiw,
957 &feature_break,
630 &feature_jmpcall,
958631 &feature_lpm,
959 &feature_avr0,
632 &feature_break,
633 &feature_sram,
634 &feature_ijmpcall,
960635 &feature_movw,
961 &feature_avr35,
962636 },
963637};
964638
......@@ -966,13 +640,11 @@ pub const cpu_at94k = Cpu{
966640 .name = "at94k",
967641 .llvm_name = "at94k",
968642 .subfeatures = &[_]*const Feature {
969 &feature_ijmpcall,
970 &feature_jmpcall,
971 &feature_sram,
972643 &feature_addsubiw,
644 &feature_jmpcall,
973645 &feature_lpm,
974 &feature_avr0,
975 &feature_avr3,
646 &feature_sram,
647 &feature_ijmpcall,
976648 &feature_lpmx,
977649 &feature_movw,
978650 &feature_mul,
......@@ -983,16 +655,14 @@ pub const cpu_ata5272 = Cpu{
983655 .name = "ata5272",
984656 .llvm_name = "ata5272",
985657 .subfeatures = &[_]*const Feature {
986 &feature_spm,
987658 &feature_lpmx,
988 &feature_ijmpcall,
989 &feature_sram,
659 &feature_spm,
990660 &feature_addsubiw,
991661 &feature_break,
992662 &feature_lpm,
993 &feature_avr0,
663 &feature_sram,
664 &feature_ijmpcall,
994665 &feature_movw,
995 &feature_avr25,
996666 },
997667};
998668
......@@ -1000,17 +670,15 @@ pub const cpu_ata5505 = Cpu{
1000670 .name = "ata5505",
1001671 .llvm_name = "ata5505",
1002672 .subfeatures = &[_]*const Feature {
1003 &feature_spm,
1004673 &feature_lpmx,
1005 &feature_ijmpcall,
1006 &feature_jmpcall,
1007 &feature_sram,
674 &feature_spm,
1008675 &feature_addsubiw,
1009 &feature_break,
676 &feature_jmpcall,
1010677 &feature_lpm,
1011 &feature_avr0,
678 &feature_break,
679 &feature_sram,
680 &feature_ijmpcall,
1012681 &feature_movw,
1013 &feature_avr35,
1014682 },
1015683};
1016684
......@@ -1018,18 +686,16 @@ pub const cpu_ata5790 = Cpu{
1018686 .name = "ata5790",
1019687 .llvm_name = "ata5790",
1020688 .subfeatures = &[_]*const Feature {
1021 &feature_spm,
1022689 &feature_lpmx,
1023 &feature_ijmpcall,
1024 &feature_jmpcall,
1025 &feature_sram,
690 &feature_spm,
1026691 &feature_addsubiw,
1027 &feature_mul,
1028 &feature_break,
692 &feature_jmpcall,
1029693 &feature_lpm,
1030 &feature_avr0,
694 &feature_break,
695 &feature_mul,
696 &feature_sram,
697 &feature_ijmpcall,
1031698 &feature_movw,
1032 &feature_avr5,
1033699 },
1034700};
1035701
......@@ -1037,36 +703,32 @@ pub const cpu_ata5795 = Cpu{
1037703 .name = "ata5795",
1038704 .llvm_name = "ata5795",
1039705 .subfeatures = &[_]*const Feature {
1040 &feature_spm,
1041706 &feature_lpmx,
1042 &feature_ijmpcall,
1043 &feature_jmpcall,
1044 &feature_sram,
707 &feature_spm,
1045708 &feature_addsubiw,
1046 &feature_mul,
1047 &feature_break,
709 &feature_jmpcall,
1048710 &feature_lpm,
1049 &feature_avr0,
1050 &feature_movw,
1051 &feature_avr5,
1052 },
1053};
711 &feature_break,
712 &feature_mul,
713 &feature_sram,
714 &feature_ijmpcall,
715 &feature_movw,
716 },
717};
1054718
1055719pub const cpu_ata6285 = Cpu{
1056720 .name = "ata6285",
1057721 .llvm_name = "ata6285",
1058722 .subfeatures = &[_]*const Feature {
1059 &feature_spm,
1060723 &feature_lpmx,
1061 &feature_ijmpcall,
1062 &feature_sram,
724 &feature_spm,
1063725 &feature_addsubiw,
1064 &feature_mul,
1065726 &feature_break,
1066727 &feature_lpm,
1067 &feature_avr0,
728 &feature_mul,
729 &feature_sram,
730 &feature_ijmpcall,
1068731 &feature_movw,
1069 &feature_avr4,
1070732 },
1071733};
1072734
......@@ -1074,17 +736,15 @@ pub const cpu_ata6286 = Cpu{
1074736 .name = "ata6286",
1075737 .llvm_name = "ata6286",
1076738 .subfeatures = &[_]*const Feature {
1077 &feature_spm,
1078739 &feature_lpmx,
1079 &feature_ijmpcall,
1080 &feature_sram,
740 &feature_spm,
1081741 &feature_addsubiw,
1082 &feature_mul,
1083742 &feature_break,
1084743 &feature_lpm,
1085 &feature_avr0,
744 &feature_mul,
745 &feature_sram,
746 &feature_ijmpcall,
1086747 &feature_movw,
1087 &feature_avr4,
1088748 },
1089749};
1090750
......@@ -1092,17 +752,15 @@ pub const cpu_ata6289 = Cpu{
1092752 .name = "ata6289",
1093753 .llvm_name = "ata6289",
1094754 .subfeatures = &[_]*const Feature {
1095 &feature_spm,
1096755 &feature_lpmx,
1097 &feature_ijmpcall,
1098 &feature_sram,
756 &feature_spm,
1099757 &feature_addsubiw,
1100 &feature_mul,
1101758 &feature_break,
1102759 &feature_lpm,
1103 &feature_avr0,
760 &feature_mul,
761 &feature_sram,
762 &feature_ijmpcall,
1104763 &feature_movw,
1105 &feature_avr4,
1106764 },
1107765};
1108766
......@@ -1110,14 +768,12 @@ pub const cpu_atmega103 = Cpu{
1110768 .name = "atmega103",
1111769 .llvm_name = "atmega103",
1112770 .subfeatures = &[_]*const Feature {
1113 &feature_ijmpcall,
1114 &feature_jmpcall,
1115 &feature_sram,
1116771 &feature_addsubiw,
1117 &feature_elpm,
772 &feature_jmpcall,
1118773 &feature_lpm,
1119 &feature_avr0,
1120 &feature_avr31,
774 &feature_elpm,
775 &feature_sram,
776 &feature_ijmpcall,
1121777 },
1122778};
1123779
......@@ -1125,20 +781,18 @@ pub const cpu_atmega128 = Cpu{
1125781 .name = "atmega128",
1126782 .llvm_name = "atmega128",
1127783 .subfeatures = &[_]*const Feature {
1128 &feature_spm,
1129784 &feature_lpmx,
1130 &feature_ijmpcall,
1131 &feature_jmpcall,
1132 &feature_sram,
785 &feature_spm,
1133786 &feature_addsubiw,
1134 &feature_elpm,
1135 &feature_mul,
1136 &feature_break,
787 &feature_jmpcall,
1137788 &feature_lpm,
789 &feature_break,
790 &feature_mul,
791 &feature_elpm,
1138792 &feature_elpmx,
1139 &feature_avr0,
793 &feature_sram,
794 &feature_ijmpcall,
1140795 &feature_movw,
1141 &feature_avr51,
1142796 },
1143797};
1144798
......@@ -1146,20 +800,18 @@ pub const cpu_atmega1280 = Cpu{
1146800 .name = "atmega1280",
1147801 .llvm_name = "atmega1280",
1148802 .subfeatures = &[_]*const Feature {
1149 &feature_spm,
1150803 &feature_lpmx,
1151 &feature_ijmpcall,
1152 &feature_jmpcall,
1153 &feature_sram,
804 &feature_spm,
1154805 &feature_addsubiw,
1155 &feature_elpm,
1156 &feature_mul,
1157 &feature_break,
806 &feature_jmpcall,
1158807 &feature_lpm,
808 &feature_break,
809 &feature_mul,
810 &feature_elpm,
1159811 &feature_elpmx,
1160 &feature_avr0,
812 &feature_sram,
813 &feature_ijmpcall,
1161814 &feature_movw,
1162 &feature_avr51,
1163815 },
1164816};
1165817
......@@ -1167,20 +819,18 @@ pub const cpu_atmega1281 = Cpu{
1167819 .name = "atmega1281",
1168820 .llvm_name = "atmega1281",
1169821 .subfeatures = &[_]*const Feature {
1170 &feature_spm,
1171822 &feature_lpmx,
1172 &feature_ijmpcall,
1173 &feature_jmpcall,
1174 &feature_sram,
823 &feature_spm,
1175824 &feature_addsubiw,
1176 &feature_elpm,
1177 &feature_mul,
1178 &feature_break,
825 &feature_jmpcall,
1179826 &feature_lpm,
827 &feature_break,
828 &feature_mul,
829 &feature_elpm,
1180830 &feature_elpmx,
1181 &feature_avr0,
831 &feature_sram,
832 &feature_ijmpcall,
1182833 &feature_movw,
1183 &feature_avr51,
1184834 },
1185835};
1186836
......@@ -1188,20 +838,18 @@ pub const cpu_atmega1284 = Cpu{
1188838 .name = "atmega1284",
1189839 .llvm_name = "atmega1284",
1190840 .subfeatures = &[_]*const Feature {
1191 &feature_spm,
1192841 &feature_lpmx,
1193 &feature_ijmpcall,
1194 &feature_jmpcall,
1195 &feature_sram,
842 &feature_spm,
1196843 &feature_addsubiw,
1197 &feature_elpm,
1198 &feature_mul,
1199 &feature_break,
844 &feature_jmpcall,
1200845 &feature_lpm,
846 &feature_break,
847 &feature_mul,
848 &feature_elpm,
1201849 &feature_elpmx,
1202 &feature_avr0,
850 &feature_sram,
851 &feature_ijmpcall,
1203852 &feature_movw,
1204 &feature_avr51,
1205853 },
1206854};
1207855
......@@ -1209,20 +857,18 @@ pub const cpu_atmega1284p = Cpu{
1209857 .name = "atmega1284p",
1210858 .llvm_name = "atmega1284p",
1211859 .subfeatures = &[_]*const Feature {
1212 &feature_spm,
1213860 &feature_lpmx,
1214 &feature_ijmpcall,
1215 &feature_jmpcall,
1216 &feature_sram,
861 &feature_spm,
1217862 &feature_addsubiw,
1218 &feature_elpm,
1219 &feature_mul,
1220 &feature_break,
863 &feature_jmpcall,
1221864 &feature_lpm,
865 &feature_break,
866 &feature_mul,
867 &feature_elpm,
1222868 &feature_elpmx,
1223 &feature_avr0,
869 &feature_sram,
870 &feature_ijmpcall,
1224871 &feature_movw,
1225 &feature_avr51,
1226872 },
1227873};
1228874
......@@ -1230,20 +876,18 @@ pub const cpu_atmega1284rfr2 = Cpu{
1230876 .name = "atmega1284rfr2",
1231877 .llvm_name = "atmega1284rfr2",
1232878 .subfeatures = &[_]*const Feature {
1233 &feature_spm,
1234879 &feature_lpmx,
1235 &feature_ijmpcall,
1236 &feature_jmpcall,
1237 &feature_sram,
880 &feature_spm,
1238881 &feature_addsubiw,
1239 &feature_elpm,
1240 &feature_mul,
1241 &feature_break,
882 &feature_jmpcall,
1242883 &feature_lpm,
884 &feature_break,
885 &feature_mul,
886 &feature_elpm,
1243887 &feature_elpmx,
1244 &feature_avr0,
888 &feature_sram,
889 &feature_ijmpcall,
1245890 &feature_movw,
1246 &feature_avr51,
1247891 },
1248892};
1249893
......@@ -1251,20 +895,18 @@ pub const cpu_atmega128a = Cpu{
1251895 .name = "atmega128a",
1252896 .llvm_name = "atmega128a",
1253897 .subfeatures = &[_]*const Feature {
1254 &feature_spm,
1255898 &feature_lpmx,
1256 &feature_ijmpcall,
1257 &feature_jmpcall,
1258 &feature_sram,
899 &feature_spm,
1259900 &feature_addsubiw,
1260 &feature_elpm,
1261 &feature_mul,
1262 &feature_break,
901 &feature_jmpcall,
1263902 &feature_lpm,
903 &feature_break,
904 &feature_mul,
905 &feature_elpm,
1264906 &feature_elpmx,
1265 &feature_avr0,
907 &feature_sram,
908 &feature_ijmpcall,
1266909 &feature_movw,
1267 &feature_avr51,
1268910 },
1269911};
1270912
......@@ -1272,20 +914,18 @@ pub const cpu_atmega128rfa1 = Cpu{
1272914 .name = "atmega128rfa1",
1273915 .llvm_name = "atmega128rfa1",
1274916 .subfeatures = &[_]*const Feature {
1275 &feature_spm,
1276917 &feature_lpmx,
1277 &feature_ijmpcall,
1278 &feature_jmpcall,
1279 &feature_sram,
918 &feature_spm,
1280919 &feature_addsubiw,
1281 &feature_elpm,
1282 &feature_mul,
1283 &feature_break,
920 &feature_jmpcall,
1284921 &feature_lpm,
922 &feature_break,
923 &feature_mul,
924 &feature_elpm,
1285925 &feature_elpmx,
1286 &feature_avr0,
926 &feature_sram,
927 &feature_ijmpcall,
1287928 &feature_movw,
1288 &feature_avr51,
1289929 },
1290930};
1291931
......@@ -1293,20 +933,18 @@ pub const cpu_atmega128rfr2 = Cpu{
1293933 .name = "atmega128rfr2",
1294934 .llvm_name = "atmega128rfr2",
1295935 .subfeatures = &[_]*const Feature {
1296 &feature_spm,
1297936 &feature_lpmx,
1298 &feature_ijmpcall,
1299 &feature_jmpcall,
1300 &feature_sram,
937 &feature_spm,
1301938 &feature_addsubiw,
1302 &feature_elpm,
1303 &feature_mul,
1304 &feature_break,
939 &feature_jmpcall,
1305940 &feature_lpm,
941 &feature_break,
942 &feature_mul,
943 &feature_elpm,
1306944 &feature_elpmx,
1307 &feature_avr0,
945 &feature_sram,
946 &feature_ijmpcall,
1308947 &feature_movw,
1309 &feature_avr51,
1310948 },
1311949};
1312950
......@@ -1314,18 +952,16 @@ pub const cpu_atmega16 = Cpu{
1314952 .name = "atmega16",
1315953 .llvm_name = "atmega16",
1316954 .subfeatures = &[_]*const Feature {
1317 &feature_spm,
1318955 &feature_lpmx,
1319 &feature_ijmpcall,
1320 &feature_jmpcall,
1321 &feature_sram,
956 &feature_spm,
1322957 &feature_addsubiw,
1323 &feature_mul,
1324 &feature_break,
958 &feature_jmpcall,
1325959 &feature_lpm,
1326 &feature_avr0,
960 &feature_break,
961 &feature_mul,
962 &feature_sram,
963 &feature_ijmpcall,
1327964 &feature_movw,
1328 &feature_avr5,
1329965 },
1330966};
1331967
......@@ -1333,13 +969,11 @@ pub const cpu_atmega161 = Cpu{
1333969 .name = "atmega161",
1334970 .llvm_name = "atmega161",
1335971 .subfeatures = &[_]*const Feature {
1336 &feature_ijmpcall,
1337 &feature_jmpcall,
1338 &feature_sram,
1339972 &feature_addsubiw,
973 &feature_jmpcall,
1340974 &feature_lpm,
1341 &feature_avr0,
1342 &feature_avr3,
975 &feature_sram,
976 &feature_ijmpcall,
1343977 &feature_lpmx,
1344978 &feature_movw,
1345979 &feature_mul,
......@@ -1351,18 +985,16 @@ pub const cpu_atmega162 = Cpu{
1351985 .name = "atmega162",
1352986 .llvm_name = "atmega162",
1353987 .subfeatures = &[_]*const Feature {
1354 &feature_spm,
1355988 &feature_lpmx,
1356 &feature_ijmpcall,
1357 &feature_jmpcall,
1358 &feature_sram,
989 &feature_spm,
1359990 &feature_addsubiw,
1360 &feature_mul,
1361 &feature_break,
991 &feature_jmpcall,
1362992 &feature_lpm,
1363 &feature_avr0,
993 &feature_break,
994 &feature_mul,
995 &feature_sram,
996 &feature_ijmpcall,
1364997 &feature_movw,
1365 &feature_avr5,
1366998 },
1367999};
13681000
......@@ -1370,13 +1002,11 @@ pub const cpu_atmega163 = Cpu{
13701002 .name = "atmega163",
13711003 .llvm_name = "atmega163",
13721004 .subfeatures = &[_]*const Feature {
1373 &feature_ijmpcall,
1374 &feature_jmpcall,
1375 &feature_sram,
13761005 &feature_addsubiw,
1006 &feature_jmpcall,
13771007 &feature_lpm,
1378 &feature_avr0,
1379 &feature_avr3,
1008 &feature_sram,
1009 &feature_ijmpcall,
13801010 &feature_lpmx,
13811011 &feature_movw,
13821012 &feature_mul,
......@@ -1388,18 +1018,16 @@ pub const cpu_atmega164a = Cpu{
13881018 .name = "atmega164a",
13891019 .llvm_name = "atmega164a",
13901020 .subfeatures = &[_]*const Feature {
1391 &feature_spm,
13921021 &feature_lpmx,
1393 &feature_ijmpcall,
1394 &feature_jmpcall,
1395 &feature_sram,
1022 &feature_spm,
13961023 &feature_addsubiw,
1397 &feature_mul,
1398 &feature_break,
1024 &feature_jmpcall,
13991025 &feature_lpm,
1400 &feature_avr0,
1026 &feature_break,
1027 &feature_mul,
1028 &feature_sram,
1029 &feature_ijmpcall,
14011030 &feature_movw,
1402 &feature_avr5,
14031031 },
14041032};
14051033
......@@ -1407,18 +1035,16 @@ pub const cpu_atmega164p = Cpu{
14071035 .name = "atmega164p",
14081036 .llvm_name = "atmega164p",
14091037 .subfeatures = &[_]*const Feature {
1410 &feature_spm,
14111038 &feature_lpmx,
1412 &feature_ijmpcall,
1413 &feature_jmpcall,
1414 &feature_sram,
1039 &feature_spm,
14151040 &feature_addsubiw,
1416 &feature_mul,
1417 &feature_break,
1041 &feature_jmpcall,
14181042 &feature_lpm,
1419 &feature_avr0,
1043 &feature_break,
1044 &feature_mul,
1045 &feature_sram,
1046 &feature_ijmpcall,
14201047 &feature_movw,
1421 &feature_avr5,
14221048 },
14231049};
14241050
......@@ -1426,18 +1052,16 @@ pub const cpu_atmega164pa = Cpu{
14261052 .name = "atmega164pa",
14271053 .llvm_name = "atmega164pa",
14281054 .subfeatures = &[_]*const Feature {
1429 &feature_spm,
14301055 &feature_lpmx,
1431 &feature_ijmpcall,
1432 &feature_jmpcall,
1433 &feature_sram,
1056 &feature_spm,
14341057 &feature_addsubiw,
1435 &feature_mul,
1436 &feature_break,
1058 &feature_jmpcall,
14371059 &feature_lpm,
1438 &feature_avr0,
1060 &feature_break,
1061 &feature_mul,
1062 &feature_sram,
1063 &feature_ijmpcall,
14391064 &feature_movw,
1440 &feature_avr5,
14411065 },
14421066};
14431067
......@@ -1445,18 +1069,16 @@ pub const cpu_atmega165 = Cpu{
14451069 .name = "atmega165",
14461070 .llvm_name = "atmega165",
14471071 .subfeatures = &[_]*const Feature {
1448 &feature_spm,
14491072 &feature_lpmx,
1450 &feature_ijmpcall,
1451 &feature_jmpcall,
1452 &feature_sram,
1073 &feature_spm,
14531074 &feature_addsubiw,
1454 &feature_mul,
1455 &feature_break,
1075 &feature_jmpcall,
14561076 &feature_lpm,
1457 &feature_avr0,
1077 &feature_break,
1078 &feature_mul,
1079 &feature_sram,
1080 &feature_ijmpcall,
14581081 &feature_movw,
1459 &feature_avr5,
14601082 },
14611083};
14621084
......@@ -1464,18 +1086,16 @@ pub const cpu_atmega165a = Cpu{
14641086 .name = "atmega165a",
14651087 .llvm_name = "atmega165a",
14661088 .subfeatures = &[_]*const Feature {
1467 &feature_spm,
14681089 &feature_lpmx,
1469 &feature_ijmpcall,
1090 &feature_spm,
1091 &feature_addsubiw,
14701092 &feature_jmpcall,
1093 &feature_lpm,
1094 &feature_break,
1095 &feature_mul,
14711096 &feature_sram,
1472 &feature_addsubiw,
1473 &feature_mul,
1474 &feature_break,
1475 &feature_lpm,
1476 &feature_avr0,
1097 &feature_ijmpcall,
14771098 &feature_movw,
1478 &feature_avr5,
14791099 },
14801100};
14811101
......@@ -1483,18 +1103,16 @@ pub const cpu_atmega165p = Cpu{
14831103 .name = "atmega165p",
14841104 .llvm_name = "atmega165p",
14851105 .subfeatures = &[_]*const Feature {
1486 &feature_spm,
14871106 &feature_lpmx,
1488 &feature_ijmpcall,
1489 &feature_jmpcall,
1490 &feature_sram,
1107 &feature_spm,
14911108 &feature_addsubiw,
1492 &feature_mul,
1493 &feature_break,
1109 &feature_jmpcall,
14941110 &feature_lpm,
1495 &feature_avr0,
1111 &feature_break,
1112 &feature_mul,
1113 &feature_sram,
1114 &feature_ijmpcall,
14961115 &feature_movw,
1497 &feature_avr5,
14981116 },
14991117};
15001118
......@@ -1502,18 +1120,16 @@ pub const cpu_atmega165pa = Cpu{
15021120 .name = "atmega165pa",
15031121 .llvm_name = "atmega165pa",
15041122 .subfeatures = &[_]*const Feature {
1505 &feature_spm,
15061123 &feature_lpmx,
1507 &feature_ijmpcall,
1508 &feature_jmpcall,
1509 &feature_sram,
1124 &feature_spm,
15101125 &feature_addsubiw,
1511 &feature_mul,
1512 &feature_break,
1126 &feature_jmpcall,
15131127 &feature_lpm,
1514 &feature_avr0,
1128 &feature_break,
1129 &feature_mul,
1130 &feature_sram,
1131 &feature_ijmpcall,
15151132 &feature_movw,
1516 &feature_avr5,
15171133 },
15181134};
15191135
......@@ -1521,18 +1137,16 @@ pub const cpu_atmega168 = Cpu{
15211137 .name = "atmega168",
15221138 .llvm_name = "atmega168",
15231139 .subfeatures = &[_]*const Feature {
1524 &feature_spm,
15251140 &feature_lpmx,
1526 &feature_ijmpcall,
1527 &feature_jmpcall,
1528 &feature_sram,
1141 &feature_spm,
15291142 &feature_addsubiw,
1530 &feature_mul,
1531 &feature_break,
1143 &feature_jmpcall,
15321144 &feature_lpm,
1533 &feature_avr0,
1145 &feature_break,
1146 &feature_mul,
1147 &feature_sram,
1148 &feature_ijmpcall,
15341149 &feature_movw,
1535 &feature_avr5,
15361150 },
15371151};
15381152
......@@ -1540,18 +1154,16 @@ pub const cpu_atmega168a = Cpu{
15401154 .name = "atmega168a",
15411155 .llvm_name = "atmega168a",
15421156 .subfeatures = &[_]*const Feature {
1543 &feature_spm,
15441157 &feature_lpmx,
1545 &feature_ijmpcall,
1546 &feature_jmpcall,
1547 &feature_sram,
1158 &feature_spm,
15481159 &feature_addsubiw,
1549 &feature_mul,
1550 &feature_break,
1160 &feature_jmpcall,
15511161 &feature_lpm,
1552 &feature_avr0,
1162 &feature_break,
1163 &feature_mul,
1164 &feature_sram,
1165 &feature_ijmpcall,
15531166 &feature_movw,
1554 &feature_avr5,
15551167 },
15561168};
15571169
......@@ -1559,18 +1171,16 @@ pub const cpu_atmega168p = Cpu{
15591171 .name = "atmega168p",
15601172 .llvm_name = "atmega168p",
15611173 .subfeatures = &[_]*const Feature {
1562 &feature_spm,
15631174 &feature_lpmx,
1564 &feature_ijmpcall,
1565 &feature_jmpcall,
1566 &feature_sram,
1175 &feature_spm,
15671176 &feature_addsubiw,
1568 &feature_mul,
1569 &feature_break,
1177 &feature_jmpcall,
15701178 &feature_lpm,
1571 &feature_avr0,
1179 &feature_break,
1180 &feature_mul,
1181 &feature_sram,
1182 &feature_ijmpcall,
15721183 &feature_movw,
1573 &feature_avr5,
15741184 },
15751185};
15761186
......@@ -1578,18 +1188,16 @@ pub const cpu_atmega168pa = Cpu{
15781188 .name = "atmega168pa",
15791189 .llvm_name = "atmega168pa",
15801190 .subfeatures = &[_]*const Feature {
1581 &feature_spm,
15821191 &feature_lpmx,
1583 &feature_ijmpcall,
1584 &feature_jmpcall,
1585 &feature_sram,
1192 &feature_spm,
15861193 &feature_addsubiw,
1587 &feature_mul,
1588 &feature_break,
1194 &feature_jmpcall,
15891195 &feature_lpm,
1590 &feature_avr0,
1196 &feature_break,
1197 &feature_mul,
1198 &feature_sram,
1199 &feature_ijmpcall,
15911200 &feature_movw,
1592 &feature_avr5,
15931201 },
15941202};
15951203
......@@ -1597,18 +1205,16 @@ pub const cpu_atmega169 = Cpu{
15971205 .name = "atmega169",
15981206 .llvm_name = "atmega169",
15991207 .subfeatures = &[_]*const Feature {
1600 &feature_spm,
16011208 &feature_lpmx,
1602 &feature_ijmpcall,
1603 &feature_jmpcall,
1604 &feature_sram,
1209 &feature_spm,
16051210 &feature_addsubiw,
1606 &feature_mul,
1607 &feature_break,
1211 &feature_jmpcall,
16081212 &feature_lpm,
1609 &feature_avr0,
1213 &feature_break,
1214 &feature_mul,
1215 &feature_sram,
1216 &feature_ijmpcall,
16101217 &feature_movw,
1611 &feature_avr5,
16121218 },
16131219};
16141220
......@@ -1616,18 +1222,16 @@ pub const cpu_atmega169a = Cpu{
16161222 .name = "atmega169a",
16171223 .llvm_name = "atmega169a",
16181224 .subfeatures = &[_]*const Feature {
1619 &feature_spm,
16201225 &feature_lpmx,
1621 &feature_ijmpcall,
1622 &feature_jmpcall,
1623 &feature_sram,
1226 &feature_spm,
16241227 &feature_addsubiw,
1625 &feature_mul,
1626 &feature_break,
1228 &feature_jmpcall,
16271229 &feature_lpm,
1628 &feature_avr0,
1230 &feature_break,
1231 &feature_mul,
1232 &feature_sram,
1233 &feature_ijmpcall,
16291234 &feature_movw,
1630 &feature_avr5,
16311235 },
16321236};
16331237
......@@ -1635,18 +1239,16 @@ pub const cpu_atmega169p = Cpu{
16351239 .name = "atmega169p",
16361240 .llvm_name = "atmega169p",
16371241 .subfeatures = &[_]*const Feature {
1638 &feature_spm,
16391242 &feature_lpmx,
1640 &feature_ijmpcall,
1641 &feature_jmpcall,
1642 &feature_sram,
1243 &feature_spm,
16431244 &feature_addsubiw,
1644 &feature_mul,
1645 &feature_break,
1245 &feature_jmpcall,
16461246 &feature_lpm,
1647 &feature_avr0,
1247 &feature_break,
1248 &feature_mul,
1249 &feature_sram,
1250 &feature_ijmpcall,
16481251 &feature_movw,
1649 &feature_avr5,
16501252 },
16511253};
16521254
......@@ -1654,18 +1256,16 @@ pub const cpu_atmega169pa = Cpu{
16541256 .name = "atmega169pa",
16551257 .llvm_name = "atmega169pa",
16561258 .subfeatures = &[_]*const Feature {
1657 &feature_spm,
16581259 &feature_lpmx,
1659 &feature_ijmpcall,
1660 &feature_jmpcall,
1661 &feature_sram,
1260 &feature_spm,
16621261 &feature_addsubiw,
1663 &feature_mul,
1664 &feature_break,
1262 &feature_jmpcall,
16651263 &feature_lpm,
1666 &feature_avr0,
1264 &feature_break,
1265 &feature_mul,
1266 &feature_sram,
1267 &feature_ijmpcall,
16671268 &feature_movw,
1668 &feature_avr5,
16691269 },
16701270};
16711271
......@@ -1673,18 +1273,16 @@ pub const cpu_atmega16a = Cpu{
16731273 .name = "atmega16a",
16741274 .llvm_name = "atmega16a",
16751275 .subfeatures = &[_]*const Feature {
1676 &feature_spm,
16771276 &feature_lpmx,
1678 &feature_ijmpcall,
1679 &feature_jmpcall,
1680 &feature_sram,
1277 &feature_spm,
16811278 &feature_addsubiw,
1682 &feature_mul,
1683 &feature_break,
1279 &feature_jmpcall,
16841280 &feature_lpm,
1685 &feature_avr0,
1281 &feature_break,
1282 &feature_mul,
1283 &feature_sram,
1284 &feature_ijmpcall,
16861285 &feature_movw,
1687 &feature_avr5,
16881286 },
16891287};
16901288
......@@ -1692,18 +1290,16 @@ pub const cpu_atmega16hva = Cpu{
16921290 .name = "atmega16hva",
16931291 .llvm_name = "atmega16hva",
16941292 .subfeatures = &[_]*const Feature {
1695 &feature_spm,
16961293 &feature_lpmx,
1697 &feature_ijmpcall,
1698 &feature_jmpcall,
1699 &feature_sram,
1294 &feature_spm,
17001295 &feature_addsubiw,
1701 &feature_mul,
1702 &feature_break,
1296 &feature_jmpcall,
17031297 &feature_lpm,
1704 &feature_avr0,
1298 &feature_break,
1299 &feature_mul,
1300 &feature_sram,
1301 &feature_ijmpcall,
17051302 &feature_movw,
1706 &feature_avr5,
17071303 },
17081304};
17091305
......@@ -1711,18 +1307,16 @@ pub const cpu_atmega16hva2 = Cpu{
17111307 .name = "atmega16hva2",
17121308 .llvm_name = "atmega16hva2",
17131309 .subfeatures = &[_]*const Feature {
1714 &feature_spm,
17151310 &feature_lpmx,
1716 &feature_ijmpcall,
1717 &feature_jmpcall,
1718 &feature_sram,
1311 &feature_spm,
17191312 &feature_addsubiw,
1720 &feature_mul,
1721 &feature_break,
1313 &feature_jmpcall,
17221314 &feature_lpm,
1723 &feature_avr0,
1315 &feature_break,
1316 &feature_mul,
1317 &feature_sram,
1318 &feature_ijmpcall,
17241319 &feature_movw,
1725 &feature_avr5,
17261320 },
17271321};
17281322
......@@ -1730,18 +1324,16 @@ pub const cpu_atmega16hvb = Cpu{
17301324 .name = "atmega16hvb",
17311325 .llvm_name = "atmega16hvb",
17321326 .subfeatures = &[_]*const Feature {
1733 &feature_spm,
17341327 &feature_lpmx,
1735 &feature_ijmpcall,
1736 &feature_jmpcall,
1737 &feature_sram,
1328 &feature_spm,
17381329 &feature_addsubiw,
1739 &feature_mul,
1740 &feature_break,
1330 &feature_jmpcall,
17411331 &feature_lpm,
1742 &feature_avr0,
1332 &feature_break,
1333 &feature_mul,
1334 &feature_sram,
1335 &feature_ijmpcall,
17431336 &feature_movw,
1744 &feature_avr5,
17451337 },
17461338};
17471339
......@@ -1749,18 +1341,16 @@ pub const cpu_atmega16hvbrevb = Cpu{
17491341 .name = "atmega16hvbrevb",
17501342 .llvm_name = "atmega16hvbrevb",
17511343 .subfeatures = &[_]*const Feature {
1752 &feature_spm,
17531344 &feature_lpmx,
1754 &feature_ijmpcall,
1755 &feature_jmpcall,
1756 &feature_sram,
1345 &feature_spm,
17571346 &feature_addsubiw,
1758 &feature_mul,
1759 &feature_break,
1347 &feature_jmpcall,
17601348 &feature_lpm,
1761 &feature_avr0,
1349 &feature_break,
1350 &feature_mul,
1351 &feature_sram,
1352 &feature_ijmpcall,
17621353 &feature_movw,
1763 &feature_avr5,
17641354 },
17651355};
17661356
......@@ -1768,18 +1358,16 @@ pub const cpu_atmega16m1 = Cpu{
17681358 .name = "atmega16m1",
17691359 .llvm_name = "atmega16m1",
17701360 .subfeatures = &[_]*const Feature {
1771 &feature_spm,
17721361 &feature_lpmx,
1773 &feature_ijmpcall,
1774 &feature_jmpcall,
1775 &feature_sram,
1362 &feature_spm,
17761363 &feature_addsubiw,
1777 &feature_mul,
1778 &feature_break,
1364 &feature_jmpcall,
17791365 &feature_lpm,
1780 &feature_avr0,
1366 &feature_break,
1367 &feature_mul,
1368 &feature_sram,
1369 &feature_ijmpcall,
17811370 &feature_movw,
1782 &feature_avr5,
17831371 },
17841372};
17851373
......@@ -1787,17 +1375,15 @@ pub const cpu_atmega16u2 = Cpu{
17871375 .name = "atmega16u2",
17881376 .llvm_name = "atmega16u2",
17891377 .subfeatures = &[_]*const Feature {
1790 &feature_spm,
17911378 &feature_lpmx,
1792 &feature_ijmpcall,
1793 &feature_jmpcall,
1794 &feature_sram,
1379 &feature_spm,
17951380 &feature_addsubiw,
1796 &feature_break,
1381 &feature_jmpcall,
17971382 &feature_lpm,
1798 &feature_avr0,
1383 &feature_break,
1384 &feature_sram,
1385 &feature_ijmpcall,
17991386 &feature_movw,
1800 &feature_avr35,
18011387 },
18021388};
18031389
......@@ -1805,18 +1391,16 @@ pub const cpu_atmega16u4 = Cpu{
18051391 .name = "atmega16u4",
18061392 .llvm_name = "atmega16u4",
18071393 .subfeatures = &[_]*const Feature {
1808 &feature_spm,
18091394 &feature_lpmx,
1810 &feature_ijmpcall,
1811 &feature_jmpcall,
1812 &feature_sram,
1395 &feature_spm,
18131396 &feature_addsubiw,
1814 &feature_mul,
1815 &feature_break,
1397 &feature_jmpcall,
18161398 &feature_lpm,
1817 &feature_avr0,
1399 &feature_break,
1400 &feature_mul,
1401 &feature_sram,
1402 &feature_ijmpcall,
18181403 &feature_movw,
1819 &feature_avr5,
18201404 },
18211405};
18221406
......@@ -1824,20 +1408,18 @@ pub const cpu_atmega2560 = Cpu{
18241408 .name = "atmega2560",
18251409 .llvm_name = "atmega2560",
18261410 .subfeatures = &[_]*const Feature {
1827 &feature_spm,
18281411 &feature_lpmx,
1829 &feature_ijmpcall,
1830 &feature_jmpcall,
1831 &feature_sram,
1412 &feature_spm,
18321413 &feature_addsubiw,
1833 &feature_elpm,
1834 &feature_mul,
1835 &feature_break,
1414 &feature_jmpcall,
18361415 &feature_lpm,
1416 &feature_break,
1417 &feature_mul,
1418 &feature_elpm,
18371419 &feature_elpmx,
1838 &feature_avr0,
1420 &feature_sram,
1421 &feature_ijmpcall,
18391422 &feature_movw,
1840 &feature_avr6,
18411423 },
18421424};
18431425
......@@ -1845,20 +1427,18 @@ pub const cpu_atmega2561 = Cpu{
18451427 .name = "atmega2561",
18461428 .llvm_name = "atmega2561",
18471429 .subfeatures = &[_]*const Feature {
1848 &feature_spm,
18491430 &feature_lpmx,
1850 &feature_ijmpcall,
1851 &feature_jmpcall,
1852 &feature_sram,
1431 &feature_spm,
18531432 &feature_addsubiw,
1854 &feature_elpm,
1855 &feature_mul,
1856 &feature_break,
1433 &feature_jmpcall,
18571434 &feature_lpm,
1435 &feature_break,
1436 &feature_mul,
1437 &feature_elpm,
18581438 &feature_elpmx,
1859 &feature_avr0,
1439 &feature_sram,
1440 &feature_ijmpcall,
18601441 &feature_movw,
1861 &feature_avr6,
18621442 },
18631443};
18641444
......@@ -1866,20 +1446,18 @@ pub const cpu_atmega2564rfr2 = Cpu{
18661446 .name = "atmega2564rfr2",
18671447 .llvm_name = "atmega2564rfr2",
18681448 .subfeatures = &[_]*const Feature {
1869 &feature_spm,
18701449 &feature_lpmx,
1871 &feature_ijmpcall,
1872 &feature_jmpcall,
1873 &feature_sram,
1450 &feature_spm,
18741451 &feature_addsubiw,
1875 &feature_elpm,
1876 &feature_mul,
1877 &feature_break,
1452 &feature_jmpcall,
18781453 &feature_lpm,
1454 &feature_break,
1455 &feature_mul,
1456 &feature_elpm,
18791457 &feature_elpmx,
1880 &feature_avr0,
1458 &feature_sram,
1459 &feature_ijmpcall,
18811460 &feature_movw,
1882 &feature_avr6,
18831461 },
18841462};
18851463
......@@ -1887,20 +1465,18 @@ pub const cpu_atmega256rfr2 = Cpu{
18871465 .name = "atmega256rfr2",
18881466 .llvm_name = "atmega256rfr2",
18891467 .subfeatures = &[_]*const Feature {
1890 &feature_spm,
18911468 &feature_lpmx,
1892 &feature_ijmpcall,
1893 &feature_jmpcall,
1894 &feature_sram,
1469 &feature_spm,
18951470 &feature_addsubiw,
1896 &feature_elpm,
1897 &feature_mul,
1898 &feature_break,
1471 &feature_jmpcall,
18991472 &feature_lpm,
1473 &feature_break,
1474 &feature_mul,
1475 &feature_elpm,
19001476 &feature_elpmx,
1901 &feature_avr0,
1477 &feature_sram,
1478 &feature_ijmpcall,
19021479 &feature_movw,
1903 &feature_avr6,
19041480 },
19051481};
19061482
......@@ -1908,18 +1484,16 @@ pub const cpu_atmega32 = Cpu{
19081484 .name = "atmega32",
19091485 .llvm_name = "atmega32",
19101486 .subfeatures = &[_]*const Feature {
1911 &feature_spm,
19121487 &feature_lpmx,
1913 &feature_ijmpcall,
1914 &feature_jmpcall,
1915 &feature_sram,
1488 &feature_spm,
19161489 &feature_addsubiw,
1917 &feature_mul,
1918 &feature_break,
1490 &feature_jmpcall,
19191491 &feature_lpm,
1920 &feature_avr0,
1492 &feature_break,
1493 &feature_mul,
1494 &feature_sram,
1495 &feature_ijmpcall,
19211496 &feature_movw,
1922 &feature_avr5,
19231497 },
19241498};
19251499
......@@ -1927,18 +1501,16 @@ pub const cpu_atmega323 = Cpu{
19271501 .name = "atmega323",
19281502 .llvm_name = "atmega323",
19291503 .subfeatures = &[_]*const Feature {
1930 &feature_spm,
19311504 &feature_lpmx,
1932 &feature_ijmpcall,
1933 &feature_jmpcall,
1934 &feature_sram,
1505 &feature_spm,
19351506 &feature_addsubiw,
1936 &feature_mul,
1937 &feature_break,
1507 &feature_jmpcall,
19381508 &feature_lpm,
1939 &feature_avr0,
1509 &feature_break,
1510 &feature_mul,
1511 &feature_sram,
1512 &feature_ijmpcall,
19401513 &feature_movw,
1941 &feature_avr5,
19421514 },
19431515};
19441516
......@@ -1946,18 +1518,16 @@ pub const cpu_atmega324a = Cpu{
19461518 .name = "atmega324a",
19471519 .llvm_name = "atmega324a",
19481520 .subfeatures = &[_]*const Feature {
1949 &feature_spm,
19501521 &feature_lpmx,
1951 &feature_ijmpcall,
1952 &feature_jmpcall,
1953 &feature_sram,
1522 &feature_spm,
19541523 &feature_addsubiw,
1955 &feature_mul,
1956 &feature_break,
1524 &feature_jmpcall,
19571525 &feature_lpm,
1958 &feature_avr0,
1526 &feature_break,
1527 &feature_mul,
1528 &feature_sram,
1529 &feature_ijmpcall,
19591530 &feature_movw,
1960 &feature_avr5,
19611531 },
19621532};
19631533
......@@ -1965,18 +1535,16 @@ pub const cpu_atmega324p = Cpu{
19651535 .name = "atmega324p",
19661536 .llvm_name = "atmega324p",
19671537 .subfeatures = &[_]*const Feature {
1968 &feature_spm,
19691538 &feature_lpmx,
1970 &feature_ijmpcall,
1971 &feature_jmpcall,
1972 &feature_sram,
1539 &feature_spm,
19731540 &feature_addsubiw,
1974 &feature_mul,
1975 &feature_break,
1541 &feature_jmpcall,
19761542 &feature_lpm,
1977 &feature_avr0,
1543 &feature_break,
1544 &feature_mul,
1545 &feature_sram,
1546 &feature_ijmpcall,
19781547 &feature_movw,
1979 &feature_avr5,
19801548 },
19811549};
19821550
......@@ -1984,18 +1552,16 @@ pub const cpu_atmega324pa = Cpu{
19841552 .name = "atmega324pa",
19851553 .llvm_name = "atmega324pa",
19861554 .subfeatures = &[_]*const Feature {
1987 &feature_spm,
19881555 &feature_lpmx,
1989 &feature_ijmpcall,
1990 &feature_jmpcall,
1991 &feature_sram,
1556 &feature_spm,
19921557 &feature_addsubiw,
1993 &feature_mul,
1994 &feature_break,
1558 &feature_jmpcall,
19951559 &feature_lpm,
1996 &feature_avr0,
1560 &feature_break,
1561 &feature_mul,
1562 &feature_sram,
1563 &feature_ijmpcall,
19971564 &feature_movw,
1998 &feature_avr5,
19991565 },
20001566};
20011567
......@@ -2003,18 +1569,16 @@ pub const cpu_atmega325 = Cpu{
20031569 .name = "atmega325",
20041570 .llvm_name = "atmega325",
20051571 .subfeatures = &[_]*const Feature {
2006 &feature_spm,
20071572 &feature_lpmx,
2008 &feature_ijmpcall,
2009 &feature_jmpcall,
2010 &feature_sram,
1573 &feature_spm,
20111574 &feature_addsubiw,
2012 &feature_mul,
2013 &feature_break,
1575 &feature_jmpcall,
20141576 &feature_lpm,
2015 &feature_avr0,
1577 &feature_break,
1578 &feature_mul,
1579 &feature_sram,
1580 &feature_ijmpcall,
20161581 &feature_movw,
2017 &feature_avr5,
20181582 },
20191583};
20201584
......@@ -2022,18 +1586,16 @@ pub const cpu_atmega3250 = Cpu{
20221586 .name = "atmega3250",
20231587 .llvm_name = "atmega3250",
20241588 .subfeatures = &[_]*const Feature {
2025 &feature_spm,
20261589 &feature_lpmx,
2027 &feature_ijmpcall,
2028 &feature_jmpcall,
2029 &feature_sram,
1590 &feature_spm,
20301591 &feature_addsubiw,
2031 &feature_mul,
2032 &feature_break,
1592 &feature_jmpcall,
20331593 &feature_lpm,
2034 &feature_avr0,
1594 &feature_break,
1595 &feature_mul,
1596 &feature_sram,
1597 &feature_ijmpcall,
20351598 &feature_movw,
2036 &feature_avr5,
20371599 },
20381600};
20391601
......@@ -2041,18 +1603,16 @@ pub const cpu_atmega3250a = Cpu{
20411603 .name = "atmega3250a",
20421604 .llvm_name = "atmega3250a",
20431605 .subfeatures = &[_]*const Feature {
2044 &feature_spm,
20451606 &feature_lpmx,
2046 &feature_ijmpcall,
2047 &feature_jmpcall,
2048 &feature_sram,
1607 &feature_spm,
20491608 &feature_addsubiw,
2050 &feature_mul,
2051 &feature_break,
1609 &feature_jmpcall,
20521610 &feature_lpm,
2053 &feature_avr0,
1611 &feature_break,
1612 &feature_mul,
1613 &feature_sram,
1614 &feature_ijmpcall,
20541615 &feature_movw,
2055 &feature_avr5,
20561616 },
20571617};
20581618
......@@ -2060,18 +1620,16 @@ pub const cpu_atmega3250p = Cpu{
20601620 .name = "atmega3250p",
20611621 .llvm_name = "atmega3250p",
20621622 .subfeatures = &[_]*const Feature {
2063 &feature_spm,
20641623 &feature_lpmx,
2065 &feature_ijmpcall,
2066 &feature_jmpcall,
2067 &feature_sram,
1624 &feature_spm,
20681625 &feature_addsubiw,
2069 &feature_mul,
2070 &feature_break,
1626 &feature_jmpcall,
20711627 &feature_lpm,
2072 &feature_avr0,
1628 &feature_break,
1629 &feature_mul,
1630 &feature_sram,
1631 &feature_ijmpcall,
20731632 &feature_movw,
2074 &feature_avr5,
20751633 },
20761634};
20771635
......@@ -2079,18 +1637,16 @@ pub const cpu_atmega3250pa = Cpu{
20791637 .name = "atmega3250pa",
20801638 .llvm_name = "atmega3250pa",
20811639 .subfeatures = &[_]*const Feature {
2082 &feature_spm,
20831640 &feature_lpmx,
2084 &feature_ijmpcall,
2085 &feature_jmpcall,
2086 &feature_sram,
1641 &feature_spm,
20871642 &feature_addsubiw,
2088 &feature_mul,
2089 &feature_break,
1643 &feature_jmpcall,
20901644 &feature_lpm,
2091 &feature_avr0,
1645 &feature_break,
1646 &feature_mul,
1647 &feature_sram,
1648 &feature_ijmpcall,
20921649 &feature_movw,
2093 &feature_avr5,
20941650 },
20951651};
20961652
......@@ -2098,18 +1654,16 @@ pub const cpu_atmega325a = Cpu{
20981654 .name = "atmega325a",
20991655 .llvm_name = "atmega325a",
21001656 .subfeatures = &[_]*const Feature {
2101 &feature_spm,
21021657 &feature_lpmx,
2103 &feature_ijmpcall,
2104 &feature_jmpcall,
2105 &feature_sram,
1658 &feature_spm,
21061659 &feature_addsubiw,
2107 &feature_mul,
2108 &feature_break,
1660 &feature_jmpcall,
21091661 &feature_lpm,
2110 &feature_avr0,
1662 &feature_break,
1663 &feature_mul,
1664 &feature_sram,
1665 &feature_ijmpcall,
21111666 &feature_movw,
2112 &feature_avr5,
21131667 },
21141668};
21151669
......@@ -2117,18 +1671,16 @@ pub const cpu_atmega325p = Cpu{
21171671 .name = "atmega325p",
21181672 .llvm_name = "atmega325p",
21191673 .subfeatures = &[_]*const Feature {
2120 &feature_spm,
21211674 &feature_lpmx,
2122 &feature_ijmpcall,
2123 &feature_jmpcall,
2124 &feature_sram,
1675 &feature_spm,
21251676 &feature_addsubiw,
2126 &feature_mul,
2127 &feature_break,
1677 &feature_jmpcall,
21281678 &feature_lpm,
2129 &feature_avr0,
1679 &feature_break,
1680 &feature_mul,
1681 &feature_sram,
1682 &feature_ijmpcall,
21301683 &feature_movw,
2131 &feature_avr5,
21321684 },
21331685};
21341686
......@@ -2136,18 +1688,16 @@ pub const cpu_atmega325pa = Cpu{
21361688 .name = "atmega325pa",
21371689 .llvm_name = "atmega325pa",
21381690 .subfeatures = &[_]*const Feature {
2139 &feature_spm,
21401691 &feature_lpmx,
2141 &feature_ijmpcall,
2142 &feature_jmpcall,
2143 &feature_sram,
1692 &feature_spm,
21441693 &feature_addsubiw,
2145 &feature_mul,
2146 &feature_break,
1694 &feature_jmpcall,
21471695 &feature_lpm,
2148 &feature_avr0,
1696 &feature_break,
1697 &feature_mul,
1698 &feature_sram,
1699 &feature_ijmpcall,
21491700 &feature_movw,
2150 &feature_avr5,
21511701 },
21521702};
21531703
......@@ -2155,18 +1705,16 @@ pub const cpu_atmega328 = Cpu{
21551705 .name = "atmega328",
21561706 .llvm_name = "atmega328",
21571707 .subfeatures = &[_]*const Feature {
2158 &feature_spm,
21591708 &feature_lpmx,
2160 &feature_ijmpcall,
2161 &feature_jmpcall,
2162 &feature_sram,
1709 &feature_spm,
21631710 &feature_addsubiw,
2164 &feature_mul,
2165 &feature_break,
1711 &feature_jmpcall,
21661712 &feature_lpm,
2167 &feature_avr0,
1713 &feature_break,
1714 &feature_mul,
1715 &feature_sram,
1716 &feature_ijmpcall,
21681717 &feature_movw,
2169 &feature_avr5,
21701718 },
21711719};
21721720
......@@ -2174,18 +1722,16 @@ pub const cpu_atmega328p = Cpu{
21741722 .name = "atmega328p",
21751723 .llvm_name = "atmega328p",
21761724 .subfeatures = &[_]*const Feature {
2177 &feature_spm,
21781725 &feature_lpmx,
2179 &feature_ijmpcall,
2180 &feature_jmpcall,
2181 &feature_sram,
1726 &feature_spm,
21821727 &feature_addsubiw,
2183 &feature_mul,
2184 &feature_break,
1728 &feature_jmpcall,
21851729 &feature_lpm,
2186 &feature_avr0,
1730 &feature_break,
1731 &feature_mul,
1732 &feature_sram,
1733 &feature_ijmpcall,
21871734 &feature_movw,
2188 &feature_avr5,
21891735 },
21901736};
21911737
......@@ -2193,18 +1739,16 @@ pub const cpu_atmega329 = Cpu{
21931739 .name = "atmega329",
21941740 .llvm_name = "atmega329",
21951741 .subfeatures = &[_]*const Feature {
2196 &feature_spm,
21971742 &feature_lpmx,
2198 &feature_ijmpcall,
2199 &feature_jmpcall,
2200 &feature_sram,
1743 &feature_spm,
22011744 &feature_addsubiw,
2202 &feature_mul,
2203 &feature_break,
1745 &feature_jmpcall,
22041746 &feature_lpm,
2205 &feature_avr0,
1747 &feature_break,
1748 &feature_mul,
1749 &feature_sram,
1750 &feature_ijmpcall,
22061751 &feature_movw,
2207 &feature_avr5,
22081752 },
22091753};
22101754
......@@ -2212,18 +1756,16 @@ pub const cpu_atmega3290 = Cpu{
22121756 .name = "atmega3290",
22131757 .llvm_name = "atmega3290",
22141758 .subfeatures = &[_]*const Feature {
2215 &feature_spm,
22161759 &feature_lpmx,
2217 &feature_ijmpcall,
2218 &feature_jmpcall,
2219 &feature_sram,
1760 &feature_spm,
22201761 &feature_addsubiw,
2221 &feature_mul,
2222 &feature_break,
1762 &feature_jmpcall,
22231763 &feature_lpm,
2224 &feature_avr0,
1764 &feature_break,
1765 &feature_mul,
1766 &feature_sram,
1767 &feature_ijmpcall,
22251768 &feature_movw,
2226 &feature_avr5,
22271769 },
22281770};
22291771
......@@ -2231,18 +1773,16 @@ pub const cpu_atmega3290a = Cpu{
22311773 .name = "atmega3290a",
22321774 .llvm_name = "atmega3290a",
22331775 .subfeatures = &[_]*const Feature {
2234 &feature_spm,
22351776 &feature_lpmx,
2236 &feature_ijmpcall,
2237 &feature_jmpcall,
2238 &feature_sram,
1777 &feature_spm,
22391778 &feature_addsubiw,
2240 &feature_mul,
2241 &feature_break,
1779 &feature_jmpcall,
22421780 &feature_lpm,
2243 &feature_avr0,
1781 &feature_break,
1782 &feature_mul,
1783 &feature_sram,
1784 &feature_ijmpcall,
22441785 &feature_movw,
2245 &feature_avr5,
22461786 },
22471787};
22481788
......@@ -2250,18 +1790,16 @@ pub const cpu_atmega3290p = Cpu{
22501790 .name = "atmega3290p",
22511791 .llvm_name = "atmega3290p",
22521792 .subfeatures = &[_]*const Feature {
2253 &feature_spm,
22541793 &feature_lpmx,
2255 &feature_ijmpcall,
2256 &feature_jmpcall,
2257 &feature_sram,
1794 &feature_spm,
22581795 &feature_addsubiw,
2259 &feature_mul,
2260 &feature_break,
1796 &feature_jmpcall,
22611797 &feature_lpm,
2262 &feature_avr0,
1798 &feature_break,
1799 &feature_mul,
1800 &feature_sram,
1801 &feature_ijmpcall,
22631802 &feature_movw,
2264 &feature_avr5,
22651803 },
22661804};
22671805
......@@ -2269,18 +1807,16 @@ pub const cpu_atmega3290pa = Cpu{
22691807 .name = "atmega3290pa",
22701808 .llvm_name = "atmega3290pa",
22711809 .subfeatures = &[_]*const Feature {
2272 &feature_spm,
22731810 &feature_lpmx,
2274 &feature_ijmpcall,
2275 &feature_jmpcall,
2276 &feature_sram,
1811 &feature_spm,
22771812 &feature_addsubiw,
2278 &feature_mul,
2279 &feature_break,
1813 &feature_jmpcall,
22801814 &feature_lpm,
2281 &feature_avr0,
2282 &feature_movw,
2283 &feature_avr5,
1815 &feature_break,
1816 &feature_mul,
1817 &feature_sram,
1818 &feature_ijmpcall,
1819 &feature_movw,
22841820 },
22851821};
22861822
......@@ -2288,18 +1824,16 @@ pub const cpu_atmega329a = Cpu{
22881824 .name = "atmega329a",
22891825 .llvm_name = "atmega329a",
22901826 .subfeatures = &[_]*const Feature {
2291 &feature_spm,
22921827 &feature_lpmx,
2293 &feature_ijmpcall,
2294 &feature_jmpcall,
2295 &feature_sram,
1828 &feature_spm,
22961829 &feature_addsubiw,
2297 &feature_mul,
2298 &feature_break,
1830 &feature_jmpcall,
22991831 &feature_lpm,
2300 &feature_avr0,
1832 &feature_break,
1833 &feature_mul,
1834 &feature_sram,
1835 &feature_ijmpcall,
23011836 &feature_movw,
2302 &feature_avr5,
23031837 },
23041838};
23051839
......@@ -2307,18 +1841,16 @@ pub const cpu_atmega329p = Cpu{
23071841 .name = "atmega329p",
23081842 .llvm_name = "atmega329p",
23091843 .subfeatures = &[_]*const Feature {
2310 &feature_spm,
23111844 &feature_lpmx,
2312 &feature_ijmpcall,
2313 &feature_jmpcall,
2314 &feature_sram,
1845 &feature_spm,
23151846 &feature_addsubiw,
2316 &feature_mul,
2317 &feature_break,
1847 &feature_jmpcall,
23181848 &feature_lpm,
2319 &feature_avr0,
1849 &feature_break,
1850 &feature_mul,
1851 &feature_sram,
1852 &feature_ijmpcall,
23201853 &feature_movw,
2321 &feature_avr5,
23221854 },
23231855};
23241856
......@@ -2326,18 +1858,16 @@ pub const cpu_atmega329pa = Cpu{
23261858 .name = "atmega329pa",
23271859 .llvm_name = "atmega329pa",
23281860 .subfeatures = &[_]*const Feature {
2329 &feature_spm,
23301861 &feature_lpmx,
2331 &feature_ijmpcall,
2332 &feature_jmpcall,
2333 &feature_sram,
1862 &feature_spm,
23341863 &feature_addsubiw,
2335 &feature_mul,
2336 &feature_break,
1864 &feature_jmpcall,
23371865 &feature_lpm,
2338 &feature_avr0,
1866 &feature_break,
1867 &feature_mul,
1868 &feature_sram,
1869 &feature_ijmpcall,
23391870 &feature_movw,
2340 &feature_avr5,
23411871 },
23421872};
23431873
......@@ -2345,18 +1875,16 @@ pub const cpu_atmega32a = Cpu{
23451875 .name = "atmega32a",
23461876 .llvm_name = "atmega32a",
23471877 .subfeatures = &[_]*const Feature {
2348 &feature_spm,
23491878 &feature_lpmx,
2350 &feature_ijmpcall,
2351 &feature_jmpcall,
2352 &feature_sram,
1879 &feature_spm,
23531880 &feature_addsubiw,
2354 &feature_mul,
2355 &feature_break,
1881 &feature_jmpcall,
23561882 &feature_lpm,
2357 &feature_avr0,
1883 &feature_break,
1884 &feature_mul,
1885 &feature_sram,
1886 &feature_ijmpcall,
23581887 &feature_movw,
2359 &feature_avr5,
23601888 },
23611889};
23621890
......@@ -2364,18 +1892,16 @@ pub const cpu_atmega32c1 = Cpu{
23641892 .name = "atmega32c1",
23651893 .llvm_name = "atmega32c1",
23661894 .subfeatures = &[_]*const Feature {
2367 &feature_spm,
23681895 &feature_lpmx,
2369 &feature_ijmpcall,
2370 &feature_jmpcall,
2371 &feature_sram,
1896 &feature_spm,
23721897 &feature_addsubiw,
2373 &feature_mul,
2374 &feature_break,
1898 &feature_jmpcall,
23751899 &feature_lpm,
2376 &feature_avr0,
1900 &feature_break,
1901 &feature_mul,
1902 &feature_sram,
1903 &feature_ijmpcall,
23771904 &feature_movw,
2378 &feature_avr5,
23791905 },
23801906};
23811907
......@@ -2383,18 +1909,16 @@ pub const cpu_atmega32hvb = Cpu{
23831909 .name = "atmega32hvb",
23841910 .llvm_name = "atmega32hvb",
23851911 .subfeatures = &[_]*const Feature {
2386 &feature_spm,
23871912 &feature_lpmx,
2388 &feature_ijmpcall,
2389 &feature_jmpcall,
2390 &feature_sram,
1913 &feature_spm,
23911914 &feature_addsubiw,
2392 &feature_mul,
2393 &feature_break,
1915 &feature_jmpcall,
23941916 &feature_lpm,
2395 &feature_avr0,
1917 &feature_break,
1918 &feature_mul,
1919 &feature_sram,
1920 &feature_ijmpcall,
23961921 &feature_movw,
2397 &feature_avr5,
23981922 },
23991923};
24001924
......@@ -2402,18 +1926,16 @@ pub const cpu_atmega32hvbrevb = Cpu{
24021926 .name = "atmega32hvbrevb",
24031927 .llvm_name = "atmega32hvbrevb",
24041928 .subfeatures = &[_]*const Feature {
2405 &feature_spm,
24061929 &feature_lpmx,
2407 &feature_ijmpcall,
2408 &feature_jmpcall,
2409 &feature_sram,
1930 &feature_spm,
24101931 &feature_addsubiw,
2411 &feature_mul,
2412 &feature_break,
1932 &feature_jmpcall,
24131933 &feature_lpm,
2414 &feature_avr0,
1934 &feature_break,
1935 &feature_mul,
1936 &feature_sram,
1937 &feature_ijmpcall,
24151938 &feature_movw,
2416 &feature_avr5,
24171939 },
24181940};
24191941
......@@ -2421,18 +1943,16 @@ pub const cpu_atmega32m1 = Cpu{
24211943 .name = "atmega32m1",
24221944 .llvm_name = "atmega32m1",
24231945 .subfeatures = &[_]*const Feature {
2424 &feature_spm,
24251946 &feature_lpmx,
2426 &feature_ijmpcall,
2427 &feature_jmpcall,
2428 &feature_sram,
1947 &feature_spm,
24291948 &feature_addsubiw,
2430 &feature_mul,
2431 &feature_break,
1949 &feature_jmpcall,
24321950 &feature_lpm,
2433 &feature_avr0,
1951 &feature_break,
1952 &feature_mul,
1953 &feature_sram,
1954 &feature_ijmpcall,
24341955 &feature_movw,
2435 &feature_avr5,
24361956 },
24371957};
24381958
......@@ -2440,17 +1960,15 @@ pub const cpu_atmega32u2 = Cpu{
24401960 .name = "atmega32u2",
24411961 .llvm_name = "atmega32u2",
24421962 .subfeatures = &[_]*const Feature {
2443 &feature_spm,
24441963 &feature_lpmx,
2445 &feature_ijmpcall,
2446 &feature_jmpcall,
2447 &feature_sram,
1964 &feature_spm,
24481965 &feature_addsubiw,
2449 &feature_break,
1966 &feature_jmpcall,
24501967 &feature_lpm,
2451 &feature_avr0,
1968 &feature_break,
1969 &feature_sram,
1970 &feature_ijmpcall,
24521971 &feature_movw,
2453 &feature_avr35,
24541972 },
24551973};
24561974
......@@ -2458,18 +1976,16 @@ pub const cpu_atmega32u4 = Cpu{
24581976 .name = "atmega32u4",
24591977 .llvm_name = "atmega32u4",
24601978 .subfeatures = &[_]*const Feature {
2461 &feature_spm,
24621979 &feature_lpmx,
2463 &feature_ijmpcall,
2464 &feature_jmpcall,
2465 &feature_sram,
1980 &feature_spm,
24661981 &feature_addsubiw,
2467 &feature_mul,
2468 &feature_break,
1982 &feature_jmpcall,
24691983 &feature_lpm,
2470 &feature_avr0,
1984 &feature_break,
1985 &feature_mul,
1986 &feature_sram,
1987 &feature_ijmpcall,
24711988 &feature_movw,
2472 &feature_avr5,
24731989 },
24741990};
24751991
......@@ -2477,18 +1993,16 @@ pub const cpu_atmega32u6 = Cpu{
24771993 .name = "atmega32u6",
24781994 .llvm_name = "atmega32u6",
24791995 .subfeatures = &[_]*const Feature {
2480 &feature_spm,
24811996 &feature_lpmx,
2482 &feature_ijmpcall,
2483 &feature_jmpcall,
2484 &feature_sram,
1997 &feature_spm,
24851998 &feature_addsubiw,
2486 &feature_mul,
2487 &feature_break,
1999 &feature_jmpcall,
24882000 &feature_lpm,
2489 &feature_avr0,
2001 &feature_break,
2002 &feature_mul,
2003 &feature_sram,
2004 &feature_ijmpcall,
24902005 &feature_movw,
2491 &feature_avr5,
24922006 },
24932007};
24942008
......@@ -2496,18 +2010,16 @@ pub const cpu_atmega406 = Cpu{
24962010 .name = "atmega406",
24972011 .llvm_name = "atmega406",
24982012 .subfeatures = &[_]*const Feature {
2499 &feature_spm,
25002013 &feature_lpmx,
2501 &feature_ijmpcall,
2502 &feature_jmpcall,
2503 &feature_sram,
2014 &feature_spm,
25042015 &feature_addsubiw,
2505 &feature_mul,
2506 &feature_break,
2016 &feature_jmpcall,
25072017 &feature_lpm,
2508 &feature_avr0,
2018 &feature_break,
2019 &feature_mul,
2020 &feature_sram,
2021 &feature_ijmpcall,
25092022 &feature_movw,
2510 &feature_avr5,
25112023 },
25122024};
25132025
......@@ -2515,17 +2027,15 @@ pub const cpu_atmega48 = Cpu{
25152027 .name = "atmega48",
25162028 .llvm_name = "atmega48",
25172029 .subfeatures = &[_]*const Feature {
2518 &feature_spm,
25192030 &feature_lpmx,
2520 &feature_ijmpcall,
2521 &feature_sram,
2031 &feature_spm,
25222032 &feature_addsubiw,
2523 &feature_mul,
25242033 &feature_break,
25252034 &feature_lpm,
2526 &feature_avr0,
2035 &feature_mul,
2036 &feature_sram,
2037 &feature_ijmpcall,
25272038 &feature_movw,
2528 &feature_avr4,
25292039 },
25302040};
25312041
......@@ -2533,17 +2043,15 @@ pub const cpu_atmega48a = Cpu{
25332043 .name = "atmega48a",
25342044 .llvm_name = "atmega48a",
25352045 .subfeatures = &[_]*const Feature {
2536 &feature_spm,
25372046 &feature_lpmx,
2538 &feature_ijmpcall,
2539 &feature_sram,
2047 &feature_spm,
25402048 &feature_addsubiw,
2541 &feature_mul,
25422049 &feature_break,
25432050 &feature_lpm,
2544 &feature_avr0,
2051 &feature_mul,
2052 &feature_sram,
2053 &feature_ijmpcall,
25452054 &feature_movw,
2546 &feature_avr4,
25472055 },
25482056};
25492057
......@@ -2551,17 +2059,15 @@ pub const cpu_atmega48p = Cpu{
25512059 .name = "atmega48p",
25522060 .llvm_name = "atmega48p",
25532061 .subfeatures = &[_]*const Feature {
2554 &feature_spm,
25552062 &feature_lpmx,
2556 &feature_ijmpcall,
2557 &feature_sram,
2063 &feature_spm,
25582064 &feature_addsubiw,
2559 &feature_mul,
25602065 &feature_break,
25612066 &feature_lpm,
2562 &feature_avr0,
2067 &feature_mul,
2068 &feature_sram,
2069 &feature_ijmpcall,
25632070 &feature_movw,
2564 &feature_avr4,
25652071 },
25662072};
25672073
......@@ -2569,17 +2075,15 @@ pub const cpu_atmega48pa = Cpu{
25692075 .name = "atmega48pa",
25702076 .llvm_name = "atmega48pa",
25712077 .subfeatures = &[_]*const Feature {
2572 &feature_spm,
25732078 &feature_lpmx,
2574 &feature_ijmpcall,
2575 &feature_sram,
2079 &feature_spm,
25762080 &feature_addsubiw,
2577 &feature_mul,
25782081 &feature_break,
25792082 &feature_lpm,
2580 &feature_avr0,
2083 &feature_mul,
2084 &feature_sram,
2085 &feature_ijmpcall,
25812086 &feature_movw,
2582 &feature_avr4,
25832087 },
25842088};
25852089
......@@ -2587,18 +2091,16 @@ pub const cpu_atmega64 = Cpu{
25872091 .name = "atmega64",
25882092 .llvm_name = "atmega64",
25892093 .subfeatures = &[_]*const Feature {
2590 &feature_spm,
25912094 &feature_lpmx,
2592 &feature_ijmpcall,
2593 &feature_jmpcall,
2594 &feature_sram,
2095 &feature_spm,
25952096 &feature_addsubiw,
2596 &feature_mul,
2597 &feature_break,
2097 &feature_jmpcall,
25982098 &feature_lpm,
2599 &feature_avr0,
2099 &feature_break,
2100 &feature_mul,
2101 &feature_sram,
2102 &feature_ijmpcall,
26002103 &feature_movw,
2601 &feature_avr5,
26022104 },
26032105};
26042106
......@@ -2606,18 +2108,16 @@ pub const cpu_atmega640 = Cpu{
26062108 .name = "atmega640",
26072109 .llvm_name = "atmega640",
26082110 .subfeatures = &[_]*const Feature {
2609 &feature_spm,
26102111 &feature_lpmx,
2611 &feature_ijmpcall,
2612 &feature_jmpcall,
2613 &feature_sram,
2112 &feature_spm,
26142113 &feature_addsubiw,
2615 &feature_mul,
2616 &feature_break,
2114 &feature_jmpcall,
26172115 &feature_lpm,
2618 &feature_avr0,
2116 &feature_break,
2117 &feature_mul,
2118 &feature_sram,
2119 &feature_ijmpcall,
26192120 &feature_movw,
2620 &feature_avr5,
26212121 },
26222122};
26232123
......@@ -2625,18 +2125,16 @@ pub const cpu_atmega644 = Cpu{
26252125 .name = "atmega644",
26262126 .llvm_name = "atmega644",
26272127 .subfeatures = &[_]*const Feature {
2628 &feature_spm,
26292128 &feature_lpmx,
2630 &feature_ijmpcall,
2631 &feature_jmpcall,
2632 &feature_sram,
2129 &feature_spm,
26332130 &feature_addsubiw,
2634 &feature_mul,
2635 &feature_break,
2131 &feature_jmpcall,
26362132 &feature_lpm,
2637 &feature_avr0,
2133 &feature_break,
2134 &feature_mul,
2135 &feature_sram,
2136 &feature_ijmpcall,
26382137 &feature_movw,
2639 &feature_avr5,
26402138 },
26412139};
26422140
......@@ -2644,18 +2142,16 @@ pub const cpu_atmega644a = Cpu{
26442142 .name = "atmega644a",
26452143 .llvm_name = "atmega644a",
26462144 .subfeatures = &[_]*const Feature {
2647 &feature_spm,
26482145 &feature_lpmx,
2649 &feature_ijmpcall,
2650 &feature_jmpcall,
2651 &feature_sram,
2146 &feature_spm,
26522147 &feature_addsubiw,
2653 &feature_mul,
2654 &feature_break,
2148 &feature_jmpcall,
26552149 &feature_lpm,
2656 &feature_avr0,
2150 &feature_break,
2151 &feature_mul,
2152 &feature_sram,
2153 &feature_ijmpcall,
26572154 &feature_movw,
2658 &feature_avr5,
26592155 },
26602156};
26612157
......@@ -2663,18 +2159,16 @@ pub const cpu_atmega644p = Cpu{
26632159 .name = "atmega644p",
26642160 .llvm_name = "atmega644p",
26652161 .subfeatures = &[_]*const Feature {
2666 &feature_spm,
26672162 &feature_lpmx,
2668 &feature_ijmpcall,
2669 &feature_jmpcall,
2670 &feature_sram,
2163 &feature_spm,
26712164 &feature_addsubiw,
2672 &feature_mul,
2673 &feature_break,
2165 &feature_jmpcall,
26742166 &feature_lpm,
2675 &feature_avr0,
2167 &feature_break,
2168 &feature_mul,
2169 &feature_sram,
2170 &feature_ijmpcall,
26762171 &feature_movw,
2677 &feature_avr5,
26782172 },
26792173};
26802174
......@@ -2682,18 +2176,16 @@ pub const cpu_atmega644pa = Cpu{
26822176 .name = "atmega644pa",
26832177 .llvm_name = "atmega644pa",
26842178 .subfeatures = &[_]*const Feature {
2685 &feature_spm,
26862179 &feature_lpmx,
2687 &feature_ijmpcall,
2688 &feature_jmpcall,
2689 &feature_sram,
2180 &feature_spm,
26902181 &feature_addsubiw,
2691 &feature_mul,
2692 &feature_break,
2182 &feature_jmpcall,
26932183 &feature_lpm,
2694 &feature_avr0,
2184 &feature_break,
2185 &feature_mul,
2186 &feature_sram,
2187 &feature_ijmpcall,
26952188 &feature_movw,
2696 &feature_avr5,
26972189 },
26982190};
26992191
......@@ -2701,18 +2193,16 @@ pub const cpu_atmega644rfr2 = Cpu{
27012193 .name = "atmega644rfr2",
27022194 .llvm_name = "atmega644rfr2",
27032195 .subfeatures = &[_]*const Feature {
2704 &feature_spm,
27052196 &feature_lpmx,
2706 &feature_ijmpcall,
2707 &feature_jmpcall,
2708 &feature_sram,
2197 &feature_spm,
27092198 &feature_addsubiw,
2710 &feature_mul,
2711 &feature_break,
2199 &feature_jmpcall,
27122200 &feature_lpm,
2713 &feature_avr0,
2201 &feature_break,
2202 &feature_mul,
2203 &feature_sram,
2204 &feature_ijmpcall,
27142205 &feature_movw,
2715 &feature_avr5,
27162206 },
27172207};
27182208
......@@ -2720,18 +2210,16 @@ pub const cpu_atmega645 = Cpu{
27202210 .name = "atmega645",
27212211 .llvm_name = "atmega645",
27222212 .subfeatures = &[_]*const Feature {
2723 &feature_spm,
27242213 &feature_lpmx,
2725 &feature_ijmpcall,
2726 &feature_jmpcall,
2727 &feature_sram,
2214 &feature_spm,
27282215 &feature_addsubiw,
2729 &feature_mul,
2730 &feature_break,
2216 &feature_jmpcall,
27312217 &feature_lpm,
2732 &feature_avr0,
2218 &feature_break,
2219 &feature_mul,
2220 &feature_sram,
2221 &feature_ijmpcall,
27332222 &feature_movw,
2734 &feature_avr5,
27352223 },
27362224};
27372225
......@@ -2739,18 +2227,16 @@ pub const cpu_atmega6450 = Cpu{
27392227 .name = "atmega6450",
27402228 .llvm_name = "atmega6450",
27412229 .subfeatures = &[_]*const Feature {
2742 &feature_spm,
27432230 &feature_lpmx,
2744 &feature_ijmpcall,
2745 &feature_jmpcall,
2746 &feature_sram,
2231 &feature_spm,
27472232 &feature_addsubiw,
2748 &feature_mul,
2749 &feature_break,
2233 &feature_jmpcall,
27502234 &feature_lpm,
2751 &feature_avr0,
2235 &feature_break,
2236 &feature_mul,
2237 &feature_sram,
2238 &feature_ijmpcall,
27522239 &feature_movw,
2753 &feature_avr5,
27542240 },
27552241};
27562242
......@@ -2758,18 +2244,16 @@ pub const cpu_atmega6450a = Cpu{
27582244 .name = "atmega6450a",
27592245 .llvm_name = "atmega6450a",
27602246 .subfeatures = &[_]*const Feature {
2761 &feature_spm,
27622247 &feature_lpmx,
2763 &feature_ijmpcall,
2764 &feature_jmpcall,
2765 &feature_sram,
2248 &feature_spm,
27662249 &feature_addsubiw,
2767 &feature_mul,
2768 &feature_break,
2250 &feature_jmpcall,
27692251 &feature_lpm,
2770 &feature_avr0,
2252 &feature_break,
2253 &feature_mul,
2254 &feature_sram,
2255 &feature_ijmpcall,
27712256 &feature_movw,
2772 &feature_avr5,
27732257 },
27742258};
27752259
......@@ -2777,18 +2261,16 @@ pub const cpu_atmega6450p = Cpu{
27772261 .name = "atmega6450p",
27782262 .llvm_name = "atmega6450p",
27792263 .subfeatures = &[_]*const Feature {
2780 &feature_spm,
27812264 &feature_lpmx,
2782 &feature_ijmpcall,
2783 &feature_jmpcall,
2784 &feature_sram,
2265 &feature_spm,
27852266 &feature_addsubiw,
2786 &feature_mul,
2787 &feature_break,
2267 &feature_jmpcall,
27882268 &feature_lpm,
2789 &feature_avr0,
2269 &feature_break,
2270 &feature_mul,
2271 &feature_sram,
2272 &feature_ijmpcall,
27902273 &feature_movw,
2791 &feature_avr5,
27922274 },
27932275};
27942276
......@@ -2796,18 +2278,16 @@ pub const cpu_atmega645a = Cpu{
27962278 .name = "atmega645a",
27972279 .llvm_name = "atmega645a",
27982280 .subfeatures = &[_]*const Feature {
2799 &feature_spm,
28002281 &feature_lpmx,
2801 &feature_ijmpcall,
2802 &feature_jmpcall,
2803 &feature_sram,
2282 &feature_spm,
28042283 &feature_addsubiw,
2805 &feature_mul,
2806 &feature_break,
2284 &feature_jmpcall,
28072285 &feature_lpm,
2808 &feature_avr0,
2286 &feature_break,
2287 &feature_mul,
2288 &feature_sram,
2289 &feature_ijmpcall,
28092290 &feature_movw,
2810 &feature_avr5,
28112291 },
28122292};
28132293
......@@ -2815,18 +2295,16 @@ pub const cpu_atmega645p = Cpu{
28152295 .name = "atmega645p",
28162296 .llvm_name = "atmega645p",
28172297 .subfeatures = &[_]*const Feature {
2818 &feature_spm,
28192298 &feature_lpmx,
2820 &feature_ijmpcall,
2821 &feature_jmpcall,
2822 &feature_sram,
2299 &feature_spm,
28232300 &feature_addsubiw,
2824 &feature_mul,
2825 &feature_break,
2301 &feature_jmpcall,
28262302 &feature_lpm,
2827 &feature_avr0,
2303 &feature_break,
2304 &feature_mul,
2305 &feature_sram,
2306 &feature_ijmpcall,
28282307 &feature_movw,
2829 &feature_avr5,
28302308 },
28312309};
28322310
......@@ -2834,18 +2312,16 @@ pub const cpu_atmega649 = Cpu{
28342312 .name = "atmega649",
28352313 .llvm_name = "atmega649",
28362314 .subfeatures = &[_]*const Feature {
2837 &feature_spm,
28382315 &feature_lpmx,
2839 &feature_ijmpcall,
2840 &feature_jmpcall,
2841 &feature_sram,
2316 &feature_spm,
28422317 &feature_addsubiw,
2843 &feature_mul,
2844 &feature_break,
2318 &feature_jmpcall,
28452319 &feature_lpm,
2846 &feature_avr0,
2320 &feature_break,
2321 &feature_mul,
2322 &feature_sram,
2323 &feature_ijmpcall,
28472324 &feature_movw,
2848 &feature_avr5,
28492325 },
28502326};
28512327
......@@ -2853,18 +2329,16 @@ pub const cpu_atmega6490 = Cpu{
28532329 .name = "atmega6490",
28542330 .llvm_name = "atmega6490",
28552331 .subfeatures = &[_]*const Feature {
2856 &feature_spm,
28572332 &feature_lpmx,
2858 &feature_ijmpcall,
2859 &feature_jmpcall,
2860 &feature_sram,
2333 &feature_spm,
28612334 &feature_addsubiw,
2862 &feature_mul,
2863 &feature_break,
2335 &feature_jmpcall,
28642336 &feature_lpm,
2865 &feature_avr0,
2337 &feature_break,
2338 &feature_mul,
2339 &feature_sram,
2340 &feature_ijmpcall,
28662341 &feature_movw,
2867 &feature_avr5,
28682342 },
28692343};
28702344
......@@ -2872,18 +2346,16 @@ pub const cpu_atmega6490a = Cpu{
28722346 .name = "atmega6490a",
28732347 .llvm_name = "atmega6490a",
28742348 .subfeatures = &[_]*const Feature {
2875 &feature_spm,
28762349 &feature_lpmx,
2877 &feature_ijmpcall,
2878 &feature_jmpcall,
2879 &feature_sram,
2350 &feature_spm,
28802351 &feature_addsubiw,
2881 &feature_mul,
2882 &feature_break,
2352 &feature_jmpcall,
28832353 &feature_lpm,
2884 &feature_avr0,
2354 &feature_break,
2355 &feature_mul,
2356 &feature_sram,
2357 &feature_ijmpcall,
28852358 &feature_movw,
2886 &feature_avr5,
28872359 },
28882360};
28892361
......@@ -2891,18 +2363,16 @@ pub const cpu_atmega6490p = Cpu{
28912363 .name = "atmega6490p",
28922364 .llvm_name = "atmega6490p",
28932365 .subfeatures = &[_]*const Feature {
2894 &feature_spm,
28952366 &feature_lpmx,
2896 &feature_ijmpcall,
2897 &feature_jmpcall,
2898 &feature_sram,
2367 &feature_spm,
28992368 &feature_addsubiw,
2900 &feature_mul,
2901 &feature_break,
2369 &feature_jmpcall,
29022370 &feature_lpm,
2903 &feature_avr0,
2371 &feature_break,
2372 &feature_mul,
2373 &feature_sram,
2374 &feature_ijmpcall,
29042375 &feature_movw,
2905 &feature_avr5,
29062376 },
29072377};
29082378
......@@ -2910,18 +2380,16 @@ pub const cpu_atmega649a = Cpu{
29102380 .name = "atmega649a",
29112381 .llvm_name = "atmega649a",
29122382 .subfeatures = &[_]*const Feature {
2913 &feature_spm,
29142383 &feature_lpmx,
2915 &feature_ijmpcall,
2916 &feature_jmpcall,
2917 &feature_sram,
2384 &feature_spm,
29182385 &feature_addsubiw,
2919 &feature_mul,
2920 &feature_break,
2386 &feature_jmpcall,
29212387 &feature_lpm,
2922 &feature_avr0,
2388 &feature_break,
2389 &feature_mul,
2390 &feature_sram,
2391 &feature_ijmpcall,
29232392 &feature_movw,
2924 &feature_avr5,
29252393 },
29262394};
29272395
......@@ -2929,18 +2397,16 @@ pub const cpu_atmega649p = Cpu{
29292397 .name = "atmega649p",
29302398 .llvm_name = "atmega649p",
29312399 .subfeatures = &[_]*const Feature {
2932 &feature_spm,
29332400 &feature_lpmx,
2934 &feature_ijmpcall,
2935 &feature_jmpcall,
2936 &feature_sram,
2401 &feature_spm,
29372402 &feature_addsubiw,
2938 &feature_mul,
2939 &feature_break,
2403 &feature_jmpcall,
29402404 &feature_lpm,
2941 &feature_avr0,
2405 &feature_break,
2406 &feature_mul,
2407 &feature_sram,
2408 &feature_ijmpcall,
29422409 &feature_movw,
2943 &feature_avr5,
29442410 },
29452411};
29462412
......@@ -2948,18 +2414,16 @@ pub const cpu_atmega64a = Cpu{
29482414 .name = "atmega64a",
29492415 .llvm_name = "atmega64a",
29502416 .subfeatures = &[_]*const Feature {
2951 &feature_spm,
29522417 &feature_lpmx,
2953 &feature_ijmpcall,
2954 &feature_jmpcall,
2955 &feature_sram,
2418 &feature_spm,
29562419 &feature_addsubiw,
2957 &feature_mul,
2958 &feature_break,
2420 &feature_jmpcall,
29592421 &feature_lpm,
2960 &feature_avr0,
2422 &feature_break,
2423 &feature_mul,
2424 &feature_sram,
2425 &feature_ijmpcall,
29612426 &feature_movw,
2962 &feature_avr5,
29632427 },
29642428};
29652429
......@@ -2967,18 +2431,16 @@ pub const cpu_atmega64c1 = Cpu{
29672431 .name = "atmega64c1",
29682432 .llvm_name = "atmega64c1",
29692433 .subfeatures = &[_]*const Feature {
2970 &feature_spm,
29712434 &feature_lpmx,
2972 &feature_ijmpcall,
2973 &feature_jmpcall,
2974 &feature_sram,
2435 &feature_spm,
29752436 &feature_addsubiw,
2976 &feature_mul,
2977 &feature_break,
2437 &feature_jmpcall,
29782438 &feature_lpm,
2979 &feature_avr0,
2439 &feature_break,
2440 &feature_mul,
2441 &feature_sram,
2442 &feature_ijmpcall,
29802443 &feature_movw,
2981 &feature_avr5,
29822444 },
29832445};
29842446
......@@ -2986,18 +2448,16 @@ pub const cpu_atmega64hve = Cpu{
29862448 .name = "atmega64hve",
29872449 .llvm_name = "atmega64hve",
29882450 .subfeatures = &[_]*const Feature {
2989 &feature_spm,
29902451 &feature_lpmx,
2991 &feature_ijmpcall,
2992 &feature_jmpcall,
2993 &feature_sram,
2452 &feature_spm,
29942453 &feature_addsubiw,
2995 &feature_mul,
2996 &feature_break,
2454 &feature_jmpcall,
29972455 &feature_lpm,
2998 &feature_avr0,
2456 &feature_break,
2457 &feature_mul,
2458 &feature_sram,
2459 &feature_ijmpcall,
29992460 &feature_movw,
3000 &feature_avr5,
30012461 },
30022462};
30032463
......@@ -3005,18 +2465,16 @@ pub const cpu_atmega64m1 = Cpu{
30052465 .name = "atmega64m1",
30062466 .llvm_name = "atmega64m1",
30072467 .subfeatures = &[_]*const Feature {
3008 &feature_spm,
30092468 &feature_lpmx,
3010 &feature_ijmpcall,
3011 &feature_jmpcall,
3012 &feature_sram,
2469 &feature_spm,
30132470 &feature_addsubiw,
3014 &feature_mul,
3015 &feature_break,
2471 &feature_jmpcall,
30162472 &feature_lpm,
3017 &feature_avr0,
2473 &feature_break,
2474 &feature_mul,
2475 &feature_sram,
2476 &feature_ijmpcall,
30182477 &feature_movw,
3019 &feature_avr5,
30202478 },
30212479};
30222480
......@@ -3024,18 +2482,16 @@ pub const cpu_atmega64rfr2 = Cpu{
30242482 .name = "atmega64rfr2",
30252483 .llvm_name = "atmega64rfr2",
30262484 .subfeatures = &[_]*const Feature {
3027 &feature_spm,
30282485 &feature_lpmx,
3029 &feature_ijmpcall,
3030 &feature_jmpcall,
3031 &feature_sram,
2486 &feature_spm,
30322487 &feature_addsubiw,
3033 &feature_mul,
3034 &feature_break,
2488 &feature_jmpcall,
30352489 &feature_lpm,
3036 &feature_avr0,
2490 &feature_break,
2491 &feature_mul,
2492 &feature_sram,
2493 &feature_ijmpcall,
30372494 &feature_movw,
3038 &feature_avr5,
30392495 },
30402496};
30412497
......@@ -3043,17 +2499,15 @@ pub const cpu_atmega8 = Cpu{
30432499 .name = "atmega8",
30442500 .llvm_name = "atmega8",
30452501 .subfeatures = &[_]*const Feature {
3046 &feature_spm,
30472502 &feature_lpmx,
3048 &feature_ijmpcall,
3049 &feature_sram,
2503 &feature_spm,
30502504 &feature_addsubiw,
3051 &feature_mul,
30522505 &feature_break,
30532506 &feature_lpm,
3054 &feature_avr0,
2507 &feature_mul,
2508 &feature_sram,
2509 &feature_ijmpcall,
30552510 &feature_movw,
3056 &feature_avr4,
30572511 },
30582512};
30592513
......@@ -3061,12 +2515,10 @@ pub const cpu_atmega8515 = Cpu{
30612515 .name = "atmega8515",
30622516 .llvm_name = "atmega8515",
30632517 .subfeatures = &[_]*const Feature {
3064 &feature_ijmpcall,
3065 &feature_sram,
30662518 &feature_addsubiw,
30672519 &feature_lpm,
3068 &feature_avr0,
3069 &feature_avr2,
2520 &feature_sram,
2521 &feature_ijmpcall,
30702522 &feature_lpmx,
30712523 &feature_movw,
30722524 &feature_mul,
......@@ -3078,12 +2530,10 @@ pub const cpu_atmega8535 = Cpu{
30782530 .name = "atmega8535",
30792531 .llvm_name = "atmega8535",
30802532 .subfeatures = &[_]*const Feature {
3081 &feature_ijmpcall,
3082 &feature_sram,
30832533 &feature_addsubiw,
30842534 &feature_lpm,
3085 &feature_avr0,
3086 &feature_avr2,
2535 &feature_sram,
2536 &feature_ijmpcall,
30872537 &feature_lpmx,
30882538 &feature_movw,
30892539 &feature_mul,
......@@ -3095,17 +2545,15 @@ pub const cpu_atmega88 = Cpu{
30952545 .name = "atmega88",
30962546 .llvm_name = "atmega88",
30972547 .subfeatures = &[_]*const Feature {
3098 &feature_spm,
30992548 &feature_lpmx,
3100 &feature_ijmpcall,
3101 &feature_sram,
2549 &feature_spm,
31022550 &feature_addsubiw,
3103 &feature_mul,
31042551 &feature_break,
31052552 &feature_lpm,
3106 &feature_avr0,
2553 &feature_mul,
2554 &feature_sram,
2555 &feature_ijmpcall,
31072556 &feature_movw,
3108 &feature_avr4,
31092557 },
31102558};
31112559
......@@ -3113,17 +2561,15 @@ pub const cpu_atmega88a = Cpu{
31132561 .name = "atmega88a",
31142562 .llvm_name = "atmega88a",
31152563 .subfeatures = &[_]*const Feature {
3116 &feature_spm,
31172564 &feature_lpmx,
3118 &feature_ijmpcall,
3119 &feature_sram,
2565 &feature_spm,
31202566 &feature_addsubiw,
3121 &feature_mul,
31222567 &feature_break,
31232568 &feature_lpm,
3124 &feature_avr0,
2569 &feature_mul,
2570 &feature_sram,
2571 &feature_ijmpcall,
31252572 &feature_movw,
3126 &feature_avr4,
31272573 },
31282574};
31292575
......@@ -3131,17 +2577,15 @@ pub const cpu_atmega88p = Cpu{
31312577 .name = "atmega88p",
31322578 .llvm_name = "atmega88p",
31332579 .subfeatures = &[_]*const Feature {
3134 &feature_spm,
31352580 &feature_lpmx,
3136 &feature_ijmpcall,
3137 &feature_sram,
2581 &feature_spm,
31382582 &feature_addsubiw,
3139 &feature_mul,
31402583 &feature_break,
31412584 &feature_lpm,
3142 &feature_avr0,
2585 &feature_mul,
2586 &feature_sram,
2587 &feature_ijmpcall,
31432588 &feature_movw,
3144 &feature_avr4,
31452589 },
31462590};
31472591
......@@ -3149,17 +2593,15 @@ pub const cpu_atmega88pa = Cpu{
31492593 .name = "atmega88pa",
31502594 .llvm_name = "atmega88pa",
31512595 .subfeatures = &[_]*const Feature {
3152 &feature_spm,
31532596 &feature_lpmx,
3154 &feature_ijmpcall,
3155 &feature_sram,
2597 &feature_spm,
31562598 &feature_addsubiw,
3157 &feature_mul,
31582599 &feature_break,
31592600 &feature_lpm,
3160 &feature_avr0,
2601 &feature_mul,
2602 &feature_sram,
2603 &feature_ijmpcall,
31612604 &feature_movw,
3162 &feature_avr4,
31632605 },
31642606};
31652607
......@@ -3167,17 +2609,15 @@ pub const cpu_atmega8a = Cpu{
31672609 .name = "atmega8a",
31682610 .llvm_name = "atmega8a",
31692611 .subfeatures = &[_]*const Feature {
3170 &feature_spm,
31712612 &feature_lpmx,
3172 &feature_ijmpcall,
3173 &feature_sram,
2613 &feature_spm,
31742614 &feature_addsubiw,
3175 &feature_mul,
31762615 &feature_break,
31772616 &feature_lpm,
3178 &feature_avr0,
2617 &feature_mul,
2618 &feature_sram,
2619 &feature_ijmpcall,
31792620 &feature_movw,
3180 &feature_avr4,
31812621 },
31822622};
31832623
......@@ -3185,17 +2625,15 @@ pub const cpu_atmega8hva = Cpu{
31852625 .name = "atmega8hva",
31862626 .llvm_name = "atmega8hva",
31872627 .subfeatures = &[_]*const Feature {
3188 &feature_spm,
31892628 &feature_lpmx,
3190 &feature_ijmpcall,
3191 &feature_sram,
2629 &feature_spm,
31922630 &feature_addsubiw,
3193 &feature_mul,
31942631 &feature_break,
31952632 &feature_lpm,
3196 &feature_avr0,
2633 &feature_mul,
2634 &feature_sram,
2635 &feature_ijmpcall,
31972636 &feature_movw,
3198 &feature_avr4,
31992637 },
32002638};
32012639
......@@ -3203,17 +2641,15 @@ pub const cpu_atmega8u2 = Cpu{
32032641 .name = "atmega8u2",
32042642 .llvm_name = "atmega8u2",
32052643 .subfeatures = &[_]*const Feature {
3206 &feature_spm,
32072644 &feature_lpmx,
3208 &feature_ijmpcall,
3209 &feature_jmpcall,
3210 &feature_sram,
2645 &feature_spm,
32112646 &feature_addsubiw,
3212 &feature_break,
2647 &feature_jmpcall,
32132648 &feature_lpm,
3214 &feature_avr0,
2649 &feature_break,
2650 &feature_sram,
2651 &feature_ijmpcall,
32152652 &feature_movw,
3216 &feature_avr35,
32172653 },
32182654};
32192655
......@@ -3221,11 +2657,9 @@ pub const cpu_attiny10 = Cpu{
32212657 .name = "attiny10",
32222658 .llvm_name = "attiny10",
32232659 .subfeatures = &[_]*const Feature {
3224 &feature_avr0,
2660 &feature_break,
32252661 &feature_sram,
32262662 &feature_tinyencoding,
3227 &feature_break,
3228 &feature_avrtiny,
32292663 },
32302664};
32312665
......@@ -3233,11 +2667,9 @@ pub const cpu_attiny102 = Cpu{
32332667 .name = "attiny102",
32342668 .llvm_name = "attiny102",
32352669 .subfeatures = &[_]*const Feature {
3236 &feature_avr0,
2670 &feature_break,
32372671 &feature_sram,
32382672 &feature_tinyencoding,
3239 &feature_break,
3240 &feature_avrtiny,
32412673 },
32422674};
32432675
......@@ -3245,11 +2677,9 @@ pub const cpu_attiny104 = Cpu{
32452677 .name = "attiny104",
32462678 .llvm_name = "attiny104",
32472679 .subfeatures = &[_]*const Feature {
3248 &feature_avr0,
2680 &feature_break,
32492681 &feature_sram,
32502682 &feature_tinyencoding,
3251 &feature_break,
3252 &feature_avrtiny,
32532683 },
32542684};
32552685
......@@ -3258,8 +2688,6 @@ pub const cpu_attiny11 = Cpu{
32582688 .llvm_name = "attiny11",
32592689 .subfeatures = &[_]*const Feature {
32602690 &feature_lpm,
3261 &feature_avr0,
3262 &feature_avr1,
32632691 },
32642692};
32652693
......@@ -3268,8 +2696,6 @@ pub const cpu_attiny12 = Cpu{
32682696 .llvm_name = "attiny12",
32692697 .subfeatures = &[_]*const Feature {
32702698 &feature_lpm,
3271 &feature_avr0,
3272 &feature_avr1,
32732699 },
32742700};
32752701
......@@ -3277,16 +2703,14 @@ pub const cpu_attiny13 = Cpu{
32772703 .name = "attiny13",
32782704 .llvm_name = "attiny13",
32792705 .subfeatures = &[_]*const Feature {
3280 &feature_spm,
32812706 &feature_lpmx,
3282 &feature_ijmpcall,
3283 &feature_sram,
2707 &feature_spm,
32842708 &feature_addsubiw,
32852709 &feature_break,
32862710 &feature_lpm,
3287 &feature_avr0,
2711 &feature_sram,
2712 &feature_ijmpcall,
32882713 &feature_movw,
3289 &feature_avr25,
32902714 },
32912715};
32922716
......@@ -3294,16 +2718,14 @@ pub const cpu_attiny13a = Cpu{
32942718 .name = "attiny13a",
32952719 .llvm_name = "attiny13a",
32962720 .subfeatures = &[_]*const Feature {
3297 &feature_spm,
32982721 &feature_lpmx,
3299 &feature_ijmpcall,
3300 &feature_sram,
2722 &feature_spm,
33012723 &feature_addsubiw,
33022724 &feature_break,
33032725 &feature_lpm,
3304 &feature_avr0,
2726 &feature_sram,
2727 &feature_ijmpcall,
33052728 &feature_movw,
3306 &feature_avr25,
33072729 },
33082730};
33092731
......@@ -3312,8 +2734,6 @@ pub const cpu_attiny15 = Cpu{
33122734 .llvm_name = "attiny15",
33132735 .subfeatures = &[_]*const Feature {
33142736 &feature_lpm,
3315 &feature_avr0,
3316 &feature_avr1,
33172737 },
33182738};
33192739
......@@ -3321,17 +2741,15 @@ pub const cpu_attiny1634 = Cpu{
33212741 .name = "attiny1634",
33222742 .llvm_name = "attiny1634",
33232743 .subfeatures = &[_]*const Feature {
3324 &feature_spm,
33252744 &feature_lpmx,
3326 &feature_ijmpcall,
3327 &feature_jmpcall,
3328 &feature_sram,
2745 &feature_spm,
33292746 &feature_addsubiw,
3330 &feature_break,
2747 &feature_jmpcall,
33312748 &feature_lpm,
3332 &feature_avr0,
2749 &feature_break,
2750 &feature_sram,
2751 &feature_ijmpcall,
33332752 &feature_movw,
3334 &feature_avr35,
33352753 },
33362754};
33372755
......@@ -3339,17 +2757,15 @@ pub const cpu_attiny167 = Cpu{
33392757 .name = "attiny167",
33402758 .llvm_name = "attiny167",
33412759 .subfeatures = &[_]*const Feature {
3342 &feature_spm,
33432760 &feature_lpmx,
3344 &feature_ijmpcall,
3345 &feature_jmpcall,
3346 &feature_sram,
2761 &feature_spm,
33472762 &feature_addsubiw,
3348 &feature_break,
2763 &feature_jmpcall,
33492764 &feature_lpm,
3350 &feature_avr0,
2765 &feature_break,
2766 &feature_sram,
2767 &feature_ijmpcall,
33512768 &feature_movw,
3352 &feature_avr35,
33532769 },
33542770};
33552771
......@@ -3357,11 +2773,9 @@ pub const cpu_attiny20 = Cpu{
33572773 .name = "attiny20",
33582774 .llvm_name = "attiny20",
33592775 .subfeatures = &[_]*const Feature {
3360 &feature_avr0,
2776 &feature_break,
33612777 &feature_sram,
33622778 &feature_tinyencoding,
3363 &feature_break,
3364 &feature_avrtiny,
33652779 },
33662780};
33672781
......@@ -3369,12 +2783,10 @@ pub const cpu_attiny22 = Cpu{
33692783 .name = "attiny22",
33702784 .llvm_name = "attiny22",
33712785 .subfeatures = &[_]*const Feature {
3372 &feature_ijmpcall,
3373 &feature_sram,
33742786 &feature_addsubiw,
33752787 &feature_lpm,
3376 &feature_avr0,
3377 &feature_avr2,
2788 &feature_sram,
2789 &feature_ijmpcall,
33782790 },
33792791};
33802792
......@@ -3382,16 +2794,14 @@ pub const cpu_attiny2313 = Cpu{
33822794 .name = "attiny2313",
33832795 .llvm_name = "attiny2313",
33842796 .subfeatures = &[_]*const Feature {
3385 &feature_spm,
33862797 &feature_lpmx,
3387 &feature_ijmpcall,
3388 &feature_sram,
2798 &feature_spm,
33892799 &feature_addsubiw,
33902800 &feature_break,
33912801 &feature_lpm,
3392 &feature_avr0,
2802 &feature_sram,
2803 &feature_ijmpcall,
33932804 &feature_movw,
3394 &feature_avr25,
33952805 },
33962806};
33972807
......@@ -3399,16 +2809,14 @@ pub const cpu_attiny2313a = Cpu{
33992809 .name = "attiny2313a",
34002810 .llvm_name = "attiny2313a",
34012811 .subfeatures = &[_]*const Feature {
3402 &feature_spm,
34032812 &feature_lpmx,
3404 &feature_ijmpcall,
3405 &feature_sram,
2813 &feature_spm,
34062814 &feature_addsubiw,
34072815 &feature_break,
34082816 &feature_lpm,
3409 &feature_avr0,
2817 &feature_sram,
2818 &feature_ijmpcall,
34102819 &feature_movw,
3411 &feature_avr25,
34122820 },
34132821};
34142822
......@@ -3416,16 +2824,14 @@ pub const cpu_attiny24 = Cpu{
34162824 .name = "attiny24",
34172825 .llvm_name = "attiny24",
34182826 .subfeatures = &[_]*const Feature {
3419 &feature_spm,
34202827 &feature_lpmx,
3421 &feature_ijmpcall,
3422 &feature_sram,
2828 &feature_spm,
34232829 &feature_addsubiw,
34242830 &feature_break,
34252831 &feature_lpm,
3426 &feature_avr0,
2832 &feature_sram,
2833 &feature_ijmpcall,
34272834 &feature_movw,
3428 &feature_avr25,
34292835 },
34302836};
34312837
......@@ -3433,16 +2839,14 @@ pub const cpu_attiny24a = Cpu{
34332839 .name = "attiny24a",
34342840 .llvm_name = "attiny24a",
34352841 .subfeatures = &[_]*const Feature {
3436 &feature_spm,
34372842 &feature_lpmx,
3438 &feature_ijmpcall,
3439 &feature_sram,
2843 &feature_spm,
34402844 &feature_addsubiw,
34412845 &feature_break,
34422846 &feature_lpm,
3443 &feature_avr0,
2847 &feature_sram,
2848 &feature_ijmpcall,
34442849 &feature_movw,
3445 &feature_avr25,
34462850 },
34472851};
34482852
......@@ -3450,16 +2854,14 @@ pub const cpu_attiny25 = Cpu{
34502854 .name = "attiny25",
34512855 .llvm_name = "attiny25",
34522856 .subfeatures = &[_]*const Feature {
3453 &feature_spm,
34542857 &feature_lpmx,
3455 &feature_ijmpcall,
3456 &feature_sram,
2858 &feature_spm,
34572859 &feature_addsubiw,
34582860 &feature_break,
34592861 &feature_lpm,
3460 &feature_avr0,
2862 &feature_sram,
2863 &feature_ijmpcall,
34612864 &feature_movw,
3462 &feature_avr25,
34632865 },
34642866};
34652867
......@@ -3467,12 +2869,10 @@ pub const cpu_attiny26 = Cpu{
34672869 .name = "attiny26",
34682870 .llvm_name = "attiny26",
34692871 .subfeatures = &[_]*const Feature {
3470 &feature_ijmpcall,
3471 &feature_sram,
34722872 &feature_addsubiw,
34732873 &feature_lpm,
3474 &feature_avr0,
3475 &feature_avr2,
2874 &feature_sram,
2875 &feature_ijmpcall,
34762876 &feature_lpmx,
34772877 },
34782878};
......@@ -3481,16 +2881,14 @@ pub const cpu_attiny261 = Cpu{
34812881 .name = "attiny261",
34822882 .llvm_name = "attiny261",
34832883 .subfeatures = &[_]*const Feature {
3484 &feature_spm,
34852884 &feature_lpmx,
3486 &feature_ijmpcall,
3487 &feature_sram,
2885 &feature_spm,
34882886 &feature_addsubiw,
34892887 &feature_break,
34902888 &feature_lpm,
3491 &feature_avr0,
2889 &feature_sram,
2890 &feature_ijmpcall,
34922891 &feature_movw,
3493 &feature_avr25,
34942892 },
34952893};
34962894
......@@ -3498,16 +2896,14 @@ pub const cpu_attiny261a = Cpu{
34982896 .name = "attiny261a",
34992897 .llvm_name = "attiny261a",
35002898 .subfeatures = &[_]*const Feature {
3501 &feature_spm,
35022899 &feature_lpmx,
3503 &feature_ijmpcall,
3504 &feature_sram,
2900 &feature_spm,
35052901 &feature_addsubiw,
35062902 &feature_break,
35072903 &feature_lpm,
3508 &feature_avr0,
2904 &feature_sram,
2905 &feature_ijmpcall,
35092906 &feature_movw,
3510 &feature_avr25,
35112907 },
35122908};
35132909
......@@ -3516,8 +2912,6 @@ pub const cpu_attiny28 = Cpu{
35162912 .llvm_name = "attiny28",
35172913 .subfeatures = &[_]*const Feature {
35182914 &feature_lpm,
3519 &feature_avr0,
3520 &feature_avr1,
35212915 },
35222916};
35232917
......@@ -3525,11 +2919,9 @@ pub const cpu_attiny4 = Cpu{
35252919 .name = "attiny4",
35262920 .llvm_name = "attiny4",
35272921 .subfeatures = &[_]*const Feature {
3528 &feature_avr0,
2922 &feature_break,
35292923 &feature_sram,
35302924 &feature_tinyencoding,
3531 &feature_break,
3532 &feature_avrtiny,
35332925 },
35342926};
35352927
......@@ -3537,11 +2929,9 @@ pub const cpu_attiny40 = Cpu{
35372929 .name = "attiny40",
35382930 .llvm_name = "attiny40",
35392931 .subfeatures = &[_]*const Feature {
3540 &feature_avr0,
2932 &feature_break,
35412933 &feature_sram,
35422934 &feature_tinyencoding,
3543 &feature_break,
3544 &feature_avrtiny,
35452935 },
35462936};
35472937
......@@ -3549,16 +2939,14 @@ pub const cpu_attiny4313 = Cpu{
35492939 .name = "attiny4313",
35502940 .llvm_name = "attiny4313",
35512941 .subfeatures = &[_]*const Feature {
3552 &feature_spm,
35532942 &feature_lpmx,
3554 &feature_ijmpcall,
3555 &feature_sram,
2943 &feature_spm,
35562944 &feature_addsubiw,
35572945 &feature_break,
35582946 &feature_lpm,
3559 &feature_avr0,
2947 &feature_sram,
2948 &feature_ijmpcall,
35602949 &feature_movw,
3561 &feature_avr25,
35622950 },
35632951};
35642952
......@@ -3566,16 +2954,14 @@ pub const cpu_attiny43u = Cpu{
35662954 .name = "attiny43u",
35672955 .llvm_name = "attiny43u",
35682956 .subfeatures = &[_]*const Feature {
3569 &feature_spm,
35702957 &feature_lpmx,
3571 &feature_ijmpcall,
3572 &feature_sram,
2958 &feature_spm,
35732959 &feature_addsubiw,
35742960 &feature_break,
35752961 &feature_lpm,
3576 &feature_avr0,
2962 &feature_sram,
2963 &feature_ijmpcall,
35772964 &feature_movw,
3578 &feature_avr25,
35792965 },
35802966};
35812967
......@@ -3583,16 +2969,14 @@ pub const cpu_attiny44 = Cpu{
35832969 .name = "attiny44",
35842970 .llvm_name = "attiny44",
35852971 .subfeatures = &[_]*const Feature {
3586 &feature_spm,
35872972 &feature_lpmx,
3588 &feature_ijmpcall,
3589 &feature_sram,
2973 &feature_spm,
35902974 &feature_addsubiw,
35912975 &feature_break,
35922976 &feature_lpm,
3593 &feature_avr0,
2977 &feature_sram,
2978 &feature_ijmpcall,
35942979 &feature_movw,
3595 &feature_avr25,
35962980 },
35972981};
35982982
......@@ -3600,16 +2984,14 @@ pub const cpu_attiny44a = Cpu{
36002984 .name = "attiny44a",
36012985 .llvm_name = "attiny44a",
36022986 .subfeatures = &[_]*const Feature {
3603 &feature_spm,
36042987 &feature_lpmx,
3605 &feature_ijmpcall,
3606 &feature_sram,
2988 &feature_spm,
36072989 &feature_addsubiw,
36082990 &feature_break,
36092991 &feature_lpm,
3610 &feature_avr0,
2992 &feature_sram,
2993 &feature_ijmpcall,
36112994 &feature_movw,
3612 &feature_avr25,
36132995 },
36142996};
36152997
......@@ -3617,16 +2999,14 @@ pub const cpu_attiny45 = Cpu{
36172999 .name = "attiny45",
36183000 .llvm_name = "attiny45",
36193001 .subfeatures = &[_]*const Feature {
3620 &feature_spm,
36213002 &feature_lpmx,
3622 &feature_ijmpcall,
3623 &feature_sram,
3003 &feature_spm,
36243004 &feature_addsubiw,
36253005 &feature_break,
36263006 &feature_lpm,
3627 &feature_avr0,
3007 &feature_sram,
3008 &feature_ijmpcall,
36283009 &feature_movw,
3629 &feature_avr25,
36303010 },
36313011};
36323012
......@@ -3634,16 +3014,14 @@ pub const cpu_attiny461 = Cpu{
36343014 .name = "attiny461",
36353015 .llvm_name = "attiny461",
36363016 .subfeatures = &[_]*const Feature {
3637 &feature_spm,
36383017 &feature_lpmx,
3639 &feature_ijmpcall,
3640 &feature_sram,
3018 &feature_spm,
36413019 &feature_addsubiw,
36423020 &feature_break,
36433021 &feature_lpm,
3644 &feature_avr0,
3022 &feature_sram,
3023 &feature_ijmpcall,
36453024 &feature_movw,
3646 &feature_avr25,
36473025 },
36483026};
36493027
......@@ -3651,16 +3029,14 @@ pub const cpu_attiny461a = Cpu{
36513029 .name = "attiny461a",
36523030 .llvm_name = "attiny461a",
36533031 .subfeatures = &[_]*const Feature {
3654 &feature_spm,
36553032 &feature_lpmx,
3656 &feature_ijmpcall,
3657 &feature_sram,
3033 &feature_spm,
36583034 &feature_addsubiw,
36593035 &feature_break,
36603036 &feature_lpm,
3661 &feature_avr0,
3037 &feature_sram,
3038 &feature_ijmpcall,
36623039 &feature_movw,
3663 &feature_avr25,
36643040 },
36653041};
36663042
......@@ -3668,16 +3044,14 @@ pub const cpu_attiny48 = Cpu{
36683044 .name = "attiny48",
36693045 .llvm_name = "attiny48",
36703046 .subfeatures = &[_]*const Feature {
3671 &feature_spm,
36723047 &feature_lpmx,
3673 &feature_ijmpcall,
3674 &feature_sram,
3048 &feature_spm,
36753049 &feature_addsubiw,
36763050 &feature_break,
36773051 &feature_lpm,
3678 &feature_avr0,
3052 &feature_sram,
3053 &feature_ijmpcall,
36793054 &feature_movw,
3680 &feature_avr25,
36813055 },
36823056};
36833057
......@@ -3685,11 +3059,9 @@ pub const cpu_attiny5 = Cpu{
36853059 .name = "attiny5",
36863060 .llvm_name = "attiny5",
36873061 .subfeatures = &[_]*const Feature {
3688 &feature_avr0,
3062 &feature_break,
36893063 &feature_sram,
36903064 &feature_tinyencoding,
3691 &feature_break,
3692 &feature_avrtiny,
36933065 },
36943066};
36953067
......@@ -3697,16 +3069,14 @@ pub const cpu_attiny828 = Cpu{
36973069 .name = "attiny828",
36983070 .llvm_name = "attiny828",
36993071 .subfeatures = &[_]*const Feature {
3700 &feature_spm,
37013072 &feature_lpmx,
3702 &feature_ijmpcall,
3703 &feature_sram,
3073 &feature_spm,
37043074 &feature_addsubiw,
37053075 &feature_break,
37063076 &feature_lpm,
3707 &feature_avr0,
3077 &feature_sram,
3078 &feature_ijmpcall,
37083079 &feature_movw,
3709 &feature_avr25,
37103080 },
37113081};
37123082
......@@ -3714,16 +3084,14 @@ pub const cpu_attiny84 = Cpu{
37143084 .name = "attiny84",
37153085 .llvm_name = "attiny84",
37163086 .subfeatures = &[_]*const Feature {
3717 &feature_spm,
37183087 &feature_lpmx,
3719 &feature_ijmpcall,
3720 &feature_sram,
3088 &feature_spm,
37213089 &feature_addsubiw,
37223090 &feature_break,
37233091 &feature_lpm,
3724 &feature_avr0,
3092 &feature_sram,
3093 &feature_ijmpcall,
37253094 &feature_movw,
3726 &feature_avr25,
37273095 },
37283096};
37293097
......@@ -3731,16 +3099,14 @@ pub const cpu_attiny84a = Cpu{
37313099 .name = "attiny84a",
37323100 .llvm_name = "attiny84a",
37333101 .subfeatures = &[_]*const Feature {
3734 &feature_spm,
37353102 &feature_lpmx,
3736 &feature_ijmpcall,
3737 &feature_sram,
3103 &feature_spm,
37383104 &feature_addsubiw,
37393105 &feature_break,
37403106 &feature_lpm,
3741 &feature_avr0,
3107 &feature_sram,
3108 &feature_ijmpcall,
37423109 &feature_movw,
3743 &feature_avr25,
37443110 },
37453111};
37463112
......@@ -3748,16 +3114,14 @@ pub const cpu_attiny85 = Cpu{
37483114 .name = "attiny85",
37493115 .llvm_name = "attiny85",
37503116 .subfeatures = &[_]*const Feature {
3751 &feature_spm,
37523117 &feature_lpmx,
3753 &feature_ijmpcall,
3754 &feature_sram,
3118 &feature_spm,
37553119 &feature_addsubiw,
37563120 &feature_break,
37573121 &feature_lpm,
3758 &feature_avr0,
3122 &feature_sram,
3123 &feature_ijmpcall,
37593124 &feature_movw,
3760 &feature_avr25,
37613125 },
37623126};
37633127
......@@ -3765,16 +3129,14 @@ pub const cpu_attiny861 = Cpu{
37653129 .name = "attiny861",
37663130 .llvm_name = "attiny861",
37673131 .subfeatures = &[_]*const Feature {
3768 &feature_spm,
37693132 &feature_lpmx,
3770 &feature_ijmpcall,
3771 &feature_sram,
3133 &feature_spm,
37723134 &feature_addsubiw,
37733135 &feature_break,
37743136 &feature_lpm,
3775 &feature_avr0,
3137 &feature_sram,
3138 &feature_ijmpcall,
37763139 &feature_movw,
3777 &feature_avr25,
37783140 },
37793141};
37803142
......@@ -3782,16 +3144,14 @@ pub const cpu_attiny861a = Cpu{
37823144 .name = "attiny861a",
37833145 .llvm_name = "attiny861a",
37843146 .subfeatures = &[_]*const Feature {
3785 &feature_spm,
37863147 &feature_lpmx,
3787 &feature_ijmpcall,
3788 &feature_sram,
3148 &feature_spm,
37893149 &feature_addsubiw,
37903150 &feature_break,
37913151 &feature_lpm,
3792 &feature_avr0,
3152 &feature_sram,
3153 &feature_ijmpcall,
37933154 &feature_movw,
3794 &feature_avr25,
37953155 },
37963156};
37973157
......@@ -3799,16 +3159,14 @@ pub const cpu_attiny87 = Cpu{
37993159 .name = "attiny87",
38003160 .llvm_name = "attiny87",
38013161 .subfeatures = &[_]*const Feature {
3802 &feature_spm,
38033162 &feature_lpmx,
3804 &feature_ijmpcall,
3805 &feature_sram,
3163 &feature_spm,
38063164 &feature_addsubiw,
38073165 &feature_break,
38083166 &feature_lpm,
3809 &feature_avr0,
3167 &feature_sram,
3168 &feature_ijmpcall,
38103169 &feature_movw,
3811 &feature_avr25,
38123170 },
38133171};
38143172
......@@ -3816,16 +3174,14 @@ pub const cpu_attiny88 = Cpu{
38163174 .name = "attiny88",
38173175 .llvm_name = "attiny88",
38183176 .subfeatures = &[_]*const Feature {
3819 &feature_spm,
38203177 &feature_lpmx,
3821 &feature_ijmpcall,
3822 &feature_sram,
3178 &feature_spm,
38233179 &feature_addsubiw,
38243180 &feature_break,
38253181 &feature_lpm,
3826 &feature_avr0,
3182 &feature_sram,
3183 &feature_ijmpcall,
38273184 &feature_movw,
3828 &feature_avr25,
38293185 },
38303186};
38313187
......@@ -3833,11 +3189,9 @@ pub const cpu_attiny9 = Cpu{
38333189 .name = "attiny9",
38343190 .llvm_name = "attiny9",
38353191 .subfeatures = &[_]*const Feature {
3836 &feature_avr0,
3192 &feature_break,
38373193 &feature_sram,
38383194 &feature_tinyencoding,
3839 &feature_break,
3840 &feature_avrtiny,
38413195 },
38423196};
38433197
......@@ -3845,23 +3199,21 @@ pub const cpu_atxmega128a1 = Cpu{
38453199 .name = "atxmega128a1",
38463200 .llvm_name = "atxmega128a1",
38473201 .subfeatures = &[_]*const Feature {
3848 &feature_spm,
38493202 &feature_lpmx,
3850 &feature_des,
3851 &feature_ijmpcall,
3852 &feature_jmpcall,
3853 &feature_sram,
3203 &feature_spm,
38543204 &feature_addsubiw,
3205 &feature_jmpcall,
3206 &feature_lpm,
3207 &feature_break,
3208 &feature_mul,
38553209 &feature_elpm,
38563210 &feature_eijmpcall,
3857 &feature_mul,
3858 &feature_break,
3859 &feature_lpm,
38603211 &feature_elpmx,
3861 &feature_avr0,
3212 &feature_sram,
3213 &feature_des,
3214 &feature_ijmpcall,
38623215 &feature_movw,
38633216 &feature_spmx,
3864 &feature_xmega,
38653217 },
38663218};
38673219
......@@ -3869,24 +3221,22 @@ pub const cpu_atxmega128a1u = Cpu{
38693221 .name = "atxmega128a1u",
38703222 .llvm_name = "atxmega128a1u",
38713223 .subfeatures = &[_]*const Feature {
3872 &feature_spm,
3873 &feature_lpmx,
3874 &feature_des,
3875 &feature_ijmpcall,
3876 &feature_jmpcall,
3877 &feature_sram,
38783224 &feature_rmw,
3225 &feature_lpmx,
3226 &feature_spm,
38793227 &feature_addsubiw,
3228 &feature_jmpcall,
3229 &feature_lpm,
3230 &feature_break,
3231 &feature_mul,
38803232 &feature_elpm,
38813233 &feature_eijmpcall,
3882 &feature_mul,
3883 &feature_break,
3884 &feature_lpm,
38853234 &feature_elpmx,
3886 &feature_avr0,
3887 &feature_movw,
3888 &feature_spmx,
3889 &feature_xmegau,
3235 &feature_sram,
3236 &feature_des,
3237 &feature_ijmpcall,
3238 &feature_movw,
3239 &feature_spmx,
38903240 },
38913241};
38923242
......@@ -3894,23 +3244,21 @@ pub const cpu_atxmega128a3 = Cpu{
38943244 .name = "atxmega128a3",
38953245 .llvm_name = "atxmega128a3",
38963246 .subfeatures = &[_]*const Feature {
3897 &feature_spm,
38983247 &feature_lpmx,
3899 &feature_des,
3900 &feature_ijmpcall,
3901 &feature_jmpcall,
3902 &feature_sram,
3248 &feature_spm,
39033249 &feature_addsubiw,
3250 &feature_jmpcall,
3251 &feature_lpm,
3252 &feature_break,
3253 &feature_mul,
39043254 &feature_elpm,
39053255 &feature_eijmpcall,
3906 &feature_mul,
3907 &feature_break,
3908 &feature_lpm,
39093256 &feature_elpmx,
3910 &feature_avr0,
3257 &feature_sram,
3258 &feature_des,
3259 &feature_ijmpcall,
39113260 &feature_movw,
39123261 &feature_spmx,
3913 &feature_xmega,
39143262 },
39153263};
39163264
......@@ -3918,24 +3266,22 @@ pub const cpu_atxmega128a3u = Cpu{
39183266 .name = "atxmega128a3u",
39193267 .llvm_name = "atxmega128a3u",
39203268 .subfeatures = &[_]*const Feature {
3921 &feature_spm,
3922 &feature_lpmx,
3923 &feature_des,
3924 &feature_ijmpcall,
3925 &feature_jmpcall,
3926 &feature_sram,
39273269 &feature_rmw,
3270 &feature_lpmx,
3271 &feature_spm,
39283272 &feature_addsubiw,
3273 &feature_jmpcall,
3274 &feature_lpm,
3275 &feature_break,
3276 &feature_mul,
39293277 &feature_elpm,
39303278 &feature_eijmpcall,
3931 &feature_mul,
3932 &feature_break,
3933 &feature_lpm,
39343279 &feature_elpmx,
3935 &feature_avr0,
3280 &feature_sram,
3281 &feature_des,
3282 &feature_ijmpcall,
39363283 &feature_movw,
39373284 &feature_spmx,
3938 &feature_xmegau,
39393285 },
39403286};
39413287
......@@ -3943,24 +3289,22 @@ pub const cpu_atxmega128a4u = Cpu{
39433289 .name = "atxmega128a4u",
39443290 .llvm_name = "atxmega128a4u",
39453291 .subfeatures = &[_]*const Feature {
3946 &feature_spm,
3947 &feature_lpmx,
3948 &feature_des,
3949 &feature_ijmpcall,
3950 &feature_jmpcall,
3951 &feature_sram,
39523292 &feature_rmw,
3293 &feature_lpmx,
3294 &feature_spm,
39533295 &feature_addsubiw,
3296 &feature_jmpcall,
3297 &feature_lpm,
3298 &feature_break,
3299 &feature_mul,
39543300 &feature_elpm,
39553301 &feature_eijmpcall,
3956 &feature_mul,
3957 &feature_break,
3958 &feature_lpm,
39593302 &feature_elpmx,
3960 &feature_avr0,
3303 &feature_sram,
3304 &feature_des,
3305 &feature_ijmpcall,
39613306 &feature_movw,
39623307 &feature_spmx,
3963 &feature_xmegau,
39643308 },
39653309};
39663310
......@@ -3968,24 +3312,22 @@ pub const cpu_atxmega128b1 = Cpu{
39683312 .name = "atxmega128b1",
39693313 .llvm_name = "atxmega128b1",
39703314 .subfeatures = &[_]*const Feature {
3971 &feature_spm,
3972 &feature_lpmx,
3973 &feature_des,
3974 &feature_ijmpcall,
3975 &feature_jmpcall,
3976 &feature_sram,
39773315 &feature_rmw,
3316 &feature_lpmx,
3317 &feature_spm,
39783318 &feature_addsubiw,
3319 &feature_jmpcall,
3320 &feature_lpm,
3321 &feature_break,
3322 &feature_mul,
39793323 &feature_elpm,
39803324 &feature_eijmpcall,
3981 &feature_mul,
3982 &feature_break,
3983 &feature_lpm,
39843325 &feature_elpmx,
3985 &feature_avr0,
3326 &feature_sram,
3327 &feature_des,
3328 &feature_ijmpcall,
39863329 &feature_movw,
39873330 &feature_spmx,
3988 &feature_xmegau,
39893331 },
39903332};
39913333
......@@ -3993,24 +3335,22 @@ pub const cpu_atxmega128b3 = Cpu{
39933335 .name = "atxmega128b3",
39943336 .llvm_name = "atxmega128b3",
39953337 .subfeatures = &[_]*const Feature {
3996 &feature_spm,
3997 &feature_lpmx,
3998 &feature_des,
3999 &feature_ijmpcall,
4000 &feature_jmpcall,
4001 &feature_sram,
40023338 &feature_rmw,
3339 &feature_lpmx,
3340 &feature_spm,
40033341 &feature_addsubiw,
3342 &feature_jmpcall,
3343 &feature_lpm,
3344 &feature_break,
3345 &feature_mul,
40043346 &feature_elpm,
40053347 &feature_eijmpcall,
4006 &feature_mul,
4007 &feature_break,
4008 &feature_lpm,
40093348 &feature_elpmx,
4010 &feature_avr0,
3349 &feature_sram,
3350 &feature_des,
3351 &feature_ijmpcall,
40113352 &feature_movw,
40123353 &feature_spmx,
4013 &feature_xmegau,
40143354 },
40153355};
40163356
......@@ -4018,24 +3358,22 @@ pub const cpu_atxmega128c3 = Cpu{
40183358 .name = "atxmega128c3",
40193359 .llvm_name = "atxmega128c3",
40203360 .subfeatures = &[_]*const Feature {
4021 &feature_spm,
4022 &feature_lpmx,
4023 &feature_des,
4024 &feature_ijmpcall,
4025 &feature_jmpcall,
4026 &feature_sram,
40273361 &feature_rmw,
3362 &feature_lpmx,
3363 &feature_spm,
40283364 &feature_addsubiw,
3365 &feature_jmpcall,
3366 &feature_lpm,
3367 &feature_break,
3368 &feature_mul,
40293369 &feature_elpm,
40303370 &feature_eijmpcall,
4031 &feature_mul,
4032 &feature_break,
4033 &feature_lpm,
40343371 &feature_elpmx,
4035 &feature_avr0,
3372 &feature_sram,
3373 &feature_des,
3374 &feature_ijmpcall,
40363375 &feature_movw,
40373376 &feature_spmx,
4038 &feature_xmegau,
40393377 },
40403378};
40413379
......@@ -4043,23 +3381,21 @@ pub const cpu_atxmega128d3 = Cpu{
40433381 .name = "atxmega128d3",
40443382 .llvm_name = "atxmega128d3",
40453383 .subfeatures = &[_]*const Feature {
4046 &feature_spm,
40473384 &feature_lpmx,
4048 &feature_des,
4049 &feature_ijmpcall,
4050 &feature_jmpcall,
4051 &feature_sram,
3385 &feature_spm,
40523386 &feature_addsubiw,
3387 &feature_jmpcall,
3388 &feature_lpm,
3389 &feature_break,
3390 &feature_mul,
40533391 &feature_elpm,
40543392 &feature_eijmpcall,
4055 &feature_mul,
4056 &feature_break,
4057 &feature_lpm,
40583393 &feature_elpmx,
4059 &feature_avr0,
3394 &feature_sram,
3395 &feature_des,
3396 &feature_ijmpcall,
40603397 &feature_movw,
40613398 &feature_spmx,
4062 &feature_xmega,
40633399 },
40643400};
40653401
......@@ -4067,23 +3403,21 @@ pub const cpu_atxmega128d4 = Cpu{
40673403 .name = "atxmega128d4",
40683404 .llvm_name = "atxmega128d4",
40693405 .subfeatures = &[_]*const Feature {
4070 &feature_spm,
40713406 &feature_lpmx,
4072 &feature_des,
4073 &feature_ijmpcall,
4074 &feature_jmpcall,
4075 &feature_sram,
3407 &feature_spm,
40763408 &feature_addsubiw,
3409 &feature_jmpcall,
3410 &feature_lpm,
3411 &feature_break,
3412 &feature_mul,
40773413 &feature_elpm,
40783414 &feature_eijmpcall,
4079 &feature_mul,
4080 &feature_break,
4081 &feature_lpm,
40823415 &feature_elpmx,
4083 &feature_avr0,
3416 &feature_sram,
3417 &feature_des,
3418 &feature_ijmpcall,
40843419 &feature_movw,
40853420 &feature_spmx,
4086 &feature_xmega,
40873421 },
40883422};
40893423
......@@ -4091,23 +3425,21 @@ pub const cpu_atxmega16a4 = Cpu{
40913425 .name = "atxmega16a4",
40923426 .llvm_name = "atxmega16a4",
40933427 .subfeatures = &[_]*const Feature {
4094 &feature_spm,
40953428 &feature_lpmx,
4096 &feature_des,
4097 &feature_ijmpcall,
4098 &feature_jmpcall,
4099 &feature_sram,
3429 &feature_spm,
41003430 &feature_addsubiw,
3431 &feature_jmpcall,
3432 &feature_lpm,
3433 &feature_break,
3434 &feature_mul,
41013435 &feature_elpm,
41023436 &feature_eijmpcall,
4103 &feature_mul,
4104 &feature_break,
4105 &feature_lpm,
41063437 &feature_elpmx,
4107 &feature_avr0,
3438 &feature_sram,
3439 &feature_des,
3440 &feature_ijmpcall,
41083441 &feature_movw,
41093442 &feature_spmx,
4110 &feature_xmega,
41113443 },
41123444};
41133445
......@@ -4115,24 +3447,22 @@ pub const cpu_atxmega16a4u = Cpu{
41153447 .name = "atxmega16a4u",
41163448 .llvm_name = "atxmega16a4u",
41173449 .subfeatures = &[_]*const Feature {
4118 &feature_spm,
4119 &feature_lpmx,
4120 &feature_des,
4121 &feature_ijmpcall,
4122 &feature_jmpcall,
4123 &feature_sram,
41243450 &feature_rmw,
3451 &feature_lpmx,
3452 &feature_spm,
41253453 &feature_addsubiw,
3454 &feature_jmpcall,
3455 &feature_lpm,
3456 &feature_break,
3457 &feature_mul,
41263458 &feature_elpm,
41273459 &feature_eijmpcall,
4128 &feature_mul,
4129 &feature_break,
4130 &feature_lpm,
41313460 &feature_elpmx,
4132 &feature_avr0,
3461 &feature_sram,
3462 &feature_des,
3463 &feature_ijmpcall,
41333464 &feature_movw,
41343465 &feature_spmx,
4135 &feature_xmegau,
41363466 },
41373467};
41383468
......@@ -4140,24 +3470,22 @@ pub const cpu_atxmega16c4 = Cpu{
41403470 .name = "atxmega16c4",
41413471 .llvm_name = "atxmega16c4",
41423472 .subfeatures = &[_]*const Feature {
4143 &feature_spm,
4144 &feature_lpmx,
4145 &feature_des,
4146 &feature_ijmpcall,
4147 &feature_jmpcall,
4148 &feature_sram,
41493473 &feature_rmw,
3474 &feature_lpmx,
3475 &feature_spm,
41503476 &feature_addsubiw,
3477 &feature_jmpcall,
3478 &feature_lpm,
3479 &feature_break,
3480 &feature_mul,
41513481 &feature_elpm,
41523482 &feature_eijmpcall,
4153 &feature_mul,
4154 &feature_break,
4155 &feature_lpm,
41563483 &feature_elpmx,
4157 &feature_avr0,
3484 &feature_sram,
3485 &feature_des,
3486 &feature_ijmpcall,
41583487 &feature_movw,
41593488 &feature_spmx,
4160 &feature_xmegau,
41613489 },
41623490};
41633491
......@@ -4165,23 +3493,21 @@ pub const cpu_atxmega16d4 = Cpu{
41653493 .name = "atxmega16d4",
41663494 .llvm_name = "atxmega16d4",
41673495 .subfeatures = &[_]*const Feature {
4168 &feature_spm,
41693496 &feature_lpmx,
4170 &feature_des,
4171 &feature_ijmpcall,
4172 &feature_jmpcall,
4173 &feature_sram,
3497 &feature_spm,
41743498 &feature_addsubiw,
3499 &feature_jmpcall,
3500 &feature_lpm,
3501 &feature_break,
3502 &feature_mul,
41753503 &feature_elpm,
41763504 &feature_eijmpcall,
4177 &feature_mul,
4178 &feature_break,
4179 &feature_lpm,
41803505 &feature_elpmx,
4181 &feature_avr0,
3506 &feature_sram,
3507 &feature_des,
3508 &feature_ijmpcall,
41823509 &feature_movw,
41833510 &feature_spmx,
4184 &feature_xmega,
41853511 },
41863512};
41873513
......@@ -4189,23 +3515,21 @@ pub const cpu_atxmega16e5 = Cpu{
41893515 .name = "atxmega16e5",
41903516 .llvm_name = "atxmega16e5",
41913517 .subfeatures = &[_]*const Feature {
4192 &feature_spm,
41933518 &feature_lpmx,
4194 &feature_des,
4195 &feature_ijmpcall,
4196 &feature_jmpcall,
4197 &feature_sram,
3519 &feature_spm,
41983520 &feature_addsubiw,
3521 &feature_jmpcall,
3522 &feature_lpm,
3523 &feature_break,
3524 &feature_mul,
41993525 &feature_elpm,
42003526 &feature_eijmpcall,
4201 &feature_mul,
4202 &feature_break,
4203 &feature_lpm,
42043527 &feature_elpmx,
4205 &feature_avr0,
3528 &feature_sram,
3529 &feature_des,
3530 &feature_ijmpcall,
42063531 &feature_movw,
42073532 &feature_spmx,
4208 &feature_xmega,
42093533 },
42103534};
42113535
......@@ -4213,23 +3537,21 @@ pub const cpu_atxmega192a3 = Cpu{
42133537 .name = "atxmega192a3",
42143538 .llvm_name = "atxmega192a3",
42153539 .subfeatures = &[_]*const Feature {
4216 &feature_spm,
42173540 &feature_lpmx,
4218 &feature_des,
4219 &feature_ijmpcall,
4220 &feature_jmpcall,
4221 &feature_sram,
3541 &feature_spm,
42223542 &feature_addsubiw,
3543 &feature_jmpcall,
3544 &feature_lpm,
3545 &feature_break,
3546 &feature_mul,
42233547 &feature_elpm,
42243548 &feature_eijmpcall,
4225 &feature_mul,
4226 &feature_break,
4227 &feature_lpm,
42283549 &feature_elpmx,
4229 &feature_avr0,
3550 &feature_sram,
3551 &feature_des,
3552 &feature_ijmpcall,
42303553 &feature_movw,
42313554 &feature_spmx,
4232 &feature_xmega,
42333555 },
42343556};
42353557
......@@ -4237,24 +3559,22 @@ pub const cpu_atxmega192a3u = Cpu{
42373559 .name = "atxmega192a3u",
42383560 .llvm_name = "atxmega192a3u",
42393561 .subfeatures = &[_]*const Feature {
4240 &feature_spm,
4241 &feature_lpmx,
4242 &feature_des,
4243 &feature_ijmpcall,
4244 &feature_jmpcall,
4245 &feature_sram,
42463562 &feature_rmw,
3563 &feature_lpmx,
3564 &feature_spm,
42473565 &feature_addsubiw,
3566 &feature_jmpcall,
3567 &feature_lpm,
3568 &feature_break,
3569 &feature_mul,
42483570 &feature_elpm,
42493571 &feature_eijmpcall,
4250 &feature_mul,
4251 &feature_break,
4252 &feature_lpm,
42533572 &feature_elpmx,
4254 &feature_avr0,
3573 &feature_sram,
3574 &feature_des,
3575 &feature_ijmpcall,
42553576 &feature_movw,
42563577 &feature_spmx,
4257 &feature_xmegau,
42583578 },
42593579};
42603580
......@@ -4262,24 +3582,22 @@ pub const cpu_atxmega192c3 = Cpu{
42623582 .name = "atxmega192c3",
42633583 .llvm_name = "atxmega192c3",
42643584 .subfeatures = &[_]*const Feature {
4265 &feature_spm,
4266 &feature_lpmx,
4267 &feature_des,
4268 &feature_ijmpcall,
4269 &feature_jmpcall,
4270 &feature_sram,
42713585 &feature_rmw,
3586 &feature_lpmx,
3587 &feature_spm,
42723588 &feature_addsubiw,
3589 &feature_jmpcall,
3590 &feature_lpm,
3591 &feature_break,
3592 &feature_mul,
42733593 &feature_elpm,
42743594 &feature_eijmpcall,
4275 &feature_mul,
4276 &feature_break,
4277 &feature_lpm,
42783595 &feature_elpmx,
4279 &feature_avr0,
3596 &feature_sram,
3597 &feature_des,
3598 &feature_ijmpcall,
42803599 &feature_movw,
42813600 &feature_spmx,
4282 &feature_xmegau,
42833601 },
42843602};
42853603
......@@ -4287,23 +3605,21 @@ pub const cpu_atxmega192d3 = Cpu{
42873605 .name = "atxmega192d3",
42883606 .llvm_name = "atxmega192d3",
42893607 .subfeatures = &[_]*const Feature {
4290 &feature_spm,
42913608 &feature_lpmx,
4292 &feature_des,
4293 &feature_ijmpcall,
4294 &feature_jmpcall,
4295 &feature_sram,
3609 &feature_spm,
42963610 &feature_addsubiw,
3611 &feature_jmpcall,
3612 &feature_lpm,
3613 &feature_break,
3614 &feature_mul,
42973615 &feature_elpm,
42983616 &feature_eijmpcall,
4299 &feature_mul,
4300 &feature_break,
4301 &feature_lpm,
43023617 &feature_elpmx,
4303 &feature_avr0,
3618 &feature_sram,
3619 &feature_des,
3620 &feature_ijmpcall,
43043621 &feature_movw,
43053622 &feature_spmx,
4306 &feature_xmega,
43073623 },
43083624};
43093625
......@@ -4311,23 +3627,21 @@ pub const cpu_atxmega256a3 = Cpu{
43113627 .name = "atxmega256a3",
43123628 .llvm_name = "atxmega256a3",
43133629 .subfeatures = &[_]*const Feature {
4314 &feature_spm,
43153630 &feature_lpmx,
4316 &feature_des,
4317 &feature_ijmpcall,
4318 &feature_jmpcall,
4319 &feature_sram,
3631 &feature_spm,
43203632 &feature_addsubiw,
3633 &feature_jmpcall,
3634 &feature_lpm,
3635 &feature_break,
3636 &feature_mul,
43213637 &feature_elpm,
43223638 &feature_eijmpcall,
4323 &feature_mul,
4324 &feature_break,
4325 &feature_lpm,
43263639 &feature_elpmx,
4327 &feature_avr0,
3640 &feature_sram,
3641 &feature_des,
3642 &feature_ijmpcall,
43283643 &feature_movw,
43293644 &feature_spmx,
4330 &feature_xmega,
43313645 },
43323646};
43333647
......@@ -4335,23 +3649,21 @@ pub const cpu_atxmega256a3b = Cpu{
43353649 .name = "atxmega256a3b",
43363650 .llvm_name = "atxmega256a3b",
43373651 .subfeatures = &[_]*const Feature {
4338 &feature_spm,
43393652 &feature_lpmx,
4340 &feature_des,
4341 &feature_ijmpcall,
4342 &feature_jmpcall,
4343 &feature_sram,
3653 &feature_spm,
43443654 &feature_addsubiw,
3655 &feature_jmpcall,
3656 &feature_lpm,
3657 &feature_break,
3658 &feature_mul,
43453659 &feature_elpm,
43463660 &feature_eijmpcall,
4347 &feature_mul,
4348 &feature_break,
4349 &feature_lpm,
43503661 &feature_elpmx,
4351 &feature_avr0,
3662 &feature_sram,
3663 &feature_des,
3664 &feature_ijmpcall,
43523665 &feature_movw,
43533666 &feature_spmx,
4354 &feature_xmega,
43553667 },
43563668};
43573669
......@@ -4359,24 +3671,22 @@ pub const cpu_atxmega256a3bu = Cpu{
43593671 .name = "atxmega256a3bu",
43603672 .llvm_name = "atxmega256a3bu",
43613673 .subfeatures = &[_]*const Feature {
4362 &feature_spm,
4363 &feature_lpmx,
4364 &feature_des,
4365 &feature_ijmpcall,
4366 &feature_jmpcall,
4367 &feature_sram,
43683674 &feature_rmw,
3675 &feature_lpmx,
3676 &feature_spm,
43693677 &feature_addsubiw,
3678 &feature_jmpcall,
3679 &feature_lpm,
3680 &feature_break,
3681 &feature_mul,
43703682 &feature_elpm,
43713683 &feature_eijmpcall,
4372 &feature_mul,
4373 &feature_break,
4374 &feature_lpm,
43753684 &feature_elpmx,
4376 &feature_avr0,
3685 &feature_sram,
3686 &feature_des,
3687 &feature_ijmpcall,
43773688 &feature_movw,
43783689 &feature_spmx,
4379 &feature_xmegau,
43803690 },
43813691};
43823692
......@@ -4384,24 +3694,22 @@ pub const cpu_atxmega256a3u = Cpu{
43843694 .name = "atxmega256a3u",
43853695 .llvm_name = "atxmega256a3u",
43863696 .subfeatures = &[_]*const Feature {
4387 &feature_spm,
4388 &feature_lpmx,
4389 &feature_des,
4390 &feature_ijmpcall,
4391 &feature_jmpcall,
4392 &feature_sram,
43933697 &feature_rmw,
3698 &feature_lpmx,
3699 &feature_spm,
43943700 &feature_addsubiw,
3701 &feature_jmpcall,
3702 &feature_lpm,
3703 &feature_break,
3704 &feature_mul,
43953705 &feature_elpm,
43963706 &feature_eijmpcall,
4397 &feature_mul,
4398 &feature_break,
4399 &feature_lpm,
44003707 &feature_elpmx,
4401 &feature_avr0,
3708 &feature_sram,
3709 &feature_des,
3710 &feature_ijmpcall,
44023711 &feature_movw,
44033712 &feature_spmx,
4404 &feature_xmegau,
44053713 },
44063714};
44073715
......@@ -4409,24 +3717,22 @@ pub const cpu_atxmega256c3 = Cpu{
44093717 .name = "atxmega256c3",
44103718 .llvm_name = "atxmega256c3",
44113719 .subfeatures = &[_]*const Feature {
4412 &feature_spm,
4413 &feature_lpmx,
4414 &feature_des,
4415 &feature_ijmpcall,
4416 &feature_jmpcall,
4417 &feature_sram,
44183720 &feature_rmw,
3721 &feature_lpmx,
3722 &feature_spm,
44193723 &feature_addsubiw,
3724 &feature_jmpcall,
3725 &feature_lpm,
3726 &feature_break,
3727 &feature_mul,
44203728 &feature_elpm,
44213729 &feature_eijmpcall,
4422 &feature_mul,
4423 &feature_break,
4424 &feature_lpm,
44253730 &feature_elpmx,
4426 &feature_avr0,
3731 &feature_sram,
3732 &feature_des,
3733 &feature_ijmpcall,
44273734 &feature_movw,
44283735 &feature_spmx,
4429 &feature_xmegau,
44303736 },
44313737};
44323738
......@@ -4434,23 +3740,21 @@ pub const cpu_atxmega256d3 = Cpu{
44343740 .name = "atxmega256d3",
44353741 .llvm_name = "atxmega256d3",
44363742 .subfeatures = &[_]*const Feature {
4437 &feature_spm,
44383743 &feature_lpmx,
4439 &feature_des,
4440 &feature_ijmpcall,
4441 &feature_jmpcall,
4442 &feature_sram,
3744 &feature_spm,
44433745 &feature_addsubiw,
3746 &feature_jmpcall,
3747 &feature_lpm,
3748 &feature_break,
3749 &feature_mul,
44443750 &feature_elpm,
44453751 &feature_eijmpcall,
4446 &feature_mul,
4447 &feature_break,
4448 &feature_lpm,
44493752 &feature_elpmx,
4450 &feature_avr0,
3753 &feature_sram,
3754 &feature_des,
3755 &feature_ijmpcall,
44513756 &feature_movw,
44523757 &feature_spmx,
4453 &feature_xmega,
44543758 },
44553759};
44563760
......@@ -4458,23 +3762,21 @@ pub const cpu_atxmega32a4 = Cpu{
44583762 .name = "atxmega32a4",
44593763 .llvm_name = "atxmega32a4",
44603764 .subfeatures = &[_]*const Feature {
4461 &feature_spm,
44623765 &feature_lpmx,
4463 &feature_des,
4464 &feature_ijmpcall,
4465 &feature_jmpcall,
4466 &feature_sram,
3766 &feature_spm,
44673767 &feature_addsubiw,
3768 &feature_jmpcall,
3769 &feature_lpm,
3770 &feature_break,
3771 &feature_mul,
44683772 &feature_elpm,
44693773 &feature_eijmpcall,
4470 &feature_mul,
4471 &feature_break,
4472 &feature_lpm,
44733774 &feature_elpmx,
4474 &feature_avr0,
3775 &feature_sram,
3776 &feature_des,
3777 &feature_ijmpcall,
44753778 &feature_movw,
44763779 &feature_spmx,
4477 &feature_xmega,
44783780 },
44793781};
44803782
......@@ -4482,24 +3784,22 @@ pub const cpu_atxmega32a4u = Cpu{
44823784 .name = "atxmega32a4u",
44833785 .llvm_name = "atxmega32a4u",
44843786 .subfeatures = &[_]*const Feature {
4485 &feature_spm,
4486 &feature_lpmx,
4487 &feature_des,
4488 &feature_ijmpcall,
4489 &feature_jmpcall,
4490 &feature_sram,
44913787 &feature_rmw,
3788 &feature_lpmx,
3789 &feature_spm,
44923790 &feature_addsubiw,
3791 &feature_jmpcall,
3792 &feature_lpm,
3793 &feature_break,
3794 &feature_mul,
44933795 &feature_elpm,
44943796 &feature_eijmpcall,
4495 &feature_mul,
4496 &feature_break,
4497 &feature_lpm,
44983797 &feature_elpmx,
4499 &feature_avr0,
3798 &feature_sram,
3799 &feature_des,
3800 &feature_ijmpcall,
45003801 &feature_movw,
45013802 &feature_spmx,
4502 &feature_xmegau,
45033803 },
45043804};
45053805
......@@ -4507,24 +3807,22 @@ pub const cpu_atxmega32c4 = Cpu{
45073807 .name = "atxmega32c4",
45083808 .llvm_name = "atxmega32c4",
45093809 .subfeatures = &[_]*const Feature {
4510 &feature_spm,
4511 &feature_lpmx,
4512 &feature_des,
4513 &feature_ijmpcall,
4514 &feature_jmpcall,
4515 &feature_sram,
45163810 &feature_rmw,
3811 &feature_lpmx,
3812 &feature_spm,
45173813 &feature_addsubiw,
3814 &feature_jmpcall,
3815 &feature_lpm,
3816 &feature_break,
3817 &feature_mul,
45183818 &feature_elpm,
45193819 &feature_eijmpcall,
4520 &feature_mul,
4521 &feature_break,
4522 &feature_lpm,
45233820 &feature_elpmx,
4524 &feature_avr0,
3821 &feature_sram,
3822 &feature_des,
3823 &feature_ijmpcall,
45253824 &feature_movw,
45263825 &feature_spmx,
4527 &feature_xmegau,
45283826 },
45293827};
45303828
......@@ -4532,23 +3830,21 @@ pub const cpu_atxmega32d4 = Cpu{
45323830 .name = "atxmega32d4",
45333831 .llvm_name = "atxmega32d4",
45343832 .subfeatures = &[_]*const Feature {
4535 &feature_spm,
45363833 &feature_lpmx,
4537 &feature_des,
4538 &feature_ijmpcall,
4539 &feature_jmpcall,
4540 &feature_sram,
3834 &feature_spm,
45413835 &feature_addsubiw,
3836 &feature_jmpcall,
3837 &feature_lpm,
3838 &feature_break,
3839 &feature_mul,
45423840 &feature_elpm,
45433841 &feature_eijmpcall,
4544 &feature_mul,
4545 &feature_break,
4546 &feature_lpm,
45473842 &feature_elpmx,
4548 &feature_avr0,
3843 &feature_sram,
3844 &feature_des,
3845 &feature_ijmpcall,
45493846 &feature_movw,
45503847 &feature_spmx,
4551 &feature_xmega,
45523848 },
45533849};
45543850
......@@ -4556,23 +3852,21 @@ pub const cpu_atxmega32e5 = Cpu{
45563852 .name = "atxmega32e5",
45573853 .llvm_name = "atxmega32e5",
45583854 .subfeatures = &[_]*const Feature {
4559 &feature_spm,
45603855 &feature_lpmx,
4561 &feature_des,
4562 &feature_ijmpcall,
4563 &feature_jmpcall,
4564 &feature_sram,
3856 &feature_spm,
45653857 &feature_addsubiw,
3858 &feature_jmpcall,
3859 &feature_lpm,
3860 &feature_break,
3861 &feature_mul,
45663862 &feature_elpm,
45673863 &feature_eijmpcall,
4568 &feature_mul,
4569 &feature_break,
4570 &feature_lpm,
45713864 &feature_elpmx,
4572 &feature_avr0,
3865 &feature_sram,
3866 &feature_des,
3867 &feature_ijmpcall,
45733868 &feature_movw,
45743869 &feature_spmx,
4575 &feature_xmega,
45763870 },
45773871};
45783872
......@@ -4580,23 +3874,21 @@ pub const cpu_atxmega32x1 = Cpu{
45803874 .name = "atxmega32x1",
45813875 .llvm_name = "atxmega32x1",
45823876 .subfeatures = &[_]*const Feature {
4583 &feature_spm,
45843877 &feature_lpmx,
4585 &feature_des,
4586 &feature_ijmpcall,
4587 &feature_jmpcall,
4588 &feature_sram,
3878 &feature_spm,
45893879 &feature_addsubiw,
3880 &feature_jmpcall,
3881 &feature_lpm,
3882 &feature_break,
3883 &feature_mul,
45903884 &feature_elpm,
45913885 &feature_eijmpcall,
4592 &feature_mul,
4593 &feature_break,
4594 &feature_lpm,
45953886 &feature_elpmx,
4596 &feature_avr0,
3887 &feature_sram,
3888 &feature_des,
3889 &feature_ijmpcall,
45973890 &feature_movw,
45983891 &feature_spmx,
4599 &feature_xmega,
46003892 },
46013893};
46023894
......@@ -4604,24 +3896,22 @@ pub const cpu_atxmega384c3 = Cpu{
46043896 .name = "atxmega384c3",
46053897 .llvm_name = "atxmega384c3",
46063898 .subfeatures = &[_]*const Feature {
4607 &feature_spm,
4608 &feature_lpmx,
4609 &feature_des,
4610 &feature_ijmpcall,
4611 &feature_jmpcall,
4612 &feature_sram,
46133899 &feature_rmw,
3900 &feature_lpmx,
3901 &feature_spm,
46143902 &feature_addsubiw,
3903 &feature_jmpcall,
3904 &feature_lpm,
3905 &feature_break,
3906 &feature_mul,
46153907 &feature_elpm,
46163908 &feature_eijmpcall,
4617 &feature_mul,
4618 &feature_break,
4619 &feature_lpm,
46203909 &feature_elpmx,
4621 &feature_avr0,
3910 &feature_sram,
3911 &feature_des,
3912 &feature_ijmpcall,
46223913 &feature_movw,
46233914 &feature_spmx,
4624 &feature_xmegau,
46253915 },
46263916};
46273917
......@@ -4629,23 +3919,21 @@ pub const cpu_atxmega384d3 = Cpu{
46293919 .name = "atxmega384d3",
46303920 .llvm_name = "atxmega384d3",
46313921 .subfeatures = &[_]*const Feature {
4632 &feature_spm,
46333922 &feature_lpmx,
4634 &feature_des,
4635 &feature_ijmpcall,
4636 &feature_jmpcall,
4637 &feature_sram,
3923 &feature_spm,
46383924 &feature_addsubiw,
3925 &feature_jmpcall,
3926 &feature_lpm,
3927 &feature_break,
3928 &feature_mul,
46393929 &feature_elpm,
46403930 &feature_eijmpcall,
4641 &feature_mul,
4642 &feature_break,
4643 &feature_lpm,
46443931 &feature_elpmx,
4645 &feature_avr0,
3932 &feature_sram,
3933 &feature_des,
3934 &feature_ijmpcall,
46463935 &feature_movw,
46473936 &feature_spmx,
4648 &feature_xmega,
46493937 },
46503938};
46513939
......@@ -4653,23 +3941,21 @@ pub const cpu_atxmega64a1 = Cpu{
46533941 .name = "atxmega64a1",
46543942 .llvm_name = "atxmega64a1",
46553943 .subfeatures = &[_]*const Feature {
4656 &feature_spm,
46573944 &feature_lpmx,
4658 &feature_des,
4659 &feature_ijmpcall,
4660 &feature_jmpcall,
4661 &feature_sram,
3945 &feature_spm,
46623946 &feature_addsubiw,
3947 &feature_jmpcall,
3948 &feature_lpm,
3949 &feature_break,
3950 &feature_mul,
46633951 &feature_elpm,
46643952 &feature_eijmpcall,
4665 &feature_mul,
4666 &feature_break,
4667 &feature_lpm,
46683953 &feature_elpmx,
4669 &feature_avr0,
3954 &feature_sram,
3955 &feature_des,
3956 &feature_ijmpcall,
46703957 &feature_movw,
46713958 &feature_spmx,
4672 &feature_xmega,
46733959 },
46743960};
46753961
......@@ -4677,24 +3963,22 @@ pub const cpu_atxmega64a1u = Cpu{
46773963 .name = "atxmega64a1u",
46783964 .llvm_name = "atxmega64a1u",
46793965 .subfeatures = &[_]*const Feature {
4680 &feature_spm,
4681 &feature_lpmx,
4682 &feature_des,
4683 &feature_ijmpcall,
4684 &feature_jmpcall,
4685 &feature_sram,
46863966 &feature_rmw,
3967 &feature_lpmx,
3968 &feature_spm,
46873969 &feature_addsubiw,
3970 &feature_jmpcall,
3971 &feature_lpm,
3972 &feature_break,
3973 &feature_mul,
46883974 &feature_elpm,
46893975 &feature_eijmpcall,
4690 &feature_mul,
4691 &feature_break,
4692 &feature_lpm,
46933976 &feature_elpmx,
4694 &feature_avr0,
3977 &feature_sram,
3978 &feature_des,
3979 &feature_ijmpcall,
46953980 &feature_movw,
46963981 &feature_spmx,
4697 &feature_xmegau,
46983982 },
46993983};
47003984
......@@ -4702,23 +3986,21 @@ pub const cpu_atxmega64a3 = Cpu{
47023986 .name = "atxmega64a3",
47033987 .llvm_name = "atxmega64a3",
47043988 .subfeatures = &[_]*const Feature {
4705 &feature_spm,
47063989 &feature_lpmx,
4707 &feature_des,
4708 &feature_ijmpcall,
4709 &feature_jmpcall,
4710 &feature_sram,
3990 &feature_spm,
47113991 &feature_addsubiw,
3992 &feature_jmpcall,
3993 &feature_lpm,
3994 &feature_break,
3995 &feature_mul,
47123996 &feature_elpm,
47133997 &feature_eijmpcall,
4714 &feature_mul,
4715 &feature_break,
4716 &feature_lpm,
47173998 &feature_elpmx,
4718 &feature_avr0,
3999 &feature_sram,
4000 &feature_des,
4001 &feature_ijmpcall,
47194002 &feature_movw,
47204003 &feature_spmx,
4721 &feature_xmega,
47224004 },
47234005};
47244006
......@@ -4726,24 +4008,22 @@ pub const cpu_atxmega64a3u = Cpu{
47264008 .name = "atxmega64a3u",
47274009 .llvm_name = "atxmega64a3u",
47284010 .subfeatures = &[_]*const Feature {
4729 &feature_spm,
4730 &feature_lpmx,
4731 &feature_des,
4732 &feature_ijmpcall,
4733 &feature_jmpcall,
4734 &feature_sram,
47354011 &feature_rmw,
4012 &feature_lpmx,
4013 &feature_spm,
47364014 &feature_addsubiw,
4015 &feature_jmpcall,
4016 &feature_lpm,
4017 &feature_break,
4018 &feature_mul,
47374019 &feature_elpm,
47384020 &feature_eijmpcall,
4739 &feature_mul,
4740 &feature_break,
4741 &feature_lpm,
47424021 &feature_elpmx,
4743 &feature_avr0,
4022 &feature_sram,
4023 &feature_des,
4024 &feature_ijmpcall,
47444025 &feature_movw,
47454026 &feature_spmx,
4746 &feature_xmegau,
47474027 },
47484028};
47494029
......@@ -4751,24 +4031,22 @@ pub const cpu_atxmega64a4u = Cpu{
47514031 .name = "atxmega64a4u",
47524032 .llvm_name = "atxmega64a4u",
47534033 .subfeatures = &[_]*const Feature {
4754 &feature_spm,
4755 &feature_lpmx,
4756 &feature_des,
4757 &feature_ijmpcall,
4758 &feature_jmpcall,
4759 &feature_sram,
47604034 &feature_rmw,
4035 &feature_lpmx,
4036 &feature_spm,
47614037 &feature_addsubiw,
4038 &feature_jmpcall,
4039 &feature_lpm,
4040 &feature_break,
4041 &feature_mul,
47624042 &feature_elpm,
47634043 &feature_eijmpcall,
4764 &feature_mul,
4765 &feature_break,
4766 &feature_lpm,
47674044 &feature_elpmx,
4768 &feature_avr0,
4045 &feature_sram,
4046 &feature_des,
4047 &feature_ijmpcall,
47694048 &feature_movw,
47704049 &feature_spmx,
4771 &feature_xmegau,
47724050 },
47734051};
47744052
......@@ -4776,24 +4054,22 @@ pub const cpu_atxmega64b1 = Cpu{
47764054 .name = "atxmega64b1",
47774055 .llvm_name = "atxmega64b1",
47784056 .subfeatures = &[_]*const Feature {
4779 &feature_spm,
4780 &feature_lpmx,
4781 &feature_des,
4782 &feature_ijmpcall,
4783 &feature_jmpcall,
4784 &feature_sram,
47854057 &feature_rmw,
4058 &feature_lpmx,
4059 &feature_spm,
47864060 &feature_addsubiw,
4061 &feature_jmpcall,
4062 &feature_lpm,
4063 &feature_break,
4064 &feature_mul,
47874065 &feature_elpm,
47884066 &feature_eijmpcall,
4789 &feature_mul,
4790 &feature_break,
4791 &feature_lpm,
47924067 &feature_elpmx,
4793 &feature_avr0,
4068 &feature_sram,
4069 &feature_des,
4070 &feature_ijmpcall,
47944071 &feature_movw,
47954072 &feature_spmx,
4796 &feature_xmegau,
47974073 },
47984074};
47994075
......@@ -4801,24 +4077,22 @@ pub const cpu_atxmega64b3 = Cpu{
48014077 .name = "atxmega64b3",
48024078 .llvm_name = "atxmega64b3",
48034079 .subfeatures = &[_]*const Feature {
4804 &feature_spm,
4805 &feature_lpmx,
4806 &feature_des,
4807 &feature_ijmpcall,
4808 &feature_jmpcall,
4809 &feature_sram,
48104080 &feature_rmw,
4081 &feature_lpmx,
4082 &feature_spm,
48114083 &feature_addsubiw,
4084 &feature_jmpcall,
4085 &feature_lpm,
4086 &feature_break,
4087 &feature_mul,
48124088 &feature_elpm,
48134089 &feature_eijmpcall,
4814 &feature_mul,
4815 &feature_break,
4816 &feature_lpm,
48174090 &feature_elpmx,
4818 &feature_avr0,
4091 &feature_sram,
4092 &feature_des,
4093 &feature_ijmpcall,
48194094 &feature_movw,
48204095 &feature_spmx,
4821 &feature_xmegau,
48224096 },
48234097};
48244098
......@@ -4826,24 +4100,22 @@ pub const cpu_atxmega64c3 = Cpu{
48264100 .name = "atxmega64c3",
48274101 .llvm_name = "atxmega64c3",
48284102 .subfeatures = &[_]*const Feature {
4829 &feature_spm,
4830 &feature_lpmx,
4831 &feature_des,
4832 &feature_ijmpcall,
4833 &feature_jmpcall,
4834 &feature_sram,
48354103 &feature_rmw,
4104 &feature_lpmx,
4105 &feature_spm,
48364106 &feature_addsubiw,
4107 &feature_jmpcall,
4108 &feature_lpm,
4109 &feature_break,
4110 &feature_mul,
48374111 &feature_elpm,
48384112 &feature_eijmpcall,
4839 &feature_mul,
4840 &feature_break,
4841 &feature_lpm,
48424113 &feature_elpmx,
4843 &feature_avr0,
4114 &feature_sram,
4115 &feature_des,
4116 &feature_ijmpcall,
48444117 &feature_movw,
48454118 &feature_spmx,
4846 &feature_xmegau,
48474119 },
48484120};
48494121
......@@ -4851,23 +4123,21 @@ pub const cpu_atxmega64d3 = Cpu{
48514123 .name = "atxmega64d3",
48524124 .llvm_name = "atxmega64d3",
48534125 .subfeatures = &[_]*const Feature {
4854 &feature_spm,
48554126 &feature_lpmx,
4856 &feature_des,
4857 &feature_ijmpcall,
4858 &feature_jmpcall,
4859 &feature_sram,
4127 &feature_spm,
48604128 &feature_addsubiw,
4129 &feature_jmpcall,
4130 &feature_lpm,
4131 &feature_break,
4132 &feature_mul,
48614133 &feature_elpm,
48624134 &feature_eijmpcall,
4863 &feature_mul,
4864 &feature_break,
4865 &feature_lpm,
48664135 &feature_elpmx,
4867 &feature_avr0,
4136 &feature_sram,
4137 &feature_des,
4138 &feature_ijmpcall,
48684139 &feature_movw,
48694140 &feature_spmx,
4870 &feature_xmega,
48714141 },
48724142};
48734143
......@@ -4875,23 +4145,21 @@ pub const cpu_atxmega64d4 = Cpu{
48754145 .name = "atxmega64d4",
48764146 .llvm_name = "atxmega64d4",
48774147 .subfeatures = &[_]*const Feature {
4878 &feature_spm,
48794148 &feature_lpmx,
4880 &feature_des,
4881 &feature_ijmpcall,
4882 &feature_jmpcall,
4883 &feature_sram,
4149 &feature_spm,
48844150 &feature_addsubiw,
4151 &feature_jmpcall,
4152 &feature_lpm,
4153 &feature_break,
4154 &feature_mul,
48854155 &feature_elpm,
48864156 &feature_eijmpcall,
4887 &feature_mul,
4888 &feature_break,
4889 &feature_lpm,
48904157 &feature_elpmx,
4891 &feature_avr0,
4158 &feature_sram,
4159 &feature_des,
4160 &feature_ijmpcall,
48924161 &feature_movw,
48934162 &feature_spmx,
4894 &feature_xmega,
48954163 },
48964164};
48974165
......@@ -4899,23 +4167,21 @@ pub const cpu_atxmega8e5 = Cpu{
48994167 .name = "atxmega8e5",
49004168 .llvm_name = "atxmega8e5",
49014169 .subfeatures = &[_]*const Feature {
4902 &feature_spm,
49034170 &feature_lpmx,
4904 &feature_des,
4905 &feature_ijmpcall,
4906 &feature_jmpcall,
4907 &feature_sram,
4171 &feature_spm,
49084172 &feature_addsubiw,
4173 &feature_jmpcall,
4174 &feature_lpm,
4175 &feature_break,
4176 &feature_mul,
49094177 &feature_elpm,
49104178 &feature_eijmpcall,
4911 &feature_mul,
4912 &feature_break,
4913 &feature_lpm,
49144179 &feature_elpmx,
4915 &feature_avr0,
4180 &feature_sram,
4181 &feature_des,
4182 &feature_ijmpcall,
49164183 &feature_movw,
49174184 &feature_spmx,
4918 &feature_xmega,
49194185 },
49204186};
49214187
......@@ -4924,8 +4190,6 @@ pub const cpu_avr1 = Cpu{
49244190 .llvm_name = "avr1",
49254191 .subfeatures = &[_]*const Feature {
49264192 &feature_lpm,
4927 &feature_avr0,
4928 &feature_avr1,
49294193 },
49304194};
49314195
......@@ -4933,12 +4197,10 @@ pub const cpu_avr2 = Cpu{
49334197 .name = "avr2",
49344198 .llvm_name = "avr2",
49354199 .subfeatures = &[_]*const Feature {
4936 &feature_ijmpcall,
4937 &feature_sram,
49384200 &feature_addsubiw,
49394201 &feature_lpm,
4940 &feature_avr0,
4941 &feature_avr2,
4202 &feature_sram,
4203 &feature_ijmpcall,
49424204 },
49434205};
49444206
......@@ -4946,16 +4208,14 @@ pub const cpu_avr25 = Cpu{
49464208 .name = "avr25",
49474209 .llvm_name = "avr25",
49484210 .subfeatures = &[_]*const Feature {
4949 &feature_spm,
49504211 &feature_lpmx,
4951 &feature_ijmpcall,
4952 &feature_sram,
4212 &feature_spm,
49534213 &feature_addsubiw,
49544214 &feature_break,
49554215 &feature_lpm,
4956 &feature_avr0,
4216 &feature_sram,
4217 &feature_ijmpcall,
49574218 &feature_movw,
4958 &feature_avr25,
49594219 },
49604220};
49614221
......@@ -4963,13 +4223,11 @@ pub const cpu_avr3 = Cpu{
49634223 .name = "avr3",
49644224 .llvm_name = "avr3",
49654225 .subfeatures = &[_]*const Feature {
4966 &feature_ijmpcall,
4967 &feature_jmpcall,
4968 &feature_sram,
49694226 &feature_addsubiw,
4227 &feature_jmpcall,
49704228 &feature_lpm,
4971 &feature_avr0,
4972 &feature_avr3,
4229 &feature_sram,
4230 &feature_ijmpcall,
49734231 },
49744232};
49754233
......@@ -4977,14 +4235,12 @@ pub const cpu_avr31 = Cpu{
49774235 .name = "avr31",
49784236 .llvm_name = "avr31",
49794237 .subfeatures = &[_]*const Feature {
4980 &feature_ijmpcall,
4981 &feature_jmpcall,
4982 &feature_sram,
49834238 &feature_addsubiw,
4984 &feature_elpm,
4239 &feature_jmpcall,
49854240 &feature_lpm,
4986 &feature_avr0,
4987 &feature_avr31,
4241 &feature_elpm,
4242 &feature_sram,
4243 &feature_ijmpcall,
49884244 },
49894245};
49904246
......@@ -4992,17 +4248,15 @@ pub const cpu_avr35 = Cpu{
49924248 .name = "avr35",
49934249 .llvm_name = "avr35",
49944250 .subfeatures = &[_]*const Feature {
4995 &feature_spm,
49964251 &feature_lpmx,
4997 &feature_ijmpcall,
4998 &feature_jmpcall,
4999 &feature_sram,
4252 &feature_spm,
50004253 &feature_addsubiw,
5001 &feature_break,
4254 &feature_jmpcall,
50024255 &feature_lpm,
5003 &feature_avr0,
4256 &feature_break,
4257 &feature_sram,
4258 &feature_ijmpcall,
50044259 &feature_movw,
5005 &feature_avr35,
50064260 },
50074261};
50084262
......@@ -5010,17 +4264,15 @@ pub const cpu_avr4 = Cpu{
50104264 .name = "avr4",
50114265 .llvm_name = "avr4",
50124266 .subfeatures = &[_]*const Feature {
5013 &feature_spm,
50144267 &feature_lpmx,
5015 &feature_ijmpcall,
5016 &feature_sram,
4268 &feature_spm,
50174269 &feature_addsubiw,
5018 &feature_mul,
50194270 &feature_break,
50204271 &feature_lpm,
5021 &feature_avr0,
4272 &feature_mul,
4273 &feature_sram,
4274 &feature_ijmpcall,
50224275 &feature_movw,
5023 &feature_avr4,
50244276 },
50254277};
50264278
......@@ -5028,18 +4280,16 @@ pub const cpu_avr5 = Cpu{
50284280 .name = "avr5",
50294281 .llvm_name = "avr5",
50304282 .subfeatures = &[_]*const Feature {
5031 &feature_spm,
50324283 &feature_lpmx,
5033 &feature_ijmpcall,
5034 &feature_jmpcall,
5035 &feature_sram,
4284 &feature_spm,
50364285 &feature_addsubiw,
5037 &feature_mul,
5038 &feature_break,
4286 &feature_jmpcall,
50394287 &feature_lpm,
5040 &feature_avr0,
4288 &feature_break,
4289 &feature_mul,
4290 &feature_sram,
4291 &feature_ijmpcall,
50414292 &feature_movw,
5042 &feature_avr5,
50434293 },
50444294};
50454295
......@@ -5047,20 +4297,18 @@ pub const cpu_avr51 = Cpu{
50474297 .name = "avr51",
50484298 .llvm_name = "avr51",
50494299 .subfeatures = &[_]*const Feature {
5050 &feature_spm,
50514300 &feature_lpmx,
5052 &feature_ijmpcall,
5053 &feature_jmpcall,
5054 &feature_sram,
4301 &feature_spm,
50554302 &feature_addsubiw,
5056 &feature_elpm,
5057 &feature_mul,
5058 &feature_break,
4303 &feature_jmpcall,
50594304 &feature_lpm,
4305 &feature_break,
4306 &feature_mul,
4307 &feature_elpm,
50604308 &feature_elpmx,
5061 &feature_avr0,
4309 &feature_sram,
4310 &feature_ijmpcall,
50624311 &feature_movw,
5063 &feature_avr51,
50644312 },
50654313};
50664314
......@@ -5068,20 +4316,18 @@ pub const cpu_avr6 = Cpu{
50684316 .name = "avr6",
50694317 .llvm_name = "avr6",
50704318 .subfeatures = &[_]*const Feature {
5071 &feature_spm,
50724319 &feature_lpmx,
5073 &feature_ijmpcall,
5074 &feature_jmpcall,
5075 &feature_sram,
4320 &feature_spm,
50764321 &feature_addsubiw,
5077 &feature_elpm,
5078 &feature_mul,
5079 &feature_break,
4322 &feature_jmpcall,
50804323 &feature_lpm,
4324 &feature_break,
4325 &feature_mul,
4326 &feature_elpm,
50814327 &feature_elpmx,
5082 &feature_avr0,
4328 &feature_sram,
4329 &feature_ijmpcall,
50834330 &feature_movw,
5084 &feature_avr6,
50854331 },
50864332};
50874333
......@@ -5089,11 +4335,9 @@ pub const cpu_avrtiny = Cpu{
50894335 .name = "avrtiny",
50904336 .llvm_name = "avrtiny",
50914337 .subfeatures = &[_]*const Feature {
5092 &feature_avr0,
4338 &feature_break,
50934339 &feature_sram,
50944340 &feature_tinyencoding,
5095 &feature_break,
5096 &feature_avrtiny,
50974341 },
50984342};
50994343
......@@ -5101,23 +4345,21 @@ pub const cpu_avrxmega1 = Cpu{
51014345 .name = "avrxmega1",
51024346 .llvm_name = "avrxmega1",
51034347 .subfeatures = &[_]*const Feature {
5104 &feature_spm,
51054348 &feature_lpmx,
5106 &feature_des,
5107 &feature_ijmpcall,
5108 &feature_jmpcall,
5109 &feature_sram,
4349 &feature_spm,
51104350 &feature_addsubiw,
4351 &feature_jmpcall,
4352 &feature_lpm,
4353 &feature_break,
4354 &feature_mul,
51114355 &feature_elpm,
51124356 &feature_eijmpcall,
5113 &feature_mul,
5114 &feature_break,
5115 &feature_lpm,
51164357 &feature_elpmx,
5117 &feature_avr0,
4358 &feature_sram,
4359 &feature_des,
4360 &feature_ijmpcall,
51184361 &feature_movw,
51194362 &feature_spmx,
5120 &feature_xmega,
51214363 },
51224364};
51234365
......@@ -5125,23 +4367,21 @@ pub const cpu_avrxmega2 = Cpu{
51254367 .name = "avrxmega2",
51264368 .llvm_name = "avrxmega2",
51274369 .subfeatures = &[_]*const Feature {
5128 &feature_spm,
51294370 &feature_lpmx,
5130 &feature_des,
5131 &feature_ijmpcall,
5132 &feature_jmpcall,
5133 &feature_sram,
4371 &feature_spm,
51344372 &feature_addsubiw,
4373 &feature_jmpcall,
4374 &feature_lpm,
4375 &feature_break,
4376 &feature_mul,
51354377 &feature_elpm,
51364378 &feature_eijmpcall,
5137 &feature_mul,
5138 &feature_break,
5139 &feature_lpm,
51404379 &feature_elpmx,
5141 &feature_avr0,
4380 &feature_sram,
4381 &feature_des,
4382 &feature_ijmpcall,
51424383 &feature_movw,
51434384 &feature_spmx,
5144 &feature_xmega,
51454385 },
51464386};
51474387
......@@ -5149,23 +4389,21 @@ pub const cpu_avrxmega3 = Cpu{
51494389 .name = "avrxmega3",
51504390 .llvm_name = "avrxmega3",
51514391 .subfeatures = &[_]*const Feature {
5152 &feature_spm,
51534392 &feature_lpmx,
5154 &feature_des,
5155 &feature_ijmpcall,
5156 &feature_jmpcall,
5157 &feature_sram,
4393 &feature_spm,
51584394 &feature_addsubiw,
4395 &feature_jmpcall,
4396 &feature_lpm,
4397 &feature_break,
4398 &feature_mul,
51594399 &feature_elpm,
51604400 &feature_eijmpcall,
5161 &feature_mul,
5162 &feature_break,
5163 &feature_lpm,
51644401 &feature_elpmx,
5165 &feature_avr0,
4402 &feature_sram,
4403 &feature_des,
4404 &feature_ijmpcall,
51664405 &feature_movw,
51674406 &feature_spmx,
5168 &feature_xmega,
51694407 },
51704408};
51714409
......@@ -5173,23 +4411,21 @@ pub const cpu_avrxmega4 = Cpu{
51734411 .name = "avrxmega4",
51744412 .llvm_name = "avrxmega4",
51754413 .subfeatures = &[_]*const Feature {
5176 &feature_spm,
51774414 &feature_lpmx,
5178 &feature_des,
5179 &feature_ijmpcall,
5180 &feature_jmpcall,
5181 &feature_sram,
4415 &feature_spm,
51824416 &feature_addsubiw,
4417 &feature_jmpcall,
4418 &feature_lpm,
4419 &feature_break,
4420 &feature_mul,
51834421 &feature_elpm,
51844422 &feature_eijmpcall,
5185 &feature_mul,
5186 &feature_break,
5187 &feature_lpm,
51884423 &feature_elpmx,
5189 &feature_avr0,
4424 &feature_sram,
4425 &feature_des,
4426 &feature_ijmpcall,
51904427 &feature_movw,
51914428 &feature_spmx,
5192 &feature_xmega,
51934429 },
51944430};
51954431
......@@ -5197,23 +4433,21 @@ pub const cpu_avrxmega5 = Cpu{
51974433 .name = "avrxmega5",
51984434 .llvm_name = "avrxmega5",
51994435 .subfeatures = &[_]*const Feature {
5200 &feature_spm,
52014436 &feature_lpmx,
5202 &feature_des,
5203 &feature_ijmpcall,
5204 &feature_jmpcall,
5205 &feature_sram,
4437 &feature_spm,
52064438 &feature_addsubiw,
4439 &feature_jmpcall,
4440 &feature_lpm,
4441 &feature_break,
4442 &feature_mul,
52074443 &feature_elpm,
52084444 &feature_eijmpcall,
5209 &feature_mul,
5210 &feature_break,
5211 &feature_lpm,
52124445 &feature_elpmx,
5213 &feature_avr0,
4446 &feature_sram,
4447 &feature_des,
4448 &feature_ijmpcall,
52144449 &feature_movw,
52154450 &feature_spmx,
5216 &feature_xmega,
52174451 },
52184452};
52194453
......@@ -5221,23 +4455,21 @@ pub const cpu_avrxmega6 = Cpu{
52214455 .name = "avrxmega6",
52224456 .llvm_name = "avrxmega6",
52234457 .subfeatures = &[_]*const Feature {
5224 &feature_spm,
52254458 &feature_lpmx,
5226 &feature_des,
5227 &feature_ijmpcall,
5228 &feature_jmpcall,
5229 &feature_sram,
4459 &feature_spm,
52304460 &feature_addsubiw,
4461 &feature_jmpcall,
4462 &feature_lpm,
4463 &feature_break,
4464 &feature_mul,
52314465 &feature_elpm,
52324466 &feature_eijmpcall,
5233 &feature_mul,
5234 &feature_break,
5235 &feature_lpm,
52364467 &feature_elpmx,
5237 &feature_avr0,
4468 &feature_sram,
4469 &feature_des,
4470 &feature_ijmpcall,
52384471 &feature_movw,
52394472 &feature_spmx,
5240 &feature_xmega,
52414473 },
52424474};
52434475
......@@ -5245,23 +4477,21 @@ pub const cpu_avrxmega7 = Cpu{
52454477 .name = "avrxmega7",
52464478 .llvm_name = "avrxmega7",
52474479 .subfeatures = &[_]*const Feature {
5248 &feature_spm,
52494480 &feature_lpmx,
5250 &feature_des,
5251 &feature_ijmpcall,
5252 &feature_jmpcall,
5253 &feature_sram,
4481 &feature_spm,
52544482 &feature_addsubiw,
4483 &feature_jmpcall,
4484 &feature_lpm,
4485 &feature_break,
4486 &feature_mul,
52554487 &feature_elpm,
52564488 &feature_eijmpcall,
5257 &feature_mul,
5258 &feature_break,
5259 &feature_lpm,
52604489 &feature_elpmx,
5261 &feature_avr0,
4490 &feature_sram,
4491 &feature_des,
4492 &feature_ijmpcall,
52624493 &feature_movw,
52634494 &feature_spmx,
5264 &feature_xmega,
52654495 },
52664496};
52674497
......@@ -5269,18 +4499,16 @@ pub const cpu_m3000 = Cpu{
52694499 .name = "m3000",
52704500 .llvm_name = "m3000",
52714501 .subfeatures = &[_]*const Feature {
5272 &feature_spm,
52734502 &feature_lpmx,
5274 &feature_ijmpcall,
5275 &feature_jmpcall,
5276 &feature_sram,
4503 &feature_spm,
52774504 &feature_addsubiw,
5278 &feature_mul,
5279 &feature_break,
4505 &feature_jmpcall,
52804506 &feature_lpm,
5281 &feature_avr0,
4507 &feature_break,
4508 &feature_mul,
4509 &feature_sram,
4510 &feature_ijmpcall,
52824511 &feature_movw,
5283 &feature_avr5,
52844512 },
52854513};
52864514
lib/std/target/hexagon.zig-143
......@@ -1,111 +1,6 @@
11const Feature = @import("std").target.Feature;
22const 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
1094pub const feature_duplex = Feature{
1105 .name = "duplex",
1116 .description = "Enable generation of duplex instruction",
......@@ -179,20 +74,6 @@ pub const feature_smallData = Feature{
17974};
18075
18176pub 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,
19677 &feature_duplex,
19778 &feature_longCalls,
19879 &feature_mem_noshuf,
......@@ -209,9 +90,6 @@ pub const cpu_generic = Cpu{
20990 .name = "generic",
21091 .llvm_name = "generic",
21192 .subfeatures = &[_]*const Feature {
212 &feature_v5,
213 &feature_v55,
214 &feature_v60,
21593 &feature_duplex,
21694 &feature_memops,
21795 &feature_packets,
......@@ -225,7 +103,6 @@ pub const cpu_hexagonv5 = Cpu{
225103 .name = "hexagonv5",
226104 .llvm_name = "hexagonv5",
227105 .subfeatures = &[_]*const Feature {
228 &feature_v5,
229106 &feature_duplex,
230107 &feature_memops,
231108 &feature_packets,
......@@ -239,8 +116,6 @@ pub const cpu_hexagonv55 = Cpu{
239116 .name = "hexagonv55",
240117 .llvm_name = "hexagonv55",
241118 .subfeatures = &[_]*const Feature {
242 &feature_v5,
243 &feature_v55,
244119 &feature_duplex,
245120 &feature_memops,
246121 &feature_packets,
......@@ -254,9 +129,6 @@ pub const cpu_hexagonv60 = Cpu{
254129 .name = "hexagonv60",
255130 .llvm_name = "hexagonv60",
256131 .subfeatures = &[_]*const Feature {
257 &feature_v5,
258 &feature_v55,
259 &feature_v60,
260132 &feature_duplex,
261133 &feature_memops,
262134 &feature_packets,
......@@ -270,10 +142,6 @@ pub const cpu_hexagonv62 = Cpu{
270142 .name = "hexagonv62",
271143 .llvm_name = "hexagonv62",
272144 .subfeatures = &[_]*const Feature {
273 &feature_v5,
274 &feature_v55,
275 &feature_v60,
276 &feature_v62,
277145 &feature_duplex,
278146 &feature_memops,
279147 &feature_packets,
......@@ -287,11 +155,6 @@ pub const cpu_hexagonv65 = Cpu{
287155 .name = "hexagonv65",
288156 .llvm_name = "hexagonv65",
289157 .subfeatures = &[_]*const Feature {
290 &feature_v5,
291 &feature_v55,
292 &feature_v60,
293 &feature_v62,
294 &feature_v65,
295158 &feature_duplex,
296159 &feature_mem_noshuf,
297160 &feature_memops,
......@@ -306,12 +169,6 @@ pub const cpu_hexagonv66 = Cpu{
306169 .name = "hexagonv66",
307170 .llvm_name = "hexagonv66",
308171 .subfeatures = &[_]*const Feature {
309 &feature_v5,
310 &feature_v55,
311 &feature_v60,
312 &feature_v62,
313 &feature_v65,
314 &feature_v66,
315172 &feature_duplex,
316173 &feature_mem_noshuf,
317174 &feature_memops,
lib/std/target/mips.zig+108-108
......@@ -19,14 +19,14 @@ pub const feature_cnmips = Feature{
1919 .name = "cnmips",
2020 .description = "Octeon cnMIPS Support",
2121 .subfeatures = &[_]*const Feature {
22 &feature_mips3_32r2,
23 &feature_mips3_32,
22 &feature_fp64,
2423 &feature_mips4_32r2,
2524 &feature_mips1,
26 &feature_fp64,
27 &feature_mips5_32r2,
2825 &feature_gp64,
2926 &feature_mips4_32,
27 &feature_mips5_32r2,
28 &feature_mips3_32r2,
29 &feature_mips3_32,
3030 },
3131};
3232
......@@ -142,11 +142,11 @@ pub const feature_mips3 = Feature{
142142 .name = "mips3",
143143 .description = "MIPS III ISA Support [highly experimental]",
144144 .subfeatures = &[_]*const Feature {
145 &feature_mips3_32r2,
146 &feature_mips3_32,
147 &feature_mips1,
148145 &feature_fp64,
146 &feature_mips1,
149147 &feature_gp64,
148 &feature_mips3_32r2,
149 &feature_mips3_32,
150150 },
151151};
152152
......@@ -168,13 +168,13 @@ pub const feature_mips4 = Feature{
168168 .name = "mips4",
169169 .description = "MIPS IV ISA Support",
170170 .subfeatures = &[_]*const Feature {
171 &feature_mips3_32r2,
172 &feature_mips3_32,
171 &feature_fp64,
173172 &feature_mips4_32r2,
174173 &feature_mips1,
175 &feature_fp64,
176174 &feature_gp64,
177175 &feature_mips4_32,
176 &feature_mips3_32r2,
177 &feature_mips3_32,
178178 },
179179};
180180
......@@ -196,14 +196,14 @@ pub const feature_mips5 = Feature{
196196 .name = "mips5",
197197 .description = "MIPS V ISA Support [highly experimental]",
198198 .subfeatures = &[_]*const Feature {
199 &feature_mips3_32r2,
200 &feature_mips3_32,
199 &feature_fp64,
201200 &feature_mips4_32r2,
202201 &feature_mips1,
203 &feature_fp64,
204 &feature_mips5_32r2,
205202 &feature_gp64,
206203 &feature_mips4_32,
204 &feature_mips5_32r2,
205 &feature_mips3_32r2,
206 &feature_mips3_32,
207207 },
208208};
209209
......@@ -235,12 +235,12 @@ pub const feature_mips32r2 = Feature{
235235 .name = "mips32r2",
236236 .description = "Mips32r2 ISA Support",
237237 .subfeatures = &[_]*const Feature {
238 &feature_mips3_32r2,
239 &feature_mips3_32,
240238 &feature_mips4_32r2,
241239 &feature_mips1,
242 &feature_mips5_32r2,
243240 &feature_mips4_32,
241 &feature_mips5_32r2,
242 &feature_mips3_32r2,
243 &feature_mips3_32,
244244 },
245245};
246246
......@@ -248,12 +248,12 @@ pub const feature_mips32r3 = Feature{
248248 .name = "mips32r3",
249249 .description = "Mips32r3 ISA Support",
250250 .subfeatures = &[_]*const Feature {
251 &feature_mips3_32r2,
252 &feature_mips3_32,
253251 &feature_mips4_32r2,
254252 &feature_mips1,
255 &feature_mips5_32r2,
256253 &feature_mips4_32,
254 &feature_mips5_32r2,
255 &feature_mips3_32r2,
256 &feature_mips3_32,
257257 },
258258};
259259
......@@ -261,12 +261,12 @@ pub const feature_mips32r5 = Feature{
261261 .name = "mips32r5",
262262 .description = "Mips32r5 ISA Support",
263263 .subfeatures = &[_]*const Feature {
264 &feature_mips3_32r2,
265 &feature_mips3_32,
266264 &feature_mips4_32r2,
267265 &feature_mips1,
268 &feature_mips5_32r2,
269266 &feature_mips4_32,
267 &feature_mips5_32r2,
268 &feature_mips3_32r2,
269 &feature_mips3_32,
270270 },
271271};
272272
......@@ -274,15 +274,15 @@ pub const feature_mips32r6 = Feature{
274274 .name = "mips32r6",
275275 .description = "Mips32r6 ISA Support [experimental]",
276276 .subfeatures = &[_]*const Feature {
277 &feature_mips3_32r2,
278 &feature_mips3_32,
279 &feature_nan2008,
280 &feature_mips4_32r2,
281 &feature_mips1,
282277 &feature_abs2008,
283278 &feature_fp64,
284 &feature_mips5_32r2,
279 &feature_mips4_32r2,
280 &feature_nan2008,
281 &feature_mips1,
285282 &feature_mips4_32,
283 &feature_mips5_32r2,
284 &feature_mips3_32r2,
285 &feature_mips3_32,
286286 },
287287};
288288
......@@ -290,14 +290,14 @@ pub const feature_mips64 = Feature{
290290 .name = "mips64",
291291 .description = "Mips64 ISA Support",
292292 .subfeatures = &[_]*const Feature {
293 &feature_mips3_32r2,
294 &feature_mips3_32,
293 &feature_fp64,
295294 &feature_mips4_32r2,
296295 &feature_mips1,
297 &feature_fp64,
298 &feature_mips5_32r2,
299296 &feature_gp64,
300297 &feature_mips4_32,
298 &feature_mips5_32r2,
299 &feature_mips3_32r2,
300 &feature_mips3_32,
301301 },
302302};
303303
......@@ -305,14 +305,14 @@ pub const feature_mips64r2 = Feature{
305305 .name = "mips64r2",
306306 .description = "Mips64r2 ISA Support",
307307 .subfeatures = &[_]*const Feature {
308 &feature_mips3_32r2,
309 &feature_mips3_32,
308 &feature_fp64,
310309 &feature_mips4_32r2,
311310 &feature_mips1,
312 &feature_fp64,
313 &feature_mips5_32r2,
314311 &feature_gp64,
315312 &feature_mips4_32,
313 &feature_mips5_32r2,
314 &feature_mips3_32r2,
315 &feature_mips3_32,
316316 },
317317};
318318
......@@ -320,14 +320,14 @@ pub const feature_mips64r3 = Feature{
320320 .name = "mips64r3",
321321 .description = "Mips64r3 ISA Support",
322322 .subfeatures = &[_]*const Feature {
323 &feature_mips3_32r2,
324 &feature_mips3_32,
323 &feature_fp64,
325324 &feature_mips4_32r2,
326325 &feature_mips1,
327 &feature_fp64,
328 &feature_mips5_32r2,
329326 &feature_gp64,
330327 &feature_mips4_32,
328 &feature_mips5_32r2,
329 &feature_mips3_32r2,
330 &feature_mips3_32,
331331 },
332332};
333333
......@@ -335,14 +335,14 @@ pub const feature_mips64r5 = Feature{
335335 .name = "mips64r5",
336336 .description = "Mips64r5 ISA Support",
337337 .subfeatures = &[_]*const Feature {
338 &feature_mips3_32r2,
339 &feature_mips3_32,
338 &feature_fp64,
340339 &feature_mips4_32r2,
341340 &feature_mips1,
342 &feature_fp64,
343 &feature_mips5_32r2,
344341 &feature_gp64,
345342 &feature_mips4_32,
343 &feature_mips5_32r2,
344 &feature_mips3_32r2,
345 &feature_mips3_32,
346346 },
347347};
348348
......@@ -350,16 +350,16 @@ pub const feature_mips64r6 = Feature{
350350 .name = "mips64r6",
351351 .description = "Mips64r6 ISA Support [experimental]",
352352 .subfeatures = &[_]*const Feature {
353 &feature_mips3_32r2,
354 &feature_mips3_32,
355 &feature_nan2008,
356 &feature_mips4_32r2,
357 &feature_mips1,
358353 &feature_abs2008,
359354 &feature_fp64,
360 &feature_mips5_32r2,
355 &feature_mips4_32r2,
356 &feature_mips1,
361357 &feature_gp64,
358 &feature_mips5_32r2,
362359 &feature_mips4_32,
360 &feature_nan2008,
361 &feature_mips3_32r2,
362 &feature_mips3_32,
363363 },
364364};
365365
......@@ -451,12 +451,12 @@ pub const feature_p5600 = Feature{
451451 .name = "p5600",
452452 .description = "The P5600 Processor",
453453 .subfeatures = &[_]*const Feature {
454 &feature_mips3_32r2,
455 &feature_mips3_32,
456454 &feature_mips4_32r2,
457455 &feature_mips1,
458 &feature_mips5_32r2,
459456 &feature_mips4_32,
457 &feature_mips5_32r2,
458 &feature_mips3_32r2,
459 &feature_mips3_32,
460460 },
461461};
462462
......@@ -534,11 +534,11 @@ pub const cpu_mips3 = Cpu{
534534 .name = "mips3",
535535 .llvm_name = "mips3",
536536 .subfeatures = &[_]*const Feature {
537 &feature_mips3_32r2,
538 &feature_mips3_32,
539 &feature_mips1,
540537 &feature_fp64,
538 &feature_mips1,
541539 &feature_gp64,
540 &feature_mips3_32r2,
541 &feature_mips3_32,
542542 &feature_mips3,
543543 },
544544};
......@@ -558,12 +558,12 @@ pub const cpu_mips32r2 = Cpu{
558558 .name = "mips32r2",
559559 .llvm_name = "mips32r2",
560560 .subfeatures = &[_]*const Feature {
561 &feature_mips3_32r2,
562 &feature_mips3_32,
563561 &feature_mips4_32r2,
564562 &feature_mips1,
565 &feature_mips5_32r2,
566563 &feature_mips4_32,
564 &feature_mips5_32r2,
565 &feature_mips3_32r2,
566 &feature_mips3_32,
567567 &feature_mips32r2,
568568 },
569569};
......@@ -572,12 +572,12 @@ pub const cpu_mips32r3 = Cpu{
572572 .name = "mips32r3",
573573 .llvm_name = "mips32r3",
574574 .subfeatures = &[_]*const Feature {
575 &feature_mips3_32r2,
576 &feature_mips3_32,
577575 &feature_mips4_32r2,
578576 &feature_mips1,
579 &feature_mips5_32r2,
580577 &feature_mips4_32,
578 &feature_mips5_32r2,
579 &feature_mips3_32r2,
580 &feature_mips3_32,
581581 &feature_mips32r3,
582582 },
583583};
......@@ -586,12 +586,12 @@ pub const cpu_mips32r5 = Cpu{
586586 .name = "mips32r5",
587587 .llvm_name = "mips32r5",
588588 .subfeatures = &[_]*const Feature {
589 &feature_mips3_32r2,
590 &feature_mips3_32,
591589 &feature_mips4_32r2,
592590 &feature_mips1,
593 &feature_mips5_32r2,
594591 &feature_mips4_32,
592 &feature_mips5_32r2,
593 &feature_mips3_32r2,
594 &feature_mips3_32,
595595 &feature_mips32r5,
596596 },
597597};
......@@ -600,15 +600,15 @@ pub const cpu_mips32r6 = Cpu{
600600 .name = "mips32r6",
601601 .llvm_name = "mips32r6",
602602 .subfeatures = &[_]*const Feature {
603 &feature_mips3_32r2,
604 &feature_mips3_32,
605 &feature_nan2008,
606 &feature_mips4_32r2,
607 &feature_mips1,
608603 &feature_abs2008,
609604 &feature_fp64,
610 &feature_mips5_32r2,
605 &feature_mips4_32r2,
606 &feature_nan2008,
607 &feature_mips1,
611608 &feature_mips4_32,
609 &feature_mips5_32r2,
610 &feature_mips3_32r2,
611 &feature_mips3_32,
612612 &feature_mips32r6,
613613 },
614614};
......@@ -617,13 +617,13 @@ pub const cpu_mips4 = Cpu{
617617 .name = "mips4",
618618 .llvm_name = "mips4",
619619 .subfeatures = &[_]*const Feature {
620 &feature_mips3_32r2,
621 &feature_mips3_32,
620 &feature_fp64,
622621 &feature_mips4_32r2,
623622 &feature_mips1,
624 &feature_fp64,
625623 &feature_gp64,
626624 &feature_mips4_32,
625 &feature_mips3_32r2,
626 &feature_mips3_32,
627627 &feature_mips4,
628628 },
629629};
......@@ -632,14 +632,14 @@ pub const cpu_mips5 = Cpu{
632632 .name = "mips5",
633633 .llvm_name = "mips5",
634634 .subfeatures = &[_]*const Feature {
635 &feature_mips3_32r2,
636 &feature_mips3_32,
635 &feature_fp64,
637636 &feature_mips4_32r2,
638637 &feature_mips1,
639 &feature_fp64,
640 &feature_mips5_32r2,
641638 &feature_gp64,
642639 &feature_mips4_32,
640 &feature_mips5_32r2,
641 &feature_mips3_32r2,
642 &feature_mips3_32,
643643 &feature_mips5,
644644 },
645645};
......@@ -648,14 +648,14 @@ pub const cpu_mips64 = Cpu{
648648 .name = "mips64",
649649 .llvm_name = "mips64",
650650 .subfeatures = &[_]*const Feature {
651 &feature_mips3_32r2,
652 &feature_mips3_32,
651 &feature_fp64,
653652 &feature_mips4_32r2,
654653 &feature_mips1,
655 &feature_fp64,
656 &feature_mips5_32r2,
657654 &feature_gp64,
658655 &feature_mips4_32,
656 &feature_mips5_32r2,
657 &feature_mips3_32r2,
658 &feature_mips3_32,
659659 &feature_mips64,
660660 },
661661};
......@@ -664,14 +664,14 @@ pub const cpu_mips64r2 = Cpu{
664664 .name = "mips64r2",
665665 .llvm_name = "mips64r2",
666666 .subfeatures = &[_]*const Feature {
667 &feature_mips3_32r2,
668 &feature_mips3_32,
667 &feature_fp64,
669668 &feature_mips4_32r2,
670669 &feature_mips1,
671 &feature_fp64,
672 &feature_mips5_32r2,
673670 &feature_gp64,
674671 &feature_mips4_32,
672 &feature_mips5_32r2,
673 &feature_mips3_32r2,
674 &feature_mips3_32,
675675 &feature_mips64r2,
676676 },
677677};
......@@ -680,14 +680,14 @@ pub const cpu_mips64r3 = Cpu{
680680 .name = "mips64r3",
681681 .llvm_name = "mips64r3",
682682 .subfeatures = &[_]*const Feature {
683 &feature_mips3_32r2,
684 &feature_mips3_32,
683 &feature_fp64,
685684 &feature_mips4_32r2,
686685 &feature_mips1,
687 &feature_fp64,
688 &feature_mips5_32r2,
689686 &feature_gp64,
690687 &feature_mips4_32,
688 &feature_mips5_32r2,
689 &feature_mips3_32r2,
690 &feature_mips3_32,
691691 &feature_mips64r3,
692692 },
693693};
......@@ -696,14 +696,14 @@ pub const cpu_mips64r5 = Cpu{
696696 .name = "mips64r5",
697697 .llvm_name = "mips64r5",
698698 .subfeatures = &[_]*const Feature {
699 &feature_mips3_32r2,
700 &feature_mips3_32,
699 &feature_fp64,
701700 &feature_mips4_32r2,
702701 &feature_mips1,
703 &feature_fp64,
704 &feature_mips5_32r2,
705702 &feature_gp64,
706703 &feature_mips4_32,
704 &feature_mips5_32r2,
705 &feature_mips3_32r2,
706 &feature_mips3_32,
707707 &feature_mips64r5,
708708 },
709709};
......@@ -712,16 +712,16 @@ pub const cpu_mips64r6 = Cpu{
712712 .name = "mips64r6",
713713 .llvm_name = "mips64r6",
714714 .subfeatures = &[_]*const Feature {
715 &feature_mips3_32r2,
716 &feature_mips3_32,
717 &feature_nan2008,
718 &feature_mips4_32r2,
719 &feature_mips1,
720715 &feature_abs2008,
721716 &feature_fp64,
722 &feature_mips5_32r2,
717 &feature_mips4_32r2,
718 &feature_mips1,
723719 &feature_gp64,
720 &feature_mips5_32r2,
724721 &feature_mips4_32,
722 &feature_nan2008,
723 &feature_mips3_32r2,
724 &feature_mips3_32,
725725 &feature_mips64r6,
726726 },
727727};
......@@ -730,14 +730,14 @@ pub const cpu_octeon = Cpu{
730730 .name = "octeon",
731731 .llvm_name = "octeon",
732732 .subfeatures = &[_]*const Feature {
733 &feature_mips3_32r2,
734 &feature_mips3_32,
733 &feature_fp64,
735734 &feature_mips4_32r2,
736735 &feature_mips1,
737 &feature_fp64,
738 &feature_mips5_32r2,
739736 &feature_gp64,
740737 &feature_mips4_32,
738 &feature_mips5_32r2,
739 &feature_mips3_32r2,
740 &feature_mips3_32,
741741 &feature_cnmips,
742742 &feature_mips64r2,
743743 },
......@@ -747,12 +747,12 @@ pub const cpu_p5600 = Cpu{
747747 .name = "p5600",
748748 .llvm_name = "p5600",
749749 .subfeatures = &[_]*const Feature {
750 &feature_mips3_32r2,
751 &feature_mips3_32,
752750 &feature_mips4_32r2,
753751 &feature_mips1,
754 &feature_mips5_32r2,
755752 &feature_mips4_32,
753 &feature_mips5_32r2,
754 &feature_mips3_32r2,
755 &feature_mips3_32,
756756 &feature_p5600,
757757 },
758758};
lib/std/target/powerpc.zig+2-2
......@@ -261,8 +261,8 @@ pub const feature_power9Altivec = Feature{
261261 .name = "power9-altivec",
262262 .description = "Enable POWER9 Altivec instructions",
263263 .subfeatures = &[_]*const Feature {
264 &feature_hardFloat,
265264 &feature_isaV30Instructions,
265 &feature_hardFloat,
266266 },
267267};
268268
......@@ -270,8 +270,8 @@ pub const feature_power9Vector = Feature{
270270 .name = "power9-vector",
271271 .description = "Enable POWER9 vector instructions",
272272 .subfeatures = &[_]*const Feature {
273 &feature_hardFloat,
274273 &feature_isaV30Instructions,
274 &feature_hardFloat,
275275 },
276276};
277277
lib/std/target/sparc.zig-85
......@@ -1,13 +1,6 @@
11const Feature = @import("std").target.Feature;
22const 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
114pub const feature_hardQuadFloat = Feature{
125 .name = "hard-quad-float",
136 .description = "Enable quad-word floating point instructions",
......@@ -92,50 +85,7 @@ pub const feature_vis3 = Feature{
9285 },
9386};
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
13788pub const features = &[_]*const Feature {
138 &feature_detectroundchange,
13989 &feature_hardQuadFloat,
14090 &feature_leon,
14191 &feature_noFmuls,
......@@ -148,12 +98,6 @@ pub const features = &[_]*const Feature {
14898 &feature_vis,
14999 &feature_vis2,
150100 &feature_vis3,
151 &feature_fixallfdivsqrt,
152 &feature_insertnopload,
153 &feature_hasleoncasa,
154 &feature_leoncyclecounter,
155 &feature_hasumacsmac,
156 &feature_popc,
157101};
158102
159103pub const cpu_at697e = Cpu{
......@@ -161,7 +105,6 @@ pub const cpu_at697e = Cpu{
161105 .llvm_name = "at697e",
162106 .subfeatures = &[_]*const Feature {
163107 &feature_leon,
164 &feature_insertnopload,
165108 },
166109};
167110
......@@ -170,7 +113,6 @@ pub const cpu_at697f = Cpu{
170113 .llvm_name = "at697f",
171114 .subfeatures = &[_]*const Feature {
172115 &feature_leon,
173 &feature_insertnopload,
174116 },
175117};
176118
......@@ -193,7 +135,6 @@ pub const cpu_gr712rc = Cpu{
193135 .llvm_name = "gr712rc",
194136 .subfeatures = &[_]*const Feature {
195137 &feature_leon,
196 &feature_hasleoncasa,
197138 },
198139};
199140
......@@ -203,9 +144,6 @@ pub const cpu_gr740 = Cpu{
203144 .subfeatures = &[_]*const Feature {
204145 &feature_leon,
205146 &feature_leonpwrpsr,
206 &feature_hasleoncasa,
207 &feature_leoncyclecounter,
208 &feature_hasumacsmac,
209147 },
210148};
211149
......@@ -229,7 +167,6 @@ pub const cpu_leon3 = Cpu{
229167 .llvm_name = "leon3",
230168 .subfeatures = &[_]*const Feature {
231169 &feature_leon,
232 &feature_hasumacsmac,
233170 },
234171};
235172
......@@ -238,8 +175,6 @@ pub const cpu_leon4 = Cpu{
238175 .llvm_name = "leon4",
239176 .subfeatures = &[_]*const Feature {
240177 &feature_leon,
241 &feature_hasleoncasa,
242 &feature_hasumacsmac,
243178 },
244179};
245180
......@@ -248,7 +183,6 @@ pub const cpu_ma2080 = Cpu{
248183 .llvm_name = "ma2080",
249184 .subfeatures = &[_]*const Feature {
250185 &feature_leon,
251 &feature_hasleoncasa,
252186 },
253187};
254188
......@@ -257,7 +191,6 @@ pub const cpu_ma2085 = Cpu{
257191 .llvm_name = "ma2085",
258192 .subfeatures = &[_]*const Feature {
259193 &feature_leon,
260 &feature_hasleoncasa,
261194 },
262195};
263196
......@@ -266,7 +199,6 @@ pub const cpu_ma2100 = Cpu{
266199 .llvm_name = "ma2100",
267200 .subfeatures = &[_]*const Feature {
268201 &feature_leon,
269 &feature_hasleoncasa,
270202 },
271203};
272204
......@@ -275,7 +207,6 @@ pub const cpu_ma2150 = Cpu{
275207 .llvm_name = "ma2150",
276208 .subfeatures = &[_]*const Feature {
277209 &feature_leon,
278 &feature_hasleoncasa,
279210 },
280211};
281212
......@@ -284,7 +215,6 @@ pub const cpu_ma2155 = Cpu{
284215 .llvm_name = "ma2155",
285216 .subfeatures = &[_]*const Feature {
286217 &feature_leon,
287 &feature_hasleoncasa,
288218 },
289219};
290220
......@@ -293,7 +223,6 @@ pub const cpu_ma2450 = Cpu{
293223 .llvm_name = "ma2450",
294224 .subfeatures = &[_]*const Feature {
295225 &feature_leon,
296 &feature_hasleoncasa,
297226 },
298227};
299228
......@@ -302,7 +231,6 @@ pub const cpu_ma2455 = Cpu{
302231 .llvm_name = "ma2455",
303232 .subfeatures = &[_]*const Feature {
304233 &feature_leon,
305 &feature_hasleoncasa,
306234 },
307235};
308236
......@@ -311,7 +239,6 @@ pub const cpu_ma2480 = Cpu{
311239 .llvm_name = "ma2480",
312240 .subfeatures = &[_]*const Feature {
313241 &feature_leon,
314 &feature_hasleoncasa,
315242 },
316243};
317244
......@@ -320,7 +247,6 @@ pub const cpu_ma2485 = Cpu{
320247 .llvm_name = "ma2485",
321248 .subfeatures = &[_]*const Feature {
322249 &feature_leon,
323 &feature_hasleoncasa,
324250 },
325251};
326252
......@@ -329,7 +255,6 @@ pub const cpu_ma2x5x = Cpu{
329255 .llvm_name = "ma2x5x",
330256 .subfeatures = &[_]*const Feature {
331257 &feature_leon,
332 &feature_hasleoncasa,
333258 },
334259};
335260
......@@ -338,7 +263,6 @@ pub const cpu_ma2x8x = Cpu{
338263 .llvm_name = "ma2x8x",
339264 .subfeatures = &[_]*const Feature {
340265 &feature_leon,
341 &feature_hasleoncasa,
342266 },
343267};
344268
......@@ -347,7 +271,6 @@ pub const cpu_myriad2 = Cpu{
347271 .llvm_name = "myriad2",
348272 .subfeatures = &[_]*const Feature {
349273 &feature_leon,
350 &feature_hasleoncasa,
351274 },
352275};
353276
......@@ -356,7 +279,6 @@ pub const cpu_myriad21 = Cpu{
356279 .llvm_name = "myriad2.1",
357280 .subfeatures = &[_]*const Feature {
358281 &feature_leon,
359 &feature_hasleoncasa,
360282 },
361283};
362284
......@@ -365,7 +287,6 @@ pub const cpu_myriad22 = Cpu{
365287 .llvm_name = "myriad2.2",
366288 .subfeatures = &[_]*const Feature {
367289 &feature_leon,
368 &feature_hasleoncasa,
369290 },
370291};
371292
......@@ -374,7 +295,6 @@ pub const cpu_myriad23 = Cpu{
374295 .llvm_name = "myriad2.3",
375296 .subfeatures = &[_]*const Feature {
376297 &feature_leon,
377 &feature_hasleoncasa,
378298 },
379299};
380300
......@@ -397,7 +317,6 @@ pub const cpu_niagara2 = Cpu{
397317 &feature_v9,
398318 &feature_vis,
399319 &feature_vis2,
400 &feature_popc,
401320 },
402321};
403322
......@@ -409,7 +328,6 @@ pub const cpu_niagara3 = Cpu{
409328 &feature_v9,
410329 &feature_vis,
411330 &feature_vis2,
412 &feature_popc,
413331 },
414332};
415333
......@@ -422,7 +340,6 @@ pub const cpu_niagara4 = Cpu{
422340 &feature_vis,
423341 &feature_vis2,
424342 &feature_vis3,
425 &feature_popc,
426343 },
427344};
428345
......@@ -489,8 +406,6 @@ pub const cpu_ut699 = Cpu{
489406 &feature_leon,
490407 &feature_noFmuls,
491408 &feature_noFsmuld,
492 &feature_fixallfdivsqrt,
493 &feature_insertnopload,
494409 },
495410};
496411