mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-28 19:27:30 +03:00
chore: moved chunk_info to common and code cleanup
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
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 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::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 @@ fn c_type(&self) -> String {
|
||||
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 @@ fn get_lane_function(&self) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ pub fn from_c(s: &str, target: &str) -> Result<Self, String> {
|
||||
),
|
||||
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 @@ fn create(cli_options: ProcessedCli) -> Box<Self>
|
||||
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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user