diff --git a/library/stdarch/.github/workflows/main.yml b/library/stdarch/.github/workflows/main.yml index d6ea2ea2cdf1..971d8c655ed6 100644 --- a/library/stdarch/.github/workflows/main.yml +++ b/library/stdarch/.github/workflows/main.yml @@ -115,6 +115,7 @@ jobs: os: ubuntu-latest test_everything: true rustflags: --cfg stdarch_intel_sde + disable_assert_instr: true - target: arm-unknown-linux-gnueabihf os: ubuntu-latest - target: armv7-unknown-linux-gnueabihf diff --git a/library/stdarch/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile b/library/stdarch/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile index b7fc930523e7..1a431f2e1d0e 100644 --- a/library/stdarch/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile +++ b/library/stdarch/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 +FROM ubuntu:24.04 RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ libc6-dev \ @@ -6,9 +6,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ make \ ca-certificates \ wget \ - bzip2 + xz-utils -RUN wget https://github.com/gnzlbg/intel_sde/raw/master/sde-external-8.35.0-2019-03-11-lin.tar.bz2 -RUN tar -xjf sde-external-8.35.0-2019-03-11-lin.tar.bz2 -ENV SKIP_TESTS="avx512bf16" -ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/sde-external-8.35.0-2019-03-11-lin/sde64 -rtm_mode full --" +RUN wget https://downloadmirror.intel.com/813591/sde-external-9.33.0-2024-01-07-lin.tar.xz +RUN tar -xJf sde-external-9.33.0-2024-01-07-lin.tar.xz +ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/sde-external-9.33.0-2024-01-07-lin/sde64 -future -rtm-mode full -tsx --" diff --git a/library/stdarch/crates/core_arch/src/x86/xsave.rs b/library/stdarch/crates/core_arch/src/x86/xsave.rs index 3ce7488dfd54..bb2323fe6429 100644 --- a/library/stdarch/crates/core_arch/src/x86/xsave.rs +++ b/library/stdarch/crates/core_arch/src/x86/xsave.rs @@ -254,8 +254,6 @@ mod tests { } */ - // FIXME: this looks like a bug in Intel's SDE: - #[cfg(not(stdarch_intel_sde))] #[simd_test(enable = "xsave,xsavec")] #[cfg_attr(miri, ignore)] // Register saving/restoring is not supported in Miri unsafe fn xsavec() { diff --git a/library/stdarch/crates/core_arch/src/x86_64/xsave.rs b/library/stdarch/crates/core_arch/src/x86_64/xsave.rs index 170b2b0b31ff..6d8867c20d01 100644 --- a/library/stdarch/crates/core_arch/src/x86_64/xsave.rs +++ b/library/stdarch/crates/core_arch/src/x86_64/xsave.rs @@ -126,12 +126,12 @@ pub unsafe fn _xrstors64(mem_addr: *const u8, rs_mask: u64) { // FIXME: https://github.com/rust-lang/stdarch/issues/209 // All these tests fail with Intel SDE. -/* + #[cfg(test)] mod tests { - use crate::core_arch::x86::x86_64::xsave; - use stdarch_test::simd_test; + use crate::core_arch::x86_64::xsave; use std::fmt; + use stdarch_test::simd_test; // FIXME: https://github.com/rust-lang/stdarch/issues/209 #[repr(align(64))] @@ -176,6 +176,7 @@ mod tests { } } + /* #[simd_test(enable = "xsave")] #[cfg_attr(miri, ignore)] // Register saving/restoring is not supported in Miri unsafe fn xsave64() { @@ -201,6 +202,7 @@ mod tests { xsave::_xsaveopt64(b.ptr(), m); assert_eq!(a, b); } + */ #[simd_test(enable = "xsave,xsavec")] #[cfg_attr(miri, ignore)] // Register saving/restoring is not supported in Miri @@ -214,18 +216,18 @@ mod tests { xsave::_xsavec64(b.ptr(), m); assert_eq!(a, b); } + /* + #[simd_test(enable = "xsave,xsaves")] + #[cfg_attr(miri, ignore)] // Register saving/restoring is not supported in Miri + unsafe fn xsaves64() { + let m = 0xFFFFFFFFFFFFFFFF_u64; //< all registers + let mut a = XsaveArea::new(); + let mut b = XsaveArea::new(); - #[simd_test(enable = "xsave,xsaves")] - #[cfg_attr(miri, ignore)] // Register saving/restoring is not supported in Miri - unsafe fn xsaves64() { - let m = 0xFFFFFFFFFFFFFFFF_u64; //< all registers - let mut a = XsaveArea::new(); - let mut b = XsaveArea::new(); - - xsave::_xsaves64(a.ptr(), m); - xsave::_xrstors64(a.ptr(), m); - xsave::_xsaves64(b.ptr(), m); - assert_eq!(a, b); - } + xsave::_xsaves64(a.ptr(), m); + xsave::_xrstors64(a.ptr(), m); + xsave::_xsaves64(b.ptr(), m); + assert_eq!(a, b); + } + */ } -*/