cranelift_codegen_meta/isa/
s390x.rs

1use crate::cdsl::isa::TargetIsa;
2use crate::cdsl::settings::SettingGroupBuilder;
3
4pub(crate) fn define() -> TargetIsa {
5    let mut settings = SettingGroupBuilder::new("s390x");
6
7    // The baseline architecture for cranelift is z14 (arch12),
8    // so we list only facilities of later processors here.
9
10    // z15 (arch13) facilities
11    let has_mie2 = settings.add_bool(
12        "has_mie2",
13        "Has Miscellaneous-Instruction-Extensions Facility 2 support.",
14        "",
15        false,
16    );
17    let has_vxrs_ext2 = settings.add_bool(
18        "has_vxrs_ext2",
19        "Has Vector-Enhancements Facility 2 support.",
20        "",
21        false,
22    );
23
24    // Architecture level presets
25    settings.add_preset(
26        "arch13",
27        "Thirteenth Edition of the z/Architecture.",
28        preset!(has_mie2 && has_vxrs_ext2),
29    );
30
31    // Processor presets
32    settings.add_preset(
33        "z15",
34        "IBM z15 processor.",
35        preset!(has_mie2 && has_vxrs_ext2),
36    );
37
38    TargetIsa::new("s390x", settings.build())
39}