Remove x86 old-backend special case from cranelift-codegen-meta
This commit is contained in:
@@ -27,15 +27,6 @@ fn main() {
|
|||||||
let out_dir = env::var("OUT_DIR").expect("The OUT_DIR environment variable must be set");
|
let out_dir = env::var("OUT_DIR").expect("The OUT_DIR environment variable must be set");
|
||||||
let target_triple = env::var("TARGET").expect("The TARGET environment variable must be set");
|
let target_triple = env::var("TARGET").expect("The TARGET environment variable must be set");
|
||||||
|
|
||||||
let new_backend_isas = if env::var("CARGO_FEATURE_X64").is_ok() {
|
|
||||||
// The x64 (new backend for x86_64) is a bit particular: it only requires generating
|
|
||||||
// the shared meta code; the only ISA-specific code is for settings.
|
|
||||||
vec![meta::isa::Isa::X86]
|
|
||||||
} else {
|
|
||||||
Vec::new()
|
|
||||||
};
|
|
||||||
|
|
||||||
// Configure isa targets using the old backend.
|
|
||||||
let isa_targets = meta::isa::Isa::all()
|
let isa_targets = meta::isa::Isa::all()
|
||||||
.iter()
|
.iter()
|
||||||
.cloned()
|
.cloned()
|
||||||
@@ -45,7 +36,7 @@ fn main() {
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let old_backend_isas = if new_backend_isas.is_empty() && isa_targets.is_empty() {
|
let isas = if isa_targets.is_empty() {
|
||||||
// Try to match native target.
|
// Try to match native target.
|
||||||
let target_name = target_triple.split('-').next().unwrap();
|
let target_name = target_triple.split('-').next().unwrap();
|
||||||
let isa = meta::isa_from_arch(&target_name).expect("error when identifying target");
|
let isa = meta::isa_from_arch(&target_name).expect("error when identifying target");
|
||||||
@@ -65,23 +56,14 @@ fn main() {
|
|||||||
crate_dir.join("build.rs").to_str().unwrap()
|
crate_dir.join("build.rs").to_str().unwrap()
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Err(err) = meta::generate(&old_backend_isas, &new_backend_isas, &out_dir) {
|
if let Err(err) = meta::generate(&isas, &out_dir) {
|
||||||
eprintln!("Error: {}", err);
|
eprintln!("Error: {}", err);
|
||||||
process::exit(1);
|
process::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if env::var("CRANELIFT_VERBOSE").is_ok() {
|
if env::var("CRANELIFT_VERBOSE").is_ok() {
|
||||||
for isa in &old_backend_isas {
|
for isa in &isas {
|
||||||
println!(
|
println!("cargo:warning=Includes support for {} ISA", isa.to_string());
|
||||||
"cargo:warning=Includes old-backend support for {} ISA",
|
|
||||||
isa.to_string()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
for isa in &new_backend_isas {
|
|
||||||
println!(
|
|
||||||
"cargo:warning=Includes new-backend support for {} ISA",
|
|
||||||
isa.to_string()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
println!(
|
println!(
|
||||||
"cargo:warning=Build step took {:?}.",
|
"cargo:warning=Build step took {:?}.",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ pub(crate) fn define(shared_defs: &mut SharedDefinitions) -> TargetIsa {
|
|||||||
TargetIsa::new("x86", settings)
|
TargetIsa::new("x86", settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn define_settings(shared: &SettingGroup) -> SettingGroup {
|
fn define_settings(shared: &SettingGroup) -> SettingGroup {
|
||||||
let mut settings = SettingGroupBuilder::new("x86");
|
let mut settings = SettingGroupBuilder::new("x86");
|
||||||
|
|
||||||
// CPUID.01H:ECX
|
// CPUID.01H:ECX
|
||||||
|
|||||||
@@ -21,11 +21,7 @@ pub fn isa_from_arch(arch: &str) -> Result<isa::Isa, String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Generates all the Rust source files used in Cranelift from the meta-language.
|
/// Generates all the Rust source files used in Cranelift from the meta-language.
|
||||||
pub fn generate(
|
pub fn generate(isas: &[isa::Isa], out_dir: &str) -> Result<(), error::Error> {
|
||||||
old_backend_isas: &[isa::Isa],
|
|
||||||
new_backend_isas: &[isa::Isa],
|
|
||||||
out_dir: &str,
|
|
||||||
) -> Result<(), error::Error> {
|
|
||||||
// Create all the definitions:
|
// Create all the definitions:
|
||||||
// - common definitions.
|
// - common definitions.
|
||||||
let mut shared_defs = shared::define();
|
let mut shared_defs = shared::define();
|
||||||
@@ -39,7 +35,7 @@ pub fn generate(
|
|||||||
gen_types::generate("types.rs", &out_dir)?;
|
gen_types::generate("types.rs", &out_dir)?;
|
||||||
|
|
||||||
// - per ISA definitions.
|
// - per ISA definitions.
|
||||||
let target_isas = isa::define(old_backend_isas, &mut shared_defs);
|
let target_isas = isa::define(isas, &mut shared_defs);
|
||||||
|
|
||||||
// At this point, all definitions are done.
|
// At this point, all definitions are done.
|
||||||
let all_formats = shared_defs.verify_instruction_formats();
|
let all_formats = shared_defs.verify_instruction_formats();
|
||||||
@@ -62,31 +58,5 @@ pub fn generate(
|
|||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
for isa in new_backend_isas {
|
|
||||||
match isa {
|
|
||||||
isa::Isa::X86 => {
|
|
||||||
// If the old backend ISAs contained x86, this file has already been generated.
|
|
||||||
if old_backend_isas.iter().any(|isa| *isa == isa::Isa::X86) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let settings = crate::isa::x86::define_settings(&shared_defs.settings);
|
|
||||||
gen_settings::generate(
|
|
||||||
&settings,
|
|
||||||
gen_settings::ParentGroup::Shared,
|
|
||||||
"settings-x86.rs",
|
|
||||||
&out_dir,
|
|
||||||
)?;
|
|
||||||
}
|
|
||||||
isa::Isa::Arm64 => {
|
|
||||||
// aarch64 doesn't have platform-specific settings.
|
|
||||||
}
|
|
||||||
isa::Isa::S390x => {
|
|
||||||
// s390x doesn't have platform-specific settings.
|
|
||||||
}
|
|
||||||
isa::Isa::Arm32 => todo!(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user