diff options
9 files changed, 57 insertions, 54 deletions
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/compile.rs b/library/stdarch/crates/intrinsic-test/src/arm/compile.rs index 80b25aa8ab9..b76dcc79fa4 100644 --- a/library/stdarch/crates/intrinsic-test/src/arm/compile.rs +++ b/library/stdarch/crates/intrinsic-test/src/arm/compile.rs @@ -1,5 +1,5 @@ use crate::common::compile_c::CompilationCommandBuilder; -use crate::common::gen_c::compile_c; +use crate::common::gen_c::compile_c_programs; pub fn compile_c_arm( intrinsics_name_list: &Vec<String>, @@ -60,5 +60,5 @@ pub fn compile_c_arm( }) .collect::<Vec<_>>(); - compile_c(&compiler_commands) + compile_c_programs(&compiler_commands) } diff --git a/library/stdarch/crates/intrinsic-test/src/arm/mod.rs b/library/stdarch/crates/intrinsic-test/src/arm/mod.rs index 97e23093283..24d7ab25793 100644 --- a/library/stdarch/crates/intrinsic-test/src/arm/mod.rs +++ b/library/stdarch/crates/intrinsic-test/src/arm/mod.rs @@ -4,16 +4,16 @@ mod intrinsic; mod json_parser; mod types; -use crate::arm::compile::compile_c_arm; -use crate::arm::intrinsic::ArmIntrinsicType; use crate::common::SupportedArchitectureTest; use crate::common::cli::ProcessedCli; use crate::common::compare::compare_outputs; -use crate::common::gen_rust::compile_rust; +use crate::common::gen_rust::compile_rust_programs; use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition}; use crate::common::intrinsic_helpers::TypeKind; use crate::common::write_file::{write_c_testfiles, write_rust_testfiles}; +use compile::compile_c_arm; use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, POLY128_OSTREAM_DEF, build_notices}; +use intrinsic::ArmIntrinsicType; use json_parser::get_neon_intrinsics; pub struct ArmArchitectureTest { @@ -97,7 +97,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest { AARCH_CONFIGURATIONS, ); - compile_rust(intrinsics_name_list, toolchain, target, linker) + compile_rust_programs(intrinsics_name_list, toolchain, target, linker) } fn compare_outputs(&self) -> bool { diff --git a/library/stdarch/crates/intrinsic-test/src/common/argument.rs b/library/stdarch/crates/intrinsic-test/src/common/argument.rs index 066d526c9d3..ce592c584ce 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/argument.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/argument.rs @@ -1,7 +1,7 @@ -use crate::common::cli::Language; -use crate::common::constraint::Constraint; -use crate::common::indentation::Indentation; -use crate::common::intrinsic_helpers::IntrinsicTypeDefinition; +use super::cli::Language; +use super::constraint::Constraint; +use super::indentation::Indentation; +use super::intrinsic_helpers::IntrinsicTypeDefinition; /// An argument for the intrinsic. #[derive(Debug, PartialEq, Clone)] diff --git a/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs b/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs index 6f91d676dc5..d84afb9fa34 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs @@ -11,7 +11,8 @@ use super::intrinsic_helpers::IntrinsicTypeDefinition; // The number of times each intrinsic will be called. const PASSES: u32 = 20; -pub fn generate_c_program( +// Formats the main C program template with placeholders +pub fn format_c_main_template( notices: &str, header_files: &[&str], arch_identifier: &str, @@ -61,7 +62,7 @@ int main(int argc, char **argv) {{ ) } -pub fn compile_c(compiler_commands: &[String]) -> bool { +pub fn compile_c_programs(compiler_commands: &[String]) -> bool { compiler_commands .par_iter() .map(|compiler_command| { @@ -86,7 +87,8 @@ pub fn compile_c(compiler_commands: &[String]) -> bool { .is_none() } -pub fn create_c_filenames(identifiers: &Vec<String>) -> BTreeMap<&String, String> { +// Creates directory structure and file path mappings +pub fn setup_c_file_paths(identifiers: &Vec<String>) -> BTreeMap<&String, String> { let _ = std::fs::create_dir("c_programs"); identifiers .par_iter() @@ -98,7 +100,7 @@ pub fn create_c_filenames(identifiers: &Vec<String>) -> BTreeMap<&String, String .collect::<BTreeMap<&String, String>>() } -pub fn generate_loop_c<T: IntrinsicTypeDefinition + Sized>( +pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>( intrinsic: &dyn IntrinsicDefinition<T>, indentation: Indentation, additional: &str, @@ -119,7 +121,7 @@ pub fn generate_loop_c<T: IntrinsicTypeDefinition + Sized>( ) } -pub fn gen_code_c<T: IntrinsicTypeDefinition>( +pub fn generate_c_constraint_blocks<T: IntrinsicTypeDefinition>( intrinsic: &dyn IntrinsicDefinition<T>, indentation: Indentation, constraints: &[&Argument<T>], @@ -144,7 +146,7 @@ pub fn gen_code_c<T: IntrinsicTypeDefinition>( name = current.name, ty = current.ty.c_type(), val = i, - pass = gen_code_c( + pass = generate_c_constraint_blocks( intrinsic, body_indentation, constraints, @@ -155,11 +157,12 @@ pub fn gen_code_c<T: IntrinsicTypeDefinition>( }) .join("\n") } else { - generate_loop_c(intrinsic, indentation, &name, PASSES, target) + generate_c_test_loop(intrinsic, indentation, &name, PASSES, target) } } -pub fn gen_c_program<T: IntrinsicTypeDefinition>( +// Compiles C test programs using specified compiler +pub fn create_c_test_program<T: IntrinsicTypeDefinition>( intrinsic: &dyn IntrinsicDefinition<T>, header_files: &[&str], target: &str, @@ -174,7 +177,7 @@ pub fn gen_c_program<T: IntrinsicTypeDefinition>( .collect_vec(); let indentation = Indentation::default(); - generate_c_program( + format_c_main_template( notices, header_files, c_target, @@ -183,7 +186,7 @@ pub fn gen_c_program<T: IntrinsicTypeDefinition>( .arguments() .gen_arglists_c(indentation, PASSES) .as_str(), - gen_code_c( + generate_c_constraint_blocks( intrinsic, indentation.nested(), constraints.as_slice(), diff --git a/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs b/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs index 06380b2c43e..67255fadc62 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs @@ -13,7 +13,7 @@ use super::intrinsic_helpers::IntrinsicTypeDefinition; // The number of times each intrinsic will be called. const PASSES: u32 = 20; -pub fn generate_rust_program( +pub fn format_rust_main_template( notices: &str, definitions: &str, configurations: &str, @@ -38,7 +38,7 @@ fn main() {{ ) } -pub fn compile_rust( +pub fn compile_rust_programs( binaries: Vec<String>, toolchain: Option<&str>, target: &str, @@ -125,7 +125,8 @@ path = "{binary}/main.rs""#, } } -pub fn create_rust_filenames(identifiers: &Vec<String>) -> BTreeMap<&String, String> { +// Creates directory structure and file path mappings +pub fn setup_rust_file_paths(identifiers: &Vec<String>) -> BTreeMap<&String, String> { identifiers .par_iter() .map(|identifier| { @@ -138,7 +139,7 @@ pub fn create_rust_filenames(identifiers: &Vec<String>) -> BTreeMap<&String, Str .collect::<BTreeMap<&String, String>>() } -pub fn generate_loop_rust<T: IntrinsicTypeDefinition>( +pub fn generate_rust_test_loop<T: IntrinsicTypeDefinition>( intrinsic: &dyn IntrinsicDefinition<T>, indentation: Indentation, additional: &str, @@ -169,7 +170,7 @@ pub fn generate_loop_rust<T: IntrinsicTypeDefinition>( ) } -pub fn gen_code_rust<T: IntrinsicTypeDefinition>( +pub fn generate_rust_constraint_blocks<T: IntrinsicTypeDefinition>( intrinsic: &dyn IntrinsicDefinition<T>, indentation: Indentation, constraints: &[&Argument<T>], @@ -193,7 +194,7 @@ pub fn gen_code_rust<T: IntrinsicTypeDefinition>( name = current.name, ty = current.ty.rust_type(), val = i, - pass = gen_code_rust( + pass = generate_rust_constraint_blocks( intrinsic, body_indentation, constraints, @@ -203,11 +204,12 @@ pub fn gen_code_rust<T: IntrinsicTypeDefinition>( }) .join("\n") } else { - generate_loop_rust(intrinsic, indentation, &name, PASSES) + generate_rust_test_loop(intrinsic, indentation, &name, PASSES) } } -pub fn gen_rust_program<T: IntrinsicTypeDefinition>( +// Top-level function to create complete test program +pub fn create_rust_test_program<T: IntrinsicTypeDefinition>( intrinsic: &dyn IntrinsicDefinition<T>, target: &str, notice: &str, @@ -221,7 +223,7 @@ pub fn gen_rust_program<T: IntrinsicTypeDefinition>( .collect_vec(); let indentation = Indentation::default(); - generate_rust_program( + format_rust_main_template( notice, definitions, cfg, @@ -230,7 +232,7 @@ pub fn gen_rust_program<T: IntrinsicTypeDefinition>( .arguments() .gen_arglists_rust(indentation.nested(), PASSES) .as_str(), - gen_code_rust( + generate_rust_constraint_blocks( intrinsic, indentation.nested(), &constraints, diff --git a/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs b/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs index 61891e7c97d..bc46ccfbac4 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/intrinsic.rs @@ -1,7 +1,6 @@ -use super::intrinsic_helpers::TypeKind; -use crate::common::argument::ArgumentList; -use crate::common::indentation::Indentation; -use crate::common::intrinsic_helpers::IntrinsicTypeDefinition; +use super::argument::ArgumentList; +use super::indentation::Indentation; +use super::intrinsic_helpers::{IntrinsicTypeDefinition, TypeKind}; /// An intrinsic #[derive(Debug, PartialEq, Clone)] diff --git a/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs b/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs index 2f2593a6602..d96e0429fc4 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs @@ -4,9 +4,9 @@ use std::str::FromStr; use itertools::Itertools as _; -use crate::common::cli::Language; -use crate::common::indentation::Indentation; -use crate::common::values::value_for_array; +use super::cli::Language; +use super::indentation::Indentation; +use super::values::value_for_array; #[derive(Debug, PartialEq, Copy, Clone)] pub enum TypeKind { diff --git a/library/stdarch/crates/intrinsic-test/src/common/mod.rs b/library/stdarch/crates/intrinsic-test/src/common/mod.rs index 1045152f9e0..5d51d3460ec 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/mod.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/mod.rs @@ -1,6 +1,4 @@ -use crate::common::cli::ProcessedCli; -use std::fs::File; -use std::io::Write; +use cli::ProcessedCli; pub mod argument; pub mod cli; @@ -25,8 +23,3 @@ pub trait SupportedArchitectureTest { fn build_rust_file(&self) -> bool; fn compare_outputs(&self) -> bool; } - -pub fn write_file(filename: &String, code: String) { - let mut file = File::create(&filename).unwrap(); - file.write_all(code.into_bytes().as_slice()).unwrap(); -} diff --git a/library/stdarch/crates/intrinsic-test/src/common/write_file.rs b/library/stdarch/crates/intrinsic-test/src/common/write_file.rs index 503b9e82304..abd6ab23b7f 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/write_file.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/write_file.rs @@ -1,9 +1,15 @@ -use super::gen_c::gen_c_program; -use super::gen_rust::{create_rust_filenames, gen_rust_program}; +use super::gen_c::create_c_test_program; +use super::gen_c::setup_c_file_paths; +use super::gen_rust::{create_rust_test_program, setup_rust_file_paths}; +use super::intrinsic::IntrinsicDefinition; use super::intrinsic_helpers::IntrinsicTypeDefinition; -use crate::common::gen_c::create_c_filenames; -use crate::common::intrinsic::IntrinsicDefinition; -use crate::common::write_file; +use std::fs::File; +use std::io::Write; + +pub fn write_file(filename: &String, code: String) { + let mut file = File::create(&filename).unwrap(); + file.write_all(code.into_bytes().as_slice()).unwrap(); +} pub fn write_c_testfiles<T: IntrinsicTypeDefinition + Sized>( intrinsics: &Vec<&dyn IntrinsicDefinition<T>>, @@ -17,10 +23,10 @@ pub fn write_c_testfiles<T: IntrinsicTypeDefinition + Sized>( .iter() .map(|i| i.name().clone()) .collect::<Vec<_>>(); - let filename_mapping = create_c_filenames(&intrinsics_name_list); + let filename_mapping = setup_c_file_paths(&intrinsics_name_list); intrinsics.iter().for_each(|&i| { - let c_code = gen_c_program( + let c_code = create_c_test_program( i, headers, target, @@ -48,10 +54,10 @@ pub fn write_rust_testfiles<T: IntrinsicTypeDefinition>( .iter() .map(|i| i.name().clone()) .collect::<Vec<_>>(); - let filename_mapping = create_rust_filenames(&intrinsics_name_list); + let filename_mapping = setup_rust_file_paths(&intrinsics_name_list); intrinsics.iter().for_each(|&i| { - let rust_code = gen_rust_program(i, rust_target, notice, definitions, cfg); + let rust_code = create_rust_test_program(i, rust_target, notice, definitions, cfg); match filename_mapping.get(&i.name()) { Some(filename) => write_file(filename, rust_code), None => {} |
