1 //! RISC-V Settings. 2 3 use crate::settings::{self, detail, Builder}; 4 use core::fmt; 5 6 // Include code generated by `cranelift-codegen/meta/src/gen_settings.rs`. This file contains a 7 // public `Flags` struct with an impl for all of the settings defined in 8 // `cranelift-codegen/meta/src/isa/riscv/mod.rs`. 9 include!(concat!(env!("OUT_DIR"), "/settings-riscv.rs")); 10 11 #[cfg(test)] 12 mod tests { 13 use super::{builder, Flags}; 14 use crate::settings::{self, Configurable}; 15 use alloc::string::ToString; 16 17 #[test] display_default()18 fn display_default() { 19 let shared = settings::Flags::new(settings::builder()); 20 let b = builder(); 21 let f = Flags::new(&shared, b); 22 assert_eq!( 23 f.to_string(), 24 "[riscv]\n\ 25 supports_m = false\n\ 26 supports_a = false\n\ 27 supports_f = false\n\ 28 supports_d = false\n\ 29 enable_m = true\n\ 30 enable_e = false\n" 31 ); 32 // Predicates are not part of the Display output. 33 assert_eq!(f.full_float(), false); 34 } 35 36 #[test] predicates()37 fn predicates() { 38 let mut sb = settings::builder(); 39 sb.set("enable_simd", "true").unwrap(); 40 let shared = settings::Flags::new(sb); 41 let mut b = builder(); 42 b.enable("supports_f").unwrap(); 43 b.enable("supports_d").unwrap(); 44 let f = Flags::new(&shared, b); 45 assert_eq!(f.full_float(), true); 46 47 let mut sb = settings::builder(); 48 sb.set("enable_simd", "false").unwrap(); 49 let shared = settings::Flags::new(sb); 50 let mut b = builder(); 51 b.enable("supports_f").unwrap(); 52 b.enable("supports_d").unwrap(); 53 let f = Flags::new(&shared, b); 54 assert_eq!(f.full_float(), false); 55 } 56 } 57