* initial cargo fix run * Upgrade cranelift-entity crate * Upgrade bforest crate * Upgrade the codegen crate * Upgrade the faerie crate * Upgrade the filetests crate * Upgrade the codegen-meta crate * Upgrade the frontend crate * Upgrade the cranelift-module crate * Upgrade the cranelift-native crate * Upgrade the cranelift-preopt crate * Upgrade the cranelift-reader crate * Upgrade the cranelift-serde crate * Upgrade the cranelift-simplejit crate * Upgrade the cranelift or cranelift-umbrella crate * Upgrade the cranelift-wasm crate * Upgrade cranelift-tools crate * Use new import style on remaining files * run format-all.sh * run test-all.sh, update Readme and travis ci configuration fixed an AssertionError also * Remove deprecated functions
46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
use crate::cdsl::isa::{TargetIsa, TargetIsaBuilder};
|
|
use crate::cdsl::regs::{RegBankBuilder, RegClassBuilder};
|
|
use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder};
|
|
|
|
fn define_settings(_shared: &SettingGroup) -> SettingGroup {
|
|
let setting = SettingGroupBuilder::new("arm32");
|
|
setting.finish()
|
|
}
|
|
|
|
pub fn define(shared_settings: &SettingGroup) -> TargetIsa {
|
|
let mut isa = TargetIsaBuilder::new("arm32", define_settings(shared_settings));
|
|
|
|
let builder = RegBankBuilder::new("FloatRegs", "s")
|
|
.units(64)
|
|
.track_pressure(true);
|
|
let float_regs = isa.add_reg_bank(builder);
|
|
|
|
let builder = RegBankBuilder::new("IntRegs", "r")
|
|
.units(16)
|
|
.track_pressure(true);
|
|
let int_regs = isa.add_reg_bank(builder);
|
|
|
|
let builder = RegBankBuilder::new("FlagRegs", "")
|
|
.units(1)
|
|
.names(vec!["nzcv"])
|
|
.track_pressure(false);
|
|
let flag_reg = isa.add_reg_bank(builder);
|
|
|
|
let builder = RegClassBuilder::new_toplevel("S", float_regs).count(32);
|
|
isa.add_reg_class(builder);
|
|
|
|
let builder = RegClassBuilder::new_toplevel("D", float_regs).width(2);
|
|
isa.add_reg_class(builder);
|
|
|
|
let builder = RegClassBuilder::new_toplevel("Q", float_regs).width(4);
|
|
isa.add_reg_class(builder);
|
|
|
|
let builder = RegClassBuilder::new_toplevel("GPR", int_regs);
|
|
isa.add_reg_class(builder);
|
|
|
|
let builder = RegClassBuilder::new_toplevel("FLAG", flag_reg);
|
|
isa.add_reg_class(builder);
|
|
|
|
isa.finish()
|
|
}
|