| use crate::cdsl::isa::TargetIsa; |
| use crate::cdsl::settings::SettingGroupBuilder; |
| |
| pub(crate) fn define() -> TargetIsa { |
| let mut settings = SettingGroupBuilder::new("s390x"); |
| |
| // The baseline architecture for cranelift is z14 (arch12), |
| // so we list only facilities of later processors here. |
| |
| // z15 (arch13) facilities |
| let has_mie2 = settings.add_bool( |
| "has_mie2", |
| "Has Miscellaneous-Instruction-Extensions Facility 2 support.", |
| "", |
| false, |
| ); |
| let has_vxrs_ext2 = settings.add_bool( |
| "has_vxrs_ext2", |
| "Has Vector-Enhancements Facility 2 support.", |
| "", |
| false, |
| ); |
| |
| // Architecture level presets |
| settings.add_preset( |
| "arch13", |
| "Thirteenth Edition of the z/Architecture.", |
| preset!(has_mie2 && has_vxrs_ext2), |
| ); |
| |
| // Processor presets |
| settings.add_preset( |
| "z15", |
| "IBM z15 processor.", |
| preset!(has_mie2 && has_vxrs_ext2), |
| ); |
| |
| TargetIsa::new("s390x", settings.build()) |
| } |