Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ci/intrinsic-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,10 @@ case ${TARGET} in

x86_64-unknown-linux-gnu*)
TEST_CPPFLAGS="-fuse-ld=lld -I/usr/include/x86_64-linux-gnu/"
TEST_CXX_COMPILER="clang++"
TEST_CXX_COMPILER="g++"
TEST_RUNNER="${CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER}"
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_x86.txt
TEST_SAMPLE_INTRINSICS_PERCENTAGE=5
TEST_SAMPLE_INTRINSICS_PERCENTAGE=100
;;
*)
;;
Expand Down
8 changes: 7 additions & 1 deletion crates/core_arch/src/x86/avx512bw.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10681,7 +10681,7 @@ pub fn _mm_cvtepi16_epi8(a: __m128i) -> __m128i {
pub fn _mm_mask_cvtepi16_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
unsafe {
let convert = _mm_cvtepi16_epi8(a).as_i8x16();
let k: __mmask16 = 0b11111111_11111111 & k as __mmask16;
let k: __mmask16 = 0b11111111_00000000 | k as __mmask16;
transmute(simd_select_bitmask(k, convert, src.as_i8x16()))
}
}
Expand Down Expand Up @@ -20559,6 +20559,12 @@ mod tests {
let r = _mm_mask_cvtepi16_epi8(src, 0b11111111, a);
let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2);
assert_eq_m128i(r, e);

let src = _mm_set_epi8(1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1);
let a = _mm_set1_epi16(3);
let r = _mm_mask_cvtepi16_epi8(src, 0b11011110, a);
let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 1, 3, 3, 3, 3, 1);
assert_eq_m128i(r, e);
}

#[simd_test(enable = "avx512bw,avx512vl")]
Expand Down
48 changes: 24 additions & 24 deletions crates/intrinsic-test/missing_x86.txt
Original file line number Diff line number Diff line change
Expand Up @@ -877,28 +877,28 @@ _mm512_mask_floor_ps
_xgetbv

# Miscellaneous issues that can be fixed first
_kshiftli_mask16
_kshiftli_mask32
_kshiftli_mask64
_kshiftli_mask8
_kshiftri_mask16
_kshiftri_mask32
_kshiftri_mask64
_kshiftri_mask8
_mm256_castsi128_si256
_mm256_extract_epi16
_mm256_extract_epi8
_mm512_castsi128_si512
_mm512_castsi256_si512
# _kshiftli_mask16
# _kshiftli_mask32
# _kshiftli_mask64
# _kshiftli_mask8
# _kshiftri_mask16
# _kshiftri_mask32
# _kshiftri_mask64
# _kshiftri_mask8
# _mm256_castsi128_si256
# _mm256_extract_epi16
# _mm256_extract_epi8
# _mm512_castsi128_si512
# _mm512_castsi256_si512
# _mm512_conj_pch
_mm512_mask_reduce_max_pd
_mm512_mask_reduce_max_ps
_mm512_mask_reduce_min_pd
_mm512_mask_reduce_min_ps
_mm_comineq_sh
_mm_extract_epi16
_mm_extract_epi8
_mm_mask_cvtepi16_epi8
_mm_mask_cvtpd_epi32
_mm_mask_cvtpd_ps
_mm_ucomineq_sh
# _mm512_mask_reduce_max_pd
# _mm512_mask_reduce_max_ps
# _mm512_mask_reduce_min_pd
# _mm512_mask_reduce_min_ps
# _mm_comineq_sh
# _mm_extract_epi16
# _mm_extract_epi8
# _mm_mask_cvtepi16_epi8
# _mm_mask_cvtpd_epi32
# _mm_mask_cvtpd_ps
# _mm_ucomineq_sh
8 changes: 5 additions & 3 deletions crates/intrinsic-test/src/arm/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ pub fn build_cpp_compilation(config: &ProcessedCli) -> Option<CppCompilation> {
command = command.add_arch_flags(["faminmax", "lut", "sha3"]);
}

if !cpp_compiler.contains("clang") {
command = command.add_extra_flag("-flax-vector-conversions");
}
command = if !cpp_compiler.contains("clang") {
command.add_extra_flag("-flax-vector-conversions")
} else {
command.add_extra_flag(format!("--target={}", config.target).as_str())
};

let mut cpp_compiler = command.into_cpp_compilation();

Expand Down
4 changes: 0 additions & 4 deletions crates/intrinsic-test/src/common/compile_c.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@ impl CompilationCommandBuilder {

cpp_compiler.args(self.extra_flags);

if let Some(target) = &self.target {
cpp_compiler.arg(format!("--target={target}"));
}

CppCompilation(cpp_compiler)
}
}
Expand Down
12 changes: 8 additions & 4 deletions crates/intrinsic-test/src/x86/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,17 @@ pub fn build_cpp_compilation(config: &ProcessedCli) -> Option<CppCompilation> {
"-mavx512vbmi2",
"-mavx512vnni",
"-mavx512vpopcntdq",
"-ferror-limit=1000",
"-std=c++23",
]);

if !cpp_compiler.contains("clang") {
command = command.add_extra_flag("-flax-vector-conversions");
}
command = if !cpp_compiler.contains("clang") {
command.add_extra_flags(vec!["-fmax-errors=1000", "-flax-vector-conversions"])
} else {
command.add_extra_flags(vec![
"-ferror-limit=1000",
format!("--target={}", config.target).as_str(),
])
};

let cpp_compiler = command.into_cpp_compilation();

Expand Down
Loading