chore: moved chunk_info to common and code cleanup
This commit is contained in:
parent
76dce27325
commit
e84116db8e
4 changed files with 34 additions and 35 deletions
|
|
@ -2,7 +2,7 @@ use super::intrinsic::ArmIntrinsicType;
|
|||
use crate::common::argument::{Argument, ArgumentList};
|
||||
use crate::common::constraint::Constraint;
|
||||
use crate::common::intrinsic::Intrinsic;
|
||||
use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition};
|
||||
use crate::common::intrinsic_helpers::IntrinsicType;
|
||||
use serde::Deserialize;
|
||||
use serde_json::Value;
|
||||
use std::collections::HashMap;
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ use std::fs::{self, File};
|
|||
|
||||
use rayon::prelude::*;
|
||||
|
||||
use crate::arm::config::POLY128_OSTREAM_DEF;
|
||||
use crate::common::SupportedArchitectureTest;
|
||||
use crate::common::cli::ProcessedCli;
|
||||
use crate::common::compare::compare_outputs;
|
||||
use crate::common::gen_c::{write_main_cpp, write_mod_cpp};
|
||||
|
|
@ -19,7 +17,8 @@ use crate::common::gen_rust::{
|
|||
};
|
||||
use crate::common::intrinsic::Intrinsic;
|
||||
use crate::common::intrinsic_helpers::TypeKind;
|
||||
use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, build_notices};
|
||||
use crate::common::{SupportedArchitectureTest, chunk_info};
|
||||
use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, POLY128_OSTREAM_DEF, build_notices};
|
||||
use intrinsic::ArmIntrinsicType;
|
||||
use json_parser::get_neon_intrinsics;
|
||||
|
||||
|
|
@ -28,13 +27,6 @@ pub struct ArmArchitectureTest {
|
|||
cli_options: ProcessedCli,
|
||||
}
|
||||
|
||||
fn chunk_info(intrinsic_count: usize) -> (usize, usize) {
|
||||
let available_parallelism = std::thread::available_parallelism().unwrap().get();
|
||||
let chunk_size = intrinsic_count.div_ceil(Ord::min(available_parallelism, intrinsic_count));
|
||||
|
||||
(chunk_size, intrinsic_count.div_ceil(chunk_size))
|
||||
}
|
||||
|
||||
impl SupportedArchitectureTest for ArmArchitectureTest {
|
||||
fn create(cli_options: ProcessedCli) -> Box<Self> {
|
||||
let a32 = cli_options.target.contains("v7");
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
|
|||
let prefix = self.kind.c_prefix();
|
||||
let const_prefix = if self.constant { "const " } else { "" };
|
||||
|
||||
if let (Some(bit_len), simd_len, vec_len) =
|
||||
(self.bit_len, self.simd_len, self.vec_len)
|
||||
{
|
||||
if let (Some(bit_len), simd_len, vec_len) = (self.bit_len, self.simd_len, self.vec_len) {
|
||||
match (simd_len, vec_len) {
|
||||
(None, None) => format!("{const_prefix}{prefix}{bit_len}_t"),
|
||||
(Some(simd), None) => format!("{prefix}{bit_len}x{simd}_t"),
|
||||
|
|
@ -102,7 +100,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
|
|||
}
|
||||
}
|
||||
|
||||
impl ArmIntrinsicType {
|
||||
impl ArmIntrinsicType {
|
||||
pub fn from_c(s: &str, target: &str) -> Result<Self, String> {
|
||||
const CONST_STR: &str = "const";
|
||||
if let Some(s) = s.strip_suffix('*') {
|
||||
|
|
@ -144,34 +142,36 @@ impl ArmIntrinsicType {
|
|||
),
|
||||
None => None,
|
||||
};
|
||||
Ok(ArmIntrinsicType{
|
||||
Ok(ArmIntrinsicType {
|
||||
data: IntrinsicType {
|
||||
ptr: false,
|
||||
ptr_constant: false,
|
||||
constant,
|
||||
kind: arg_kind,
|
||||
bit_len: Some(bit_len),
|
||||
simd_len,
|
||||
vec_len,
|
||||
},
|
||||
target: target.to_string()})
|
||||
ptr: false,
|
||||
ptr_constant: false,
|
||||
constant,
|
||||
kind: arg_kind,
|
||||
bit_len: Some(bit_len),
|
||||
simd_len,
|
||||
vec_len,
|
||||
},
|
||||
target: target.to_string(),
|
||||
})
|
||||
} else {
|
||||
let kind = start.parse::<TypeKind>()?;
|
||||
let bit_len = match kind {
|
||||
TypeKind::Int(_) => Some(32),
|
||||
_ => None,
|
||||
};
|
||||
Ok(ArmIntrinsicType{
|
||||
Ok(ArmIntrinsicType {
|
||||
data: IntrinsicType {
|
||||
ptr: false,
|
||||
ptr_constant: false,
|
||||
constant,
|
||||
kind: start.parse::<TypeKind>()?,
|
||||
bit_len,
|
||||
simd_len: None,
|
||||
vec_len: None,
|
||||
},
|
||||
target: target.to_string()})
|
||||
ptr: false,
|
||||
ptr_constant: false,
|
||||
constant,
|
||||
kind: start.parse::<TypeKind>()?,
|
||||
bit_len,
|
||||
simd_len: None,
|
||||
vec_len: None,
|
||||
},
|
||||
target: target.to_string(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,3 +22,10 @@ pub trait SupportedArchitectureTest {
|
|||
fn build_rust_file(&self) -> bool;
|
||||
fn compare_outputs(&self) -> bool;
|
||||
}
|
||||
|
||||
pub fn chunk_info(intrinsic_count: usize) -> (usize, usize) {
|
||||
let available_parallelism = std::thread::available_parallelism().unwrap().get();
|
||||
let chunk_size = intrinsic_count.div_ceil(Ord::min(available_parallelism, intrinsic_count));
|
||||
|
||||
(chunk_size, intrinsic_count.div_ceil(chunk_size))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue