| ... | @@ -375,15 +375,13 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target { | ... | @@ -375,15 +375,13 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target { |
| 375 | | 375 | |
| 376 | var cpu = switch (query.cpu_model) { | 376 | var cpu = switch (query.cpu_model) { |
| 377 | .native => detectNativeCpuAndFeatures(io, query_cpu_arch), | 377 | .native => detectNativeCpuAndFeatures(io, query_cpu_arch), |
| 378 | .baseline => Target.Cpu.baseline(query_cpu_arch, os), | 378 | .baseline => null, |
| 379 | .determined_by_arch_os => if (query.cpu_arch == null) | 379 | .determined_by_arch_os => if (query.cpu_arch == null) |
| 380 | detectNativeCpuAndFeatures(io, query_cpu_arch) | 380 | detectNativeCpuAndFeatures(io, query_cpu_arch) |
| 381 | else | 381 | else |
| 382 | Target.Cpu.baseline(query_cpu_arch, os), | 382 | null, |
| 383 | .explicit => |model| model.toCpu(query_cpu_arch), | 383 | .explicit => |model| model.toCpu(query_cpu_arch), |
| 384 | } orelse backup_cpu_detection: { | 384 | } orelse Target.Cpu.baseline(query_cpu_arch, os); |
| 385 | break :backup_cpu_detection Target.Cpu.baseline(query_cpu_arch, os); | | |
| 386 | }; | | |
| 387 | | 385 | |
| 388 | // For x86, we need to populate some CPU feature flags depending on architecture | 386 | // For x86, we need to populate some CPU feature flags depending on architecture |
| 389 | // and mode: | 387 | // and mode: |
| ... | @@ -536,12 +534,11 @@ fn updateCpuFeatures( | ... | @@ -536,12 +534,11 @@ fn updateCpuFeatures( |
| 536 | } | 534 | } |
| 537 | | 535 | |
| 538 | fn detectNativeCpuAndFeatures(io: Io, cpu_arch: Target.Cpu.Arch) ?Target.Cpu { | 536 | fn detectNativeCpuAndFeatures(io: Io, cpu_arch: Target.Cpu.Arch) ?Target.Cpu { |
| 539 | // Here we switch on a comptime value rather than `cpu_arch`. This is valid because `cpu_arch`, | 537 | const family = builtin.target.cpu.arch.family(); |
| 540 | // although it is a runtime value, is guaranteed to be one of the architectures in the set | 538 | assert(cpu_arch.family() == family); |
| 541 | // of the respective switch prong. | 539 | switch (family) { |
| 542 | switch (builtin.cpu.arch) { | 540 | .loongarch => return @import("system/loongarch.zig").detectNativeCpuAndFeatures(cpu_arch), |
| 543 | .loongarch32, .loongarch64 => return @import("system/loongarch.zig").detectNativeCpuAndFeatures(cpu_arch), | 541 | .x86 => return @import("system/x86.zig").detectNativeCpuAndFeatures(cpu_arch), |
| 544 | .x86_64, .x86 => return @import("system/x86.zig").detectNativeCpuAndFeatures(cpu_arch), | | |
| 545 | else => {}, | 542 | else => {}, |
| 546 | } | 543 | } |
| 547 | | 544 | |