| ... | ... | @@ -56,15 +56,15 @@ const llvm_targets = [_]LlvmTarget{ |
| 56 | 56 | .llvm_name = "all", |
| 57 | 57 | .omit = true, |
| 58 | 58 | }, |
| 59 | | .{ |
| 60 | | .llvm_name = "v8a", |
| 61 | | .extra_deps = &.{ "fp_armv8", "neon" }, |
| 62 | | }, |
| 63 | 59 | .{ |
| 64 | 60 | .llvm_name = "CONTEXTIDREL2", |
| 65 | 61 | .zig_name = "contextidr_el2", |
| 66 | 62 | .desc = "Enable RW operand Context ID Register (EL2)", |
| 67 | 63 | }, |
| 64 | .{ |
| 65 | .llvm_name = "v8a", |
| 66 | .extra_deps = &.{"neon"}, |
| 67 | }, |
| 68 | 68 | .{ |
| 69 | 69 | .llvm_name = "neoversee1", |
| 70 | 70 | .flatten = true, |
| ... | ... | @@ -77,6 +77,10 @@ const llvm_targets = [_]LlvmTarget{ |
| 77 | 77 | .llvm_name = "neoversen2", |
| 78 | 78 | .flatten = true, |
| 79 | 79 | }, |
| 80 | .{ |
| 81 | .llvm_name = "neoversen3", |
| 82 | .flatten = true, |
| 83 | }, |
| 80 | 84 | .{ |
| 81 | 85 | .llvm_name = "neoversev1", |
| 82 | 86 | .flatten = true, |
| ... | ... | @@ -85,32 +89,37 @@ const llvm_targets = [_]LlvmTarget{ |
| 85 | 89 | .llvm_name = "neoversev2", |
| 86 | 90 | .flatten = true, |
| 87 | 91 | }, |
| 92 | .{ |
| 93 | .llvm_name = "neoversev3", |
| 94 | .flatten = true, |
| 95 | }, |
| 96 | .{ |
| 97 | .llvm_name = "neoversev3AE", |
| 98 | .flatten = true, |
| 99 | }, |
| 88 | 100 | .{ |
| 89 | 101 | .llvm_name = "neoverse512tvb", |
| 90 | 102 | .flatten = true, |
| 91 | 103 | }, |
| 92 | 104 | .{ |
| 93 | | .llvm_name = "exynosm3", |
| 105 | .llvm_name = "oryon-1", |
| 94 | 106 | .flatten = true, |
| 95 | | .extra_deps = &.{"v8a"}, |
| 96 | 107 | }, |
| 97 | 108 | .{ |
| 98 | | .llvm_name = "exynosm4", |
| 109 | .llvm_name = "exynosm3", |
| 99 | 110 | .flatten = true, |
| 100 | 111 | }, |
| 101 | 112 | .{ |
| 102 | | .llvm_name = "v8.1a", |
| 103 | | .extra_deps = &.{"v8a"}, |
| 113 | .llvm_name = "exynosm4", |
| 114 | .flatten = true, |
| 104 | 115 | }, |
| 105 | 116 | .{ |
| 106 | 117 | .llvm_name = "a35", |
| 107 | 118 | .flatten = true, |
| 108 | | .extra_deps = &.{"v8a"}, |
| 109 | 119 | }, |
| 110 | 120 | .{ |
| 111 | 121 | .llvm_name = "a53", |
| 112 | 122 | .flatten = true, |
| 113 | | .extra_deps = &.{"v8a"}, |
| 114 | 123 | }, |
| 115 | 124 | .{ |
| 116 | 125 | .llvm_name = "a55", |
| ... | ... | @@ -119,34 +128,75 @@ const llvm_targets = [_]LlvmTarget{ |
| 119 | 128 | .{ |
| 120 | 129 | .llvm_name = "a57", |
| 121 | 130 | .flatten = true, |
| 122 | | .extra_deps = &.{"v8a"}, |
| 131 | }, |
| 132 | .{ |
| 133 | .llvm_name = "a510", |
| 134 | .flatten = true, |
| 135 | }, |
| 136 | .{ |
| 137 | .llvm_name = "a520", |
| 138 | .flatten = true, |
| 139 | }, |
| 140 | .{ |
| 141 | .llvm_name = "a520ae", |
| 142 | .flatten = true, |
| 123 | 143 | }, |
| 124 | 144 | .{ |
| 125 | 145 | .llvm_name = "a64fx", |
| 126 | 146 | .flatten = true, |
| 127 | 147 | }, |
| 148 | .{ |
| 149 | .llvm_name = "a65", |
| 150 | .flatten = true, |
| 151 | }, |
| 128 | 152 | .{ |
| 129 | 153 | .llvm_name = "a72", |
| 130 | 154 | .flatten = true, |
| 131 | | .extra_deps = &.{"v8a"}, |
| 132 | 155 | }, |
| 133 | 156 | .{ |
| 134 | 157 | .llvm_name = "a73", |
| 135 | 158 | .flatten = true, |
| 136 | | .extra_deps = &.{"v8a"}, |
| 137 | 159 | }, |
| 138 | 160 | .{ |
| 139 | 161 | .llvm_name = "a75", |
| 140 | 162 | .flatten = true, |
| 141 | 163 | }, |
| 164 | .{ |
| 165 | .llvm_name = "a76", |
| 166 | .flatten = true, |
| 167 | }, |
| 142 | 168 | .{ |
| 143 | 169 | .llvm_name = "a77", |
| 144 | 170 | .flatten = true, |
| 145 | 171 | }, |
| 172 | .{ |
| 173 | .llvm_name = "a78", |
| 174 | .flatten = true, |
| 175 | }, |
| 176 | .{ |
| 177 | .llvm_name = "a78ae", |
| 178 | .flatten = true, |
| 179 | }, |
| 180 | .{ |
| 181 | .llvm_name = "a78c", |
| 182 | .flatten = true, |
| 183 | }, |
| 184 | .{ |
| 185 | .llvm_name = "a710", |
| 186 | .flatten = true, |
| 187 | }, |
| 146 | 188 | .{ |
| 147 | 189 | .llvm_name = "a715", |
| 148 | 190 | .flatten = true, |
| 149 | 191 | }, |
| 192 | .{ |
| 193 | .llvm_name = "a720", |
| 194 | .flatten = true, |
| 195 | }, |
| 196 | .{ |
| 197 | .llvm_name = "a720ae", |
| 198 | .flatten = true, |
| 199 | }, |
| 150 | 200 | .{ |
| 151 | 201 | .llvm_name = "ampere1a", |
| 152 | 202 | .flatten = true, |
| ... | ... | @@ -191,14 +241,30 @@ const llvm_targets = [_]LlvmTarget{ |
| 191 | 241 | .llvm_name = "apple-a7-sysreg", |
| 192 | 242 | .flatten = true, |
| 193 | 243 | }, |
| 244 | .{ |
| 245 | .llvm_name = "apple-m4", |
| 246 | .flatten = true, |
| 247 | }, |
| 194 | 248 | .{ |
| 195 | 249 | .llvm_name = "carmel", |
| 196 | 250 | .flatten = true, |
| 197 | 251 | }, |
| 252 | .{ |
| 253 | .llvm_name = "cortex-a725", |
| 254 | .flatten = true, |
| 255 | }, |
| 198 | 256 | .{ |
| 199 | 257 | .llvm_name = "cortex-a78", |
| 200 | 258 | .flatten = true, |
| 201 | 259 | }, |
| 260 | .{ |
| 261 | .llvm_name = "cortex-r82", |
| 262 | .flatten = true, |
| 263 | }, |
| 264 | .{ |
| 265 | .llvm_name = "cortex-r82ae", |
| 266 | .flatten = true, |
| 267 | }, |
| 202 | 268 | .{ |
| 203 | 269 | .llvm_name = "cortex-x1", |
| 204 | 270 | .flatten = true, |
| ... | ... | @@ -215,15 +281,17 @@ const llvm_targets = [_]LlvmTarget{ |
| 215 | 281 | .llvm_name = "cortex-x4", |
| 216 | 282 | .flatten = true, |
| 217 | 283 | }, |
| 284 | .{ |
| 285 | .llvm_name = "cortex-x925", |
| 286 | .flatten = true, |
| 287 | }, |
| 218 | 288 | .{ |
| 219 | 289 | .llvm_name = "falkor", |
| 220 | 290 | .flatten = true, |
| 221 | | .extra_deps = &.{"v8a"}, |
| 222 | 291 | }, |
| 223 | 292 | .{ |
| 224 | 293 | .llvm_name = "kryo", |
| 225 | 294 | .flatten = true, |
| 226 | | .extra_deps = &.{"v8a"}, |
| 227 | 295 | }, |
| 228 | 296 | .{ |
| 229 | 297 | .llvm_name = "saphira", |
| ... | ... | @@ -232,7 +300,6 @@ const llvm_targets = [_]LlvmTarget{ |
| 232 | 300 | .{ |
| 233 | 301 | .llvm_name = "thunderx", |
| 234 | 302 | .flatten = true, |
| 235 | | .extra_deps = &.{"v8a"}, |
| 236 | 303 | }, |
| 237 | 304 | .{ |
| 238 | 305 | .llvm_name = "thunderx2t99", |
| ... | ... | @@ -245,17 +312,14 @@ const llvm_targets = [_]LlvmTarget{ |
| 245 | 312 | .{ |
| 246 | 313 | .llvm_name = "thunderxt81", |
| 247 | 314 | .flatten = true, |
| 248 | | .extra_deps = &.{"v8a"}, |
| 249 | 315 | }, |
| 250 | 316 | .{ |
| 251 | 317 | .llvm_name = "thunderxt83", |
| 252 | 318 | .flatten = true, |
| 253 | | .extra_deps = &.{"v8a"}, |
| 254 | 319 | }, |
| 255 | 320 | .{ |
| 256 | 321 | .llvm_name = "thunderxt88", |
| 257 | 322 | .flatten = true, |
| 258 | | .extra_deps = &.{"v8a"}, |
| 259 | 323 | }, |
| 260 | 324 | .{ |
| 261 | 325 | .llvm_name = "tsv110", |
| ... | ... | @@ -308,8 +372,6 @@ const llvm_targets = [_]LlvmTarget{ |
| 308 | 372 | .llvm_name = null, |
| 309 | 373 | .zig_name = "xgene1", |
| 310 | 374 | .features = &.{ |
| 311 | | "fp_armv8", |
| 312 | | "neon", |
| 313 | 375 | "perfmon", |
| 314 | 376 | "v8a", |
| 315 | 377 | }, |
| ... | ... | @@ -320,13 +382,16 @@ const llvm_targets = [_]LlvmTarget{ |
| 320 | 382 | .features = &.{ |
| 321 | 383 | "crc", |
| 322 | 384 | "crypto", |
| 323 | | "fp_armv8", |
| 324 | | "neon", |
| 325 | 385 | "perfmon", |
| 326 | 386 | "v8a", |
| 327 | 387 | }, |
| 328 | 388 | }, |
| 329 | 389 | }, |
| 390 | .omit_cpus = &.{ |
| 391 | // Who thought this alias was a good idea? Upgrade your compiler and suddenly your |
| 392 | // programs SIGILL because this changed meaning. Brilliant. |
| 393 | "apple-latest", |
| 394 | }, |
| 330 | 395 | }, |
| 331 | 396 | .{ |
| 332 | 397 | .zig_name = "amdgpu", |
| ... | ... | @@ -383,10 +448,18 @@ const llvm_targets = [_]LlvmTarget{ |
| 383 | 448 | }, |
| 384 | 449 | }, |
| 385 | 450 | .feature_overrides = &.{ |
| 451 | .{ |
| 452 | .llvm_name = "exynos", |
| 453 | .flatten = true, |
| 454 | }, |
| 386 | 455 | .{ |
| 387 | 456 | .llvm_name = "cortex-a78", |
| 388 | 457 | .flatten = true, |
| 389 | 458 | }, |
| 459 | .{ |
| 460 | .llvm_name = "cortex-a78ae", |
| 461 | .flatten = true, |
| 462 | }, |
| 390 | 463 | .{ |
| 391 | 464 | .llvm_name = "cortex-a710", |
| 392 | 465 | .flatten = true, |
| ... | ... | @@ -420,6 +493,14 @@ const llvm_targets = [_]LlvmTarget{ |
| 420 | 493 | .llvm_name = "cortex-x1c", |
| 421 | 494 | .flatten = true, |
| 422 | 495 | }, |
| 496 | .{ |
| 497 | .llvm_name = "r4", |
| 498 | .flatten = true, |
| 499 | }, |
| 500 | .{ |
| 501 | .llvm_name = "r52plus", |
| 502 | .flatten = true, |
| 503 | }, |
| 423 | 504 | .{ |
| 424 | 505 | .llvm_name = "r5", |
| 425 | 506 | .flatten = true, |
| ... | ... | @@ -432,6 +513,10 @@ const llvm_targets = [_]LlvmTarget{ |
| 432 | 513 | .llvm_name = "r7", |
| 433 | 514 | .flatten = true, |
| 434 | 515 | }, |
| 516 | .{ |
| 517 | .llvm_name = "m3", |
| 518 | .flatten = true, |
| 519 | }, |
| 435 | 520 | .{ |
| 436 | 521 | .llvm_name = "m7", |
| 437 | 522 | .flatten = true, |
| ... | ... | @@ -444,6 +529,10 @@ const llvm_targets = [_]LlvmTarget{ |
| 444 | 529 | .llvm_name = "kryo", |
| 445 | 530 | .flatten = true, |
| 446 | 531 | }, |
| 532 | .{ |
| 533 | .llvm_name = "swift", |
| 534 | .flatten = true, |
| 535 | }, |
| 447 | 536 | .{ |
| 448 | 537 | .llvm_name = "cortex-x1", |
| 449 | 538 | .flatten = true, |
| ... | ... | @@ -512,6 +601,10 @@ const llvm_targets = [_]LlvmTarget{ |
| 512 | 601 | .llvm_name = "a75", |
| 513 | 602 | .flatten = true, |
| 514 | 603 | }, |
| 604 | .{ |
| 605 | .llvm_name = "a76", |
| 606 | .flatten = true, |
| 607 | }, |
| 515 | 608 | .{ |
| 516 | 609 | .llvm_name = "a77", |
| 517 | 610 | .flatten = true, |
| ... | ... | @@ -903,6 +996,7 @@ const llvm_targets = [_]LlvmTarget{ |
| 903 | 996 | .zig_name = "riscv", |
| 904 | 997 | .llvm_name = "RISCV", |
| 905 | 998 | .td_name = "RISCV.td", |
| 999 | .branch_quota = 2000, |
| 906 | 1000 | .feature_overrides = &.{ |
| 907 | 1001 | .{ |
| 908 | 1002 | .llvm_name = "sifive7", |
| ... | ... | @@ -913,12 +1007,12 @@ const llvm_targets = [_]LlvmTarget{ |
| 913 | 1007 | .{ |
| 914 | 1008 | .llvm_name = null, |
| 915 | 1009 | .zig_name = "baseline_rv32", |
| 916 | | .features = &.{ "32bit", "a", "c", "d", "f", "m" }, |
| 1010 | .features = &.{ "32bit", "a", "c", "d", "f", "i", "m" }, |
| 917 | 1011 | }, |
| 918 | 1012 | .{ |
| 919 | 1013 | .llvm_name = null, |
| 920 | 1014 | .zig_name = "baseline_rv64", |
| 921 | | .features = &.{ "64bit", "a", "c", "d", "f", "m" }, |
| 1015 | .features = &.{ "64bit", "a", "c", "d", "f", "i", "m" }, |
| 922 | 1016 | }, |
| 923 | 1017 | }, |
| 924 | 1018 | }, |
| ... | ... | @@ -957,10 +1051,130 @@ const llvm_targets = [_]LlvmTarget{ |
| 957 | 1051 | .llvm_name = "64bit-mode", |
| 958 | 1052 | .omit = true, |
| 959 | 1053 | }, |
| 1054 | .{ |
| 1055 | .llvm_name = "amdfam10", |
| 1056 | .extra_deps = &.{"3dnowa"}, |
| 1057 | }, |
| 1058 | .{ |
| 1059 | .llvm_name = "athlon", |
| 1060 | .extra_deps = &.{"3dnowa"}, |
| 1061 | }, |
| 1062 | .{ |
| 1063 | .llvm_name = "athlon64", |
| 1064 | .extra_deps = &.{"3dnowa"}, |
| 1065 | }, |
| 1066 | .{ |
| 1067 | .llvm_name = "athlon64-sse3", |
| 1068 | .extra_deps = &.{"3dnowa"}, |
| 1069 | }, |
| 1070 | .{ |
| 1071 | .llvm_name = "athlon-4", |
| 1072 | .extra_deps = &.{"3dnowa"}, |
| 1073 | }, |
| 1074 | .{ |
| 1075 | .llvm_name = "athlon-fx", |
| 1076 | .extra_deps = &.{"3dnowa"}, |
| 1077 | }, |
| 1078 | .{ |
| 1079 | .llvm_name = "athlon-mp", |
| 1080 | .extra_deps = &.{"3dnowa"}, |
| 1081 | }, |
| 1082 | .{ |
| 1083 | .llvm_name = "athlon-tbird", |
| 1084 | .extra_deps = &.{"3dnowa"}, |
| 1085 | }, |
| 1086 | .{ |
| 1087 | .llvm_name = "athlon-xp", |
| 1088 | .extra_deps = &.{"3dnowa"}, |
| 1089 | }, |
| 1090 | .{ |
| 1091 | .llvm_name = "barcelona", |
| 1092 | .extra_deps = &.{"3dnowa"}, |
| 1093 | }, |
| 1094 | .{ |
| 1095 | .llvm_name = "c3", |
| 1096 | .extra_deps = &.{"3dnow"}, |
| 1097 | }, |
| 1098 | .{ |
| 1099 | .llvm_name = "geode", |
| 1100 | .extra_deps = &.{"3dnowa"}, |
| 1101 | }, |
| 1102 | .{ |
| 1103 | .llvm_name = "k6-2", |
| 1104 | .extra_deps = &.{"3dnow"}, |
| 1105 | }, |
| 1106 | .{ |
| 1107 | .llvm_name = "k6-3", |
| 1108 | .extra_deps = &.{"3dnow"}, |
| 1109 | }, |
| 1110 | .{ |
| 1111 | .llvm_name = "k8", |
| 1112 | .extra_deps = &.{"3dnowa"}, |
| 1113 | }, |
| 1114 | .{ |
| 1115 | .llvm_name = "k8-sse3", |
| 1116 | .extra_deps = &.{"3dnowa"}, |
| 1117 | }, |
| 1118 | .{ |
| 1119 | .llvm_name = "knl", |
| 1120 | .extra_deps = &.{ |
| 1121 | "avx512er", |
| 1122 | "avx512pf", |
| 1123 | "prefetchwt1", |
| 1124 | }, |
| 1125 | }, |
| 1126 | .{ |
| 1127 | .llvm_name = "knm", |
| 1128 | .extra_deps = &.{ |
| 1129 | "avx512er", |
| 1130 | "avx512pf", |
| 1131 | "prefetchwt1", |
| 1132 | }, |
| 1133 | }, |
| 960 | 1134 | .{ |
| 961 | 1135 | .llvm_name = "lakemont", |
| 962 | 1136 | .extra_deps = &.{"soft_float"}, |
| 963 | 1137 | }, |
| 1138 | .{ |
| 1139 | .llvm_name = "opteron", |
| 1140 | .extra_deps = &.{"3dnowa"}, |
| 1141 | }, |
| 1142 | .{ |
| 1143 | .llvm_name = "opteron-sse3", |
| 1144 | .extra_deps = &.{"3dnowa"}, |
| 1145 | }, |
| 1146 | .{ |
| 1147 | .llvm_name = "winchip2", |
| 1148 | .extra_deps = &.{"3dnow"}, |
| 1149 | }, |
| 1150 | }, |
| 1151 | // Features removed from LLVM |
| 1152 | .extra_features = &.{ |
| 1153 | .{ |
| 1154 | .zig_name = "3dnow", |
| 1155 | .desc = "Enable 3DNow! instructions", |
| 1156 | .deps = &.{"mmx"}, |
| 1157 | }, |
| 1158 | .{ |
| 1159 | .zig_name = "3dnowa", |
| 1160 | .desc = "Enable 3DNow! Athlon instructions", |
| 1161 | .deps = &.{"3dnow"}, |
| 1162 | }, |
| 1163 | .{ |
| 1164 | .zig_name = "avx512er", |
| 1165 | .desc = "Enable AVX-512 Exponential and Reciprocal Instructions", |
| 1166 | .deps = &.{"avx512f"}, |
| 1167 | }, |
| 1168 | .{ |
| 1169 | .zig_name = "avx512pf", |
| 1170 | .desc = "Enable AVX-512 PreFetch Instructions", |
| 1171 | .deps = &.{"avx512f"}, |
| 1172 | }, |
| 1173 | .{ |
| 1174 | .zig_name = "prefetchwt1", |
| 1175 | .desc = "Prefetch with Intent to Write and T1 Hint", |
| 1176 | .deps = &.{}, |
| 1177 | }, |
| 964 | 1178 | }, |
| 965 | 1179 | .omit_cpus = &.{ |
| 966 | 1180 | // LLVM defines a bunch of dumb aliases with foreach loops in X86.td. |
| ... | ... | @@ -1111,7 +1325,7 @@ fn processOneTarget(job: Job) anyerror!void { |
| 1111 | 1325 | const child_result = try std.process.Child.run(.{ |
| 1112 | 1326 | .allocator = arena, |
| 1113 | 1327 | .argv = &child_args, |
| 1114 | | .max_output_bytes = 400 * 1024 * 1024, |
| 1328 | .max_output_bytes = 500 * 1024 * 1024, |
| 1115 | 1329 | }); |
| 1116 | 1330 | tblgen_progress.end(); |
| 1117 | 1331 | if (child_result.stderr.len != 0) { |
| ... | ... | @@ -1138,6 +1352,36 @@ fn processOneTarget(job: Job) anyerror!void { |
| 1138 | 1352 | |
| 1139 | 1353 | const render_progress = progress_node.start("render zig code", 0); |
| 1140 | 1354 | |
| 1355 | // So far LLVM has only had a few aliases for the same CPU. |
| 1356 | var cpu_aliases = std.StringHashMap(std.SegmentedList(struct { |
| 1357 | llvm: []const u8, |
| 1358 | zig: []const u8, |
| 1359 | }, 4)).init(arena); |
| 1360 | |
| 1361 | { |
| 1362 | var it = root_map.iterator(); |
| 1363 | while (it.next()) |kv| { |
| 1364 | if (kv.key_ptr.len == 0) continue; |
| 1365 | if (kv.key_ptr.*[0] == '!') continue; |
| 1366 | if (kv.value_ptr.* != .object) continue; |
| 1367 | if (hasSuperclass(&kv.value_ptr.object, "ProcessorAlias")) { |
| 1368 | // Note that `Name` is actually the alias, while `Alias` is the name that will have |
| 1369 | // a full `Processor` object defined. |
| 1370 | const llvm_alias = kv.value_ptr.object.get("Name").?.string; |
| 1371 | const llvm_name = kv.value_ptr.object.get("Alias").?.string; |
| 1372 | |
| 1373 | const gop = try cpu_aliases.getOrPut(try llvmNameToZigName(arena, llvm_name)); |
| 1374 | |
| 1375 | if (!gop.found_existing) gop.value_ptr.* = .{}; |
| 1376 | |
| 1377 | try gop.value_ptr.append(arena, .{ |
| 1378 | .llvm = llvm_alias, |
| 1379 | .zig = try llvmNameToZigName(arena, llvm_alias), |
| 1380 | }); |
| 1381 | } |
| 1382 | } |
| 1383 | } |
| 1384 | |
| 1141 | 1385 | var features_table = std.StringHashMap(Feature).init(arena); |
| 1142 | 1386 | var all_features = std.ArrayList(Feature).init(arena); |
| 1143 | 1387 | var all_cpus = std.ArrayList(Cpu).init(arena); |
| ... | ... | @@ -1184,7 +1428,7 @@ fn processOneTarget(job: Job) anyerror!void { |
| 1184 | 1428 | const other_key = imply.object.get("def").?.string; |
| 1185 | 1429 | const other_obj = &root_map.getPtr(other_key).?.object; |
| 1186 | 1430 | const other_llvm_name = other_obj.get("Name").?.string; |
| 1187 | | const other_zig_name = (try llvmNameToZigNameOmit( |
| 1431 | const other_zig_name = (try llvmFeatureNameToZigNameOmit( |
| 1188 | 1432 | arena, |
| 1189 | 1433 | llvm_target, |
| 1190 | 1434 | other_llvm_name, |
| ... | ... | @@ -1241,7 +1485,7 @@ fn processOneTarget(job: Job) anyerror!void { |
| 1241 | 1485 | const feature_obj = &root_map.getPtr(feature_key).?.object; |
| 1242 | 1486 | const feature_llvm_name = feature_obj.get("Name").?.string; |
| 1243 | 1487 | if (feature_llvm_name.len == 0) continue; |
| 1244 | | const feature_zig_name = (try llvmNameToZigNameOmit( |
| 1488 | const feature_zig_name = (try llvmFeatureNameToZigNameOmit( |
| 1245 | 1489 | arena, |
| 1246 | 1490 | llvm_target, |
| 1247 | 1491 | feature_llvm_name, |
| ... | ... | @@ -1261,7 +1505,7 @@ fn processOneTarget(job: Job) anyerror!void { |
| 1261 | 1505 | const feature_obj = &root_map.getPtr(feature_key).?.object; |
| 1262 | 1506 | const feature_llvm_name = feature_obj.get("Name").?.string; |
| 1263 | 1507 | if (feature_llvm_name.len == 0) continue; |
| 1264 | | const feature_zig_name = (try llvmNameToZigNameOmit( |
| 1508 | const feature_zig_name = (try llvmFeatureNameToZigNameOmit( |
| 1265 | 1509 | arena, |
| 1266 | 1510 | llvm_target, |
| 1267 | 1511 | feature_llvm_name, |
| ... | ... | @@ -1287,6 +1531,22 @@ fn processOneTarget(job: Job) anyerror!void { |
| 1287 | 1531 | .zig_name = zig_name, |
| 1288 | 1532 | .features = deps.items, |
| 1289 | 1533 | }); |
| 1534 | |
| 1535 | if (cpu_aliases.get(zig_name)) |aliases| { |
| 1536 | var alias_it = aliases.constIterator(0); |
| 1537 | |
| 1538 | alias_it: while (alias_it.next()) |alias| { |
| 1539 | for (llvm_target.omit_cpus) |omit_cpu_name| { |
| 1540 | if (mem.eql(u8, omit_cpu_name, alias.llvm)) continue :alias_it; |
| 1541 | } |
| 1542 | |
| 1543 | try all_cpus.append(.{ |
| 1544 | .llvm_name = alias.llvm, |
| 1545 | .zig_name = alias.zig, |
| 1546 | .features = deps.items, |
| 1547 | }); |
| 1548 | } |
| 1549 | } |
| 1290 | 1550 | } |
| 1291 | 1551 | } |
| 1292 | 1552 | } |
| ... | ... | @@ -1525,7 +1785,7 @@ fn llvmNameToZigName(arena: mem.Allocator, llvm_name: []const u8) ![]const u8 { |
| 1525 | 1785 | return duped; |
| 1526 | 1786 | } |
| 1527 | 1787 | |
| 1528 | | fn llvmNameToZigNameOmit( |
| 1788 | fn llvmFeatureNameToZigNameOmit( |
| 1529 | 1789 | arena: mem.Allocator, |
| 1530 | 1790 | llvm_target: LlvmTarget, |
| 1531 | 1791 | llvm_name: []const u8, |