[meta] Small fixes in the settings generation;

This commit is contained in:
Benjamin Bouvier
2019-04-16 15:20:18 +02:00
parent 390cfb37da
commit f335c5c56c
4 changed files with 10 additions and 18 deletions

View File

@@ -288,7 +288,8 @@ fn gen_descriptors(group: &SettingGroup, fmt: &mut Formatter) {
}); });
fmtln!(fmt, "},"); fmtln!(fmt, "},");
descriptor_index_map.insert(SettingOrPreset::Preset(preset), idx); let whole_idx = idx + group.settings.len();
descriptor_index_map.insert(SettingOrPreset::Preset(preset), whole_idx);
} }
}); });
fmtln!(fmt, "];"); fmtln!(fmt, "];");
@@ -304,20 +305,9 @@ fn gen_descriptors(group: &SettingGroup, fmt: &mut Formatter) {
// Generate hash table. // Generate hash table.
let mut hash_entries: Vec<SettingOrPreset> = Vec::new(); let mut hash_entries: Vec<SettingOrPreset> = Vec::new();
hash_entries.extend( hash_entries.extend(group.settings.iter().map(|x| SettingOrPreset::Setting(x)));
group hash_entries.extend(group.presets.iter().map(|x| SettingOrPreset::Preset(x)));
.settings
.iter()
.map(|x| SettingOrPreset::Setting(x))
.collect::<Vec<SettingOrPreset>>(),
);
hash_entries.extend(
group
.presets
.iter()
.map(|x| SettingOrPreset::Preset(x))
.collect::<Vec<SettingOrPreset>>(),
);
let hash_table = generate_table(&hash_entries, |entry| simple_hash(entry.name())); let hash_table = generate_table(&hash_entries, |entry| simple_hash(entry.name()));
fmtln!(fmt, "static HASH_TABLE: [u16; {}] = [", hash_table.len()); fmtln!(fmt, "static HASH_TABLE: [u16; {}] = [", hash_table.len());
fmt.indent(|fmt| { fmt.indent(|fmt| {
@@ -341,7 +331,7 @@ fn gen_descriptors(group: &SettingGroup, fmt: &mut Formatter) {
fmtln!( fmtln!(
fmt, fmt,
"static PRESETS: [(u8, u8); {}] = [", "static PRESETS: [(u8, u8); {}] = [",
group.presets.len() group.presets.len() * (group.settings_size as usize)
); );
fmt.indent(|fmt| { fmt.indent(|fmt| {
for preset in &group.presets { for preset in &group.presets {

View File

@@ -41,7 +41,7 @@ fn define_settings(shared: &SettingGroup) -> SettingGroup {
setting.add_bool( setting.add_bool(
"enable_e", "enable_e",
"Enable the 'RV32E' instruction set with only 16 registers", "Enable the 'RV32E' instruction set with only 16 registers",
true, false,
); );
let shared_enable_atomics = shared.get_bool("enable_atomics"); let shared_enable_atomics = shared.get_bool("enable_atomics");

View File

@@ -65,6 +65,8 @@ fn define_settings(shared: &SettingGroup) -> SettingGroup {
predicate!(!allones_funcaddrs && !is_pic), predicate!(!allones_funcaddrs && !is_pic),
); );
// Presets corresponding to x86 CPUs.
settings.add_preset("baseline", preset!()); settings.add_preset("baseline", preset!());
let nehalem = settings.add_preset( let nehalem = settings.add_preset(
"nehalem", "nehalem",

View File

@@ -59,7 +59,7 @@ pub fn generate(isas: &Vec<isa::Isa>, out_dir: &str) -> Result<(), error::Error>
gen_settings::generate( gen_settings::generate(
&isa.settings, &isa.settings,
gen_settings::ParentGroup::Shared, gen_settings::ParentGroup::Shared,
&format!("new_settings-{}", isa.name), &format!("new_settings-{}.rs", isa.name),
&out_dir, &out_dir,
)?; )?;
} }