artiq: Specify target CPU when creating LLVM target options

We can try to optimize for the host and Cortex-A9 chips; The RISC-V
ISAs do not target specific chips, so we will fallback to using the
generic CPU.
This commit is contained in:
David Mak 2023-09-14 14:11:16 +08:00
parent f59d45805f
commit 411837cacd
1 changed files with 10 additions and 1 deletions

View File

@ -677,6 +677,15 @@ impl Nac3 {
} }
} }
/// Returns the [String] representing the target CPU used for compiling to [isa].
fn get_llvm_target_cpu(isa: Isa) -> String {
match isa {
Isa::Host => TargetMachine::get_host_cpu_name().to_string(),
Isa::RiscV32G | Isa::RiscV32IMA => "generic-rv32".to_string(),
Isa::CortexA9 => "cortex-a9".to_string(),
}
}
/// Returns the [String] representing the target features used for compiling to [isa]. /// Returns the [String] representing the target features used for compiling to [isa].
fn get_llvm_target_features(isa: Isa) -> String { fn get_llvm_target_features(isa: Isa) -> String {
match isa { match isa {
@ -692,7 +701,7 @@ impl Nac3 {
fn get_llvm_target_options(isa: Isa) -> CodeGenTargetMachineOptions { fn get_llvm_target_options(isa: Isa) -> CodeGenTargetMachineOptions {
CodeGenTargetMachineOptions { CodeGenTargetMachineOptions {
triple: Nac3::get_llvm_target_triple(isa).as_str().to_string_lossy().into_owned(), triple: Nac3::get_llvm_target_triple(isa).as_str().to_string_lossy().into_owned(),
cpu: String::default(), cpu: Nac3::get_llvm_target_cpu(isa),
features: Nac3::get_llvm_target_features(isa), features: Nac3::get_llvm_target_features(isa),
reloc_mode: RelocMode::PIC, reloc_mode: RelocMode::PIC,
..CodeGenTargetMachineOptions::from_host() ..CodeGenTargetMachineOptions::from_host()