Skip to content

Commit 52091b5

Browse files
feat: updated exclusion list with more intrinsics, that can be fixed
immediately
1 parent 400be7f commit 52091b5

File tree

7 files changed

+121
-10
lines changed

7 files changed

+121
-10
lines changed

Cargo.lock

Lines changed: 70 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ci/run.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ case ${TARGET} in
9494
TEST_CXX_COMPILER="clang++"
9595
TEST_RUNNER="${CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER}"
9696
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_x86.txt
97+
TEST_SAMPLE_INTRINSICS_PERCENTAGE=5
9798
export STDARCH_DISABLE_ASSERT_INSTR=1
9899
PATH="$PATH":"$(pwd)"/c_programs
99100
export PATH

crates/intrinsic-test/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ itertools = "0.14.0"
2222
quick-xml = { version = "0.37.5", features = ["serialize", "overlapped-lists"] }
2323
serde-xml-rs = "0.8.0"
2424
regex = "1.11.1"
25+
rand = "0.9.2"

crates/intrinsic-test/missing_x86.txt

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -871,4 +871,34 @@ _m_pxor
871871
_m_to_int
872872
_m_to_int64
873873
_mm512_mask_floor_pd
874-
_mm512_mask_floor_ps
874+
_mm512_mask_floor_ps
875+
876+
# SDE ERROR: Cannot execute XGETBV with ECX != 0
877+
_xgetbv
878+
879+
# Miscellaneous issues that can be fixed first
880+
_kshiftli_mask16
881+
_kshiftli_mask32
882+
_kshiftli_mask64
883+
_kshiftli_mask8
884+
_kshiftri_mask16
885+
_kshiftri_mask32
886+
_kshiftri_mask64
887+
_kshiftri_mask8
888+
_mm256_castsi128_si256
889+
_mm256_extract_epi16
890+
_mm256_extract_epi8
891+
_mm512_castsi128_si512
892+
_mm512_castsi256_si512
893+
_mm512_conj_pch
894+
_mm512_mask_reduce_max_pd
895+
_mm512_mask_reduce_max_ps
896+
_mm512_mask_reduce_min_pd
897+
_mm512_mask_reduce_min_ps
898+
_mm_comineq_sh
899+
_mm_extract_epi16
900+
_mm_extract_epi8
901+
_mm_mask_cvtepi16_epi8
902+
_mm_mask_cvtpd_epi32
903+
_mm_mask_cvtpd_ps
904+
_mm_ucomineq_sh

crates/intrinsic-test/src/common/cli.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ pub struct Cli {
5454
/// Set the sysroot for the C++ compiler
5555
#[arg(long)]
5656
pub cxx_toolchain_dir: Option<String>,
57+
58+
#[arg(long, default_value_t = 100u8)]
59+
pub sample_percentage: u8,
5760
}
5861

5962
pub struct ProcessedCli {
@@ -65,6 +68,7 @@ pub struct ProcessedCli {
6568
pub linker: Option<String>,
6669
pub cxx_toolchain_dir: Option<String>,
6770
pub skip: Vec<String>,
71+
pub sample_percentage: u8,
6872
}
6973

7074
impl ProcessedCli {
@@ -74,6 +78,7 @@ impl ProcessedCli {
7478
let target = cli_options.target;
7579
let linker = cli_options.linker;
7680
let cxx_toolchain_dir = cli_options.cxx_toolchain_dir;
81+
let sample_percentage = cli_options.sample_percentage;
7782

7883
let skip = if let Some(filename) = cli_options.skip {
7984
let data = std::fs::read_to_string(&filename).expect("Failed to open file");
@@ -108,6 +113,7 @@ impl ProcessedCli {
108113
cxx_toolchain_dir,
109114
skip,
110115
filename,
116+
sample_percentage,
111117
}
112118
}
113119
}

crates/intrinsic-test/src/common/compare.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ pub fn compare_outputs(intrinsic_name_list: &Vec<String>, runner: &str, target:
1414
let intrinsics = intrinsic_name_list
1515
.par_iter()
1616
.filter_map(|intrinsic_name| {
17-
1817
let c = runner_command(runner)
1918
.arg("intrinsic-test-programs")
2019
.arg(intrinsic_name)

crates/intrinsic-test/src/x86/mod.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use crate::common::intrinsic::Intrinsic;
1212
use crate::common::intrinsic_helpers::TypeKind;
1313
use intrinsic::X86IntrinsicType;
1414
use itertools::Itertools;
15+
use rand::rng;
16+
use rand::seq::IndexedRandom;
1517
use xml_parser::get_xml_intrinsics;
1618

1719
pub struct X86ArchitectureTest {
@@ -47,7 +49,10 @@ impl SupportedArchitectureTest for X86ArchitectureTest {
4749
let intrinsics =
4850
get_xml_intrinsics(&cli_options.filename).expect("Error parsing input file");
4951

50-
let mut intrinsics = intrinsics
52+
let mut rng = rng();
53+
let sample_percentage: usize = cli_options.sample_percentage as usize;
54+
55+
let intrinsics = intrinsics
5156
.into_iter()
5257
// Not sure how we would compare intrinsic that returns void.
5358
.filter(|i| i.results.kind() != TypeKind::Void)
@@ -62,6 +67,12 @@ impl SupportedArchitectureTest for X86ArchitectureTest {
6267
.unique_by(|i| i.name.clone())
6368
.collect::<Vec<_>>();
6469

70+
let sample_size = (intrinsics.len() * sample_percentage) / 100;
71+
let mut intrinsics = intrinsics
72+
.choose_multiple(&mut rng, sample_size)
73+
.cloned()
74+
.collect::<Vec<_>>();
75+
6576
intrinsics.sort_by(|a, b| a.name.cmp(&b.name));
6677
Self {
6778
intrinsics: intrinsics,

0 commit comments

Comments
 (0)