diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 220b3908..00000000 --- a/.cirrus.yml +++ /dev/null @@ -1,172 +0,0 @@ -only_if: $CIRRUS_TAG == '' && ($CIRRUS_PR != '' || $CIRRUS_BRANCH == 'main' || $CIRRUS_BRANCH == 'dev') -auto_cancellation: $CIRRUS_PR != '' -env: - CARGO_INCREMENTAL: '0' - CARGO_NET_RETRY: '10' - CARGO_TERM_COLOR: always - RUST_BACKTRACE: '1' - RUST_TEST_THREADS: '1' - RUSTDOCFLAGS: -D warnings - RUSTFLAGS: -D warnings - RUSTUP_MAX_RETRIES: '10' - -aarch64_linux_dynamic_linking_test_task: - matrix: - - name: test ($TARGET) - env: - TARGET: aarch64-unknown-linux-gnu - arm_container: - image: rust - setup_script: - - set -ex - - lscpu - - rustup toolchain add nightly --no-self-update && rustup default nightly - - apt-get -o Acquire::Retries=10 -qq update && apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils - - name: test ($TARGET, glibc 2.17) - env: - TARGET: aarch64-unknown-linux-gnu - arm_container: - # glibc 2.17 is the minimum glibc version that aarch64 support is available: https://sourceware.org/legacy-ml/libc-announce/2012/msg00001.html - image: centos:7 - setup_script: - - set -ex - - lscpu - - yum install -y gcc moreutils - - curl --proto '=https' --tlsv1.2 -fsSL --retry 10 https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain nightly - - name: test ($TARGET, -C target-feature=-crt-static) - env: - TARGET: aarch64-unknown-linux-musl - RUSTDOCFLAGS: -D warnings -C target-feature=-crt-static - RUSTFLAGS: -D warnings -C target-feature=-crt-static - arm_container: - image: rust:alpine - setup_script: - - set -ex - - apk --no-cache add bash musl-dev util-linux moreutils - - lscpu - - rustup toolchain add nightly --no-self-update && rustup default nightly - test_script: - - | - [ ! -f $HOME/.cargo/env ] || . $HOME/.cargo/env - - set -ex - - ./tools/test.sh -vv - # We test doctest only once with the default build conditions because doctest is slow. Both api-test - # and src/tests have extended copies of doctest, so this will not reduce test coverage. - # outline-atomics is enabled by default on linux-gnu and linux-musl with dynamic linking. - - RUSTFLAGS="$RUSTFLAGS --cfg portable_atomic_no_outline_atomics" RUSTDOCFLAGS="$RUSTDOCFLAGS --cfg portable_atomic_no_outline_atomics" ./tools/test.sh -vv --tests - # +lse - # Neoverse N1 is ARMv8.2-a and doesn't support FEAT_LSE2. - # FEAT_LSE2 is tested on aarch64 macOS VM. - - RUSTFLAGS="$RUSTFLAGS -C target-feature=+lse" RUSTDOCFLAGS="$RUSTDOCFLAGS -C target-feature=+lse" ./tools/test.sh -vv --tests - -aarch64_linux_static_linking_test_task: - name: test ($TARGET) - env: - TARGET: aarch64-unknown-linux-musl - arm_container: - image: rust:alpine - setup_script: - - set -ex - - apk --no-cache add bash musl-dev util-linux moreutils - - lscpu - - rustup toolchain add nightly --no-self-update && rustup default nightly - test_script: - - set -ex - - ./tools/test.sh -vv - # We test doctest only once with the default build conditions because doctest is slow. Both api-test - # and src/tests have extended copies of doctest, so this will not reduce test coverage. - # outline-atomics is disabled by default on linux-musl with static linking. - - RUSTFLAGS="$RUSTFLAGS --cfg portable_atomic_outline_atomics" RUSTDOCFLAGS="$RUSTDOCFLAGS --cfg portable_atomic_outline_atomics" ./tools/test.sh -vv --tests - # +lse - # Neoverse N1 is ARMv8.2-a and doesn't support FEAT_LSE2. - # FEAT_LSE2 is tested on aarch64 macOS VM. - - RUSTFLAGS="$RUSTFLAGS -C target-feature=+lse" RUSTDOCFLAGS="$RUSTDOCFLAGS -C target-feature=+lse" ./tools/test.sh -vv --tests - -aarch64_macos_test_task: - name: test ($TARGET) - env: - TARGET: aarch64-apple-darwin - macos_instance: - image: ghcr.io/cirruslabs/macos-ventura-xcode - setup_script: - - set -ex - - sysctl hw.optional machdep.cpu - - brew install moreutils - - curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain nightly - test_script: - - . $HOME/.cargo/env - - set -ex - # macOS is +lse,+lse2 by default - # Cirrus CI's aarch64 macOS VM is fast enough, so run ignored tests too. - - ./tools/test.sh -vv -- --include-ignored - -aarch64_linux_valgrind_task: - name: valgrind ($TARGET) - env: - TARGET: aarch64-unknown-linux-gnu - arm_container: - image: rust - setup_script: - - set -ex - - rustup toolchain add nightly --no-self-update && rustup default nightly - - apt-get -o Acquire::Retries=10 -qq update && apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils valgrind - test_script: - - set -ex - - ./tools/test.sh valgrind -vv - # We test doctest only once with the default build conditions because doctest is slow. Both api-test - # and src/tests have extended copies of doctest, so this will not reduce test coverage. - # outline-atomics is enabled by default on linux-gnu and linux-musl with dynamic linking. - - RUSTFLAGS="$RUSTFLAGS --cfg portable_atomic_no_outline_atomics" RUSTDOCFLAGS="$RUSTDOCFLAGS --cfg portable_atomic_no_outline_atomics" ./tools/test.sh valgrind -vv --tests - # +lse - # As of Valgrind 3.19, Valgrind supports atomic instructions of ARMv8.0 and ARMv8.1 (FEAT_LSE). - - RUSTFLAGS="$RUSTFLAGS -C target-feature=+lse" RUSTDOCFLAGS="$RUSTDOCFLAGS -C target-feature=+lse" ./tools/test.sh valgrind -vv --tests -# -# aarch64_linux_bench_task: -# name: bench ($TARGET) -# env: -# TARGET: aarch64-unknown-linux-gnu -# arm_container: -# image: rust -# cpu: 4 -# memory: 12G -# setup_script: -# - set -ex -# - lscpu -# - rustup toolchain add nightly --no-self-update && rustup default nightly -# bench_script: -# - set -ex -# - cargo bench -vv --manifest-path bench/Cargo.toml -# - RUSTFLAGS="${RUSTFLAGS} -C target-feature=-outline-atomics --cfg portable_atomic_no_outline_atomics" cargo bench -vv --manifest-path bench/Cargo.toml -# - RUSTFLAGS="${RUSTFLAGS} -C target-feature=+lse" cargo bench -vv --manifest-path bench/Cargo.toml - -# x86_64_linux_bench_task: -# name: bench ($TARGET) -# env: -# TARGET: x86_64-unknown-linux-gnu -# container: -# image: rust -# cpu: 4 -# memory: 12G -# setup_script: -# - set -ex -# - lscpu -# - rustup toolchain add nightly --no-self-update && rustup default nightly -# bench_script: -# - set -ex -# - cargo bench -vv --manifest-path bench/Cargo.toml -# - RUSTFLAGS="${RUSTFLAGS} -C target-feature=+cmpxchg16b" cargo bench -vv --manifest-path bench/Cargo.toml - -# aarch64_macos_bench_task: -# name: bench ($TARGET) -# env: -# TARGET: aarch64-apple-darwin -# macos_instance: -# image: ghcr.io/cirruslabs/macos-ventura-xcode -# setup_script: -# - set -ex -# - sysctl hw.optional machdep.cpu -# - curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain nightly -# bench_script: -# - . $HOME/.cargo/env -# - set -ex -# - cargo bench -vv --manifest-path bench/Cargo.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d7f1fe0e..cb9f90a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,167 +37,170 @@ concurrency: cancel-in-progress: true jobs: - check-external-types: - uses: taiki-e/workflows/.github/workflows/check-external-types.yml@main - deny: - uses: taiki-e/workflows/.github/workflows/deny.yml@main - docs: - uses: taiki-e/workflows/.github/workflows/docs.yml@main - with: - target: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,powerpc64le-unknown-linux-gnu,s390x-unknown-linux-gnu,armv5te-unknown-linux-gnueabi - msrv: - needs: tidy - uses: taiki-e/workflows/.github/workflows/msrv.yml@main - with: - event_name: ${{ github.event_name }} - # NB: sync with env.TEST_FEATURES - # Exclude serde and critical-section features because the MSRV when it is enabled depends on the MSRV of them - args: --features float,std --ignore-unknown-features - tidy: - uses: taiki-e/workflows/.github/workflows/tidy.yml@main - with: - # clippy is covered by TESTS=1 ./tools/build.sh - clippy: false + # check-external-types: + # uses: taiki-e/workflows/.github/workflows/check-external-types.yml@main + # deny: + # uses: taiki-e/workflows/.github/workflows/deny.yml@main + # docs: + # uses: taiki-e/workflows/.github/workflows/docs.yml@main + # with: + # target: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,powerpc64le-unknown-linux-gnu,s390x-unknown-linux-gnu,armv5te-unknown-linux-gnueabi + # msrv: + # needs: tidy + # uses: taiki-e/workflows/.github/workflows/msrv.yml@main + # with: + # event_name: ${{ github.event_name }} + # # NB: sync with env.TEST_FEATURES + # # Exclude serde and critical-section features because the MSRV when it is enabled depends on the MSRV of them + # args: --features float,std --ignore-unknown-features + # tidy: + # uses: taiki-e/workflows/.github/workflows/tidy.yml@main + # with: + # # clippy is covered by TESTS=1 ./tools/build.sh + # clippy: false test: - needs: tidy + # needs: tidy strategy: fail-fast: false matrix: include: - - rust: '1.56' - - rust: '1.59' # LLVM 13 - - rust: '1.64' # LLVM 14 - - rust: '1.69' # LLVM 15 - - rust: stable # LLVM 16 (as of 1.70) - - rust: beta - - rust: nightly - - rust: nightly - os: macos-latest - - rust: nightly - os: windows-latest - - rust: nightly-x86_64-pc-windows-gnu - os: windows-latest - - rust: nightly-i686-pc-windows-msvc - os: windows-latest - - rust: nightly-i686-pc-windows-gnu - os: windows-latest - - rust: nightly - flags: -C panic=abort -Z panic_abort_tests - - rust: '1.59' # LLVM 13 - target: aarch64-unknown-linux-gnu - - rust: '1.64' # LLVM 14 - target: aarch64-unknown-linux-gnu - - rust: '1.69' # LLVM 15 - target: aarch64-unknown-linux-gnu - - rust: stable - target: aarch64-unknown-linux-gnu - - rust: beta - target: aarch64-unknown-linux-gnu - - rust: nightly - target: aarch64-unknown-linux-gnu - - rust: nightly - target: aarch64_be-unknown-linux-gnu - - rust: stable - target: aarch64-unknown-linux-musl - - rust: stable - target: aarch64-unknown-linux-musl - flags: -C target-feature=-crt-static - - rust: nightly - target: aarch64-unknown-linux-musl - - rust: nightly - target: aarch64-unknown-linux-musl - flags: -C target-feature=-crt-static - - rust: stable - target: aarch64-linux-android - - rust: nightly - target: aarch64-linux-android - - rust: nightly - target: aarch64-pc-windows-gnullvm - - rust: '1.59' - target: armv5te-unknown-linux-gnueabi - - rust: stable - target: armv5te-unknown-linux-gnueabi - - rust: nightly - target: armv5te-unknown-linux-gnueabi - - rust: nightly - target: arm-unknown-linux-gnueabi - - rust: nightly - target: armv7-unknown-linux-gnueabi - - rust: nightly - target: armv7-unknown-linux-gnueabihf - - rust: nightly - target: armeb-unknown-linux-gnueabi - - rust: nightly - target: arm-linux-androideabi - - rust: nightly - target: i586-unknown-linux-gnu - - rust: nightly - target: i686-unknown-linux-gnu - - rust: nightly - target: loongarch64-unknown-linux-gnu - - rust: nightly - target: mips-unknown-linux-gnu - - rust: nightly - target: mipsel-unknown-linux-gnu - - rust: nightly - target: mips64-unknown-linux-gnuabi64 - - rust: nightly - target: mips64el-unknown-linux-gnuabi64 - - rust: nightly - target: mipsisa32r6-unknown-linux-gnu - - rust: nightly - target: mipsisa32r6el-unknown-linux-gnu - - rust: nightly - target: mipsisa64r6-unknown-linux-gnuabi64 - - rust: nightly - target: mipsisa64r6el-unknown-linux-gnuabi64 - - rust: nightly - target: powerpc-unknown-linux-gnu - - rust: nightly - target: powerpc64-unknown-linux-gnu - # - rust: nightly-2023-03-26 # Rust 1.70, LLVM 16 + # - rust: '1.56' + # - rust: '1.59' # LLVM 13 + # - rust: '1.64' # LLVM 14 + # - rust: '1.69' # LLVM 15 + # - rust: stable # LLVM 16 (as of 1.70) + # - rust: beta + # - rust: nightly + # - rust: nightly + # os: macos-latest + # - rust: nightly + # os: windows-latest + # - rust: nightly-x86_64-pc-windows-gnu + # os: windows-latest + # - rust: nightly-i686-pc-windows-msvc + # os: windows-latest + # - rust: nightly-i686-pc-windows-gnu + # os: windows-latest + # - rust: nightly + # flags: -C panic=abort -Z panic_abort_tests + # - rust: '1.59' # LLVM 13 + # target: aarch64-unknown-linux-gnu + # - rust: '1.64' # LLVM 14 + # target: aarch64-unknown-linux-gnu + # - rust: '1.69' # LLVM 15 + # target: aarch64-unknown-linux-gnu + # - rust: stable + # target: aarch64-unknown-linux-gnu + # - rust: beta + # target: aarch64-unknown-linux-gnu + # - rust: nightly + # target: aarch64-unknown-linux-gnu + # - rust: nightly + # target: aarch64_be-unknown-linux-gnu + # - rust: stable + # target: aarch64-unknown-linux-musl + # - rust: stable + # target: aarch64-unknown-linux-musl + # flags: -C target-feature=-crt-static + # - rust: nightly + # target: aarch64-unknown-linux-musl + # - rust: nightly + # target: aarch64-unknown-linux-musl + # flags: -C target-feature=-crt-static + # - rust: stable + # target: aarch64-linux-android + # - rust: nightly + # target: aarch64-linux-android + # - rust: nightly + # target: aarch64-pc-windows-gnullvm + # - rust: '1.59' + # target: armv5te-unknown-linux-gnueabi + # - rust: stable + # target: armv5te-unknown-linux-gnueabi + # - rust: nightly + # target: armv5te-unknown-linux-gnueabi + # - rust: nightly + # target: arm-unknown-linux-gnueabi + # - rust: nightly + # target: armv7-unknown-linux-gnueabi + # - rust: nightly + # target: armv7-unknown-linux-gnueabihf + # - rust: nightly + # target: armeb-unknown-linux-gnueabi + # - rust: nightly + # target: arm-linux-androideabi + # - rust: nightly + # target: i586-unknown-linux-gnu + # - rust: nightly + # target: i686-unknown-linux-gnu + # - rust: nightly + # target: loongarch64-unknown-linux-gnu + # - rust: nightly + # target: mips-unknown-linux-gnu + # - rust: nightly + # target: mipsel-unknown-linux-gnu + # - rust: nightly + # target: mips64-unknown-linux-gnuabi64 + # - rust: nightly + # target: mips64el-unknown-linux-gnuabi64 + # - rust: nightly + # target: mipsisa32r6-unknown-linux-gnu + # - rust: nightly + # target: mipsisa32r6el-unknown-linux-gnu + # - rust: nightly + # target: mipsisa64r6-unknown-linux-gnuabi64 + # - rust: nightly + # target: mipsisa64r6el-unknown-linux-gnuabi64 + # - rust: nightly + # target: powerpc-unknown-linux-gnu + # - rust: nightly # target: powerpc64-unknown-linux-gnu - - rust: nightly-2023-03-25 # Rust 1.70, LLVM 15 - target: powerpc64-unknown-linux-gnu - # - rust: nightly-2022-08-13 # Rust 1.65, LLVM 15 + # # - rust: nightly-2023-03-26 # Rust 1.70, LLVM 16 + # # target: powerpc64-unknown-linux-gnu + # - rust: nightly-2023-03-25 # Rust 1.70, LLVM 15 # target: powerpc64-unknown-linux-gnu - - rust: nightly-2022-08-12 # Rust 1.65, LLVM 14 - target: powerpc64-unknown-linux-gnu - # - rust: nightly-2022-02-18 # Rust 1.60, LLVM 14 + # # - rust: nightly-2022-08-13 # Rust 1.65, LLVM 15 + # # target: powerpc64-unknown-linux-gnu + # - rust: nightly-2022-08-12 # Rust 1.65, LLVM 14 # target: powerpc64-unknown-linux-gnu - # - rust: nightly-2022-02-17 # Rust 1.60, LLVM 13 + # # - rust: nightly-2022-02-18 # Rust 1.60, LLVM 14 + # # target: powerpc64-unknown-linux-gnu + # # - rust: nightly-2022-02-17 # Rust 1.60, LLVM 13 + # # target: powerpc64-unknown-linux-gnu + # - rust: nightly-2022-02-13 # Rust 1.60, LLVM 13 (oldest version we can use asm_experimental_arch on this target) # target: powerpc64-unknown-linux-gnu - - rust: nightly-2022-02-13 # Rust 1.60, LLVM 13 (oldest version we can use asm_experimental_arch on this target) - target: powerpc64-unknown-linux-gnu - - rust: nightly - target: powerpc64le-unknown-linux-gnu - # - rust: nightly-2023-03-26 # Rust 1.70, LLVM 16 + # - rust: nightly # target: powerpc64le-unknown-linux-gnu - - rust: nightly-2023-03-25 # Rust 1.70, LLVM 15 - target: powerpc64le-unknown-linux-gnu - # - rust: nightly-2022-08-13 # Rust 1.65, LLVM 15 + # # - rust: nightly-2023-03-26 # Rust 1.70, LLVM 16 + # # target: powerpc64le-unknown-linux-gnu + # - rust: nightly-2023-03-25 # Rust 1.70, LLVM 15 # target: powerpc64le-unknown-linux-gnu - - rust: nightly-2022-08-12 # Rust 1.65, LLVM 14 - target: powerpc64le-unknown-linux-gnu - # - rust: nightly-2022-02-18 # Rust 1.60, LLVM 14 + # # - rust: nightly-2022-08-13 # Rust 1.65, LLVM 15 + # # target: powerpc64le-unknown-linux-gnu + # - rust: nightly-2022-08-12 # Rust 1.65, LLVM 14 # target: powerpc64le-unknown-linux-gnu - # - rust: nightly-2022-02-17 # Rust 1.60, LLVM 13 + # # - rust: nightly-2022-02-18 # Rust 1.60, LLVM 14 + # # target: powerpc64le-unknown-linux-gnu + # # - rust: nightly-2022-02-17 # Rust 1.60, LLVM 13 + # # target: powerpc64le-unknown-linux-gnu + # - rust: nightly-2022-02-13 # Rust 1.60, LLVM 13 (oldest version we can use asm_experimental_arch on this target) # target: powerpc64le-unknown-linux-gnu - - rust: nightly-2022-02-13 # Rust 1.60, LLVM 13 (oldest version we can use asm_experimental_arch on this target) - target: powerpc64le-unknown-linux-gnu - - rust: nightly - target: riscv32gc-unknown-linux-gnu - - rust: nightly - target: riscv64gc-unknown-linux-gnu - - rust: nightly - target: s390x-unknown-linux-gnu - - rust: nightly-2023-05-09 # Rust 1.71, LLVM 16 (oldest version we can use asm_experimental_arch on this target) - target: s390x-unknown-linux-gnu - - rust: nightly - target: sparc64-unknown-linux-gnu - - rust: nightly - target: thumbv7neon-unknown-linux-gnueabihf + # - rust: nightly + # target: riscv32gc-unknown-linux-gnu + # - rust: nightly + # target: riscv64gc-unknown-linux-gnu + # - rust: nightly + # target: s390x-unknown-linux-gnu + # - rust: nightly-2023-05-09 # Rust 1.71, LLVM 16 (oldest version we can use asm_experimental_arch on this target) + # target: s390x-unknown-linux-gnu + - rust: nightly + target: sparc-unknown-linux-gnu + flags: --cfg crossbeam_no_atomic_64 # TODO: needed until https://github.com/crossbeam-rs/crossbeam/commit/d7c1ac2cdf3089275238908f61b051bf2e0becbd released + # - rust: nightly + # target: sparc64-unknown-linux-gnu + # - rust: nightly + # target: thumbv7neon-unknown-linux-gnueabihf runs-on: ${{ matrix.os || 'ubuntu-latest' }} timeout-minutes: 60 steps: @@ -222,7 +225,7 @@ jobs: - uses: taiki-e/install-action@cargo-minimal-versions - uses: taiki-e/install-action@cargo-careful if: startsWith(matrix.rust, 'nightly') - - uses: taiki-e/setup-cross-toolchain-action@v1 + - uses: taiki-e/setup-cross-toolchain-action@main with: target: ${{ matrix.target }} if: matrix.target != '' @@ -328,278 +331,278 @@ jobs: - run: cargo minimal-versions build -vvv --workspace --no-private --features $TEST_FEATURES --ignore-unknown-features $TARGET $BUILD_STD $RELEASE - test-bsd: - needs: tidy - name: test (${{ matrix.target }}${{ matrix.version }}) - strategy: - fail-fast: false - matrix: - include: - - target: aarch64-unknown-freebsd - os: freebsd - version: '12.4' - - target: aarch64-unknown-freebsd - os: freebsd - version: '13.2' - - target: aarch64-unknown-openbsd - os: openbsd - version: '7.3' - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - uses: taiki-e/cross-platform-actions-action@neoverse-v1 - with: - environment_variables: CARGO_INCREMENTAL CARGO_NET_RETRY CARGO_TERM_COLOR RUST_BACKTRACE RUST_TEST_THREADS RUSTDOCFLAGS RUSTFLAGS RUSTUP_MAX_RETRIES TEST_FEATURES - operating_system: ${{ matrix.os }} - architecture: aarch64 - version: ${{ matrix.version }} - shell: bash - run: | - set -euxo pipefail - export RUSTFLAGS="${RUSTFLAGS} --cfg qemu" - # AArch64 FreeBSD/OpenBSD are tier 3 targets, so install rust from package manager instead of rustup. - case "$(uname -s)" in - FreeBSD) sudo pkg install -y rust ;; - OpenBSD) - # As of OpenBSD 7.3, the built-in git library is very slow. - export CARGO_NET_GIT_FETCH_WITH_CLI=true - # OpenBSD 7.3's rustc version is 1.68, which sparse protocol is not default protocol. - export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse - sudo pkg_add git rust - ;; - esac - rustc -vV - cargo test --features std --tests -- aarch64 + # test-bsd: + # needs: tidy + # name: test (${{ matrix.target }}${{ matrix.version }}) + # strategy: + # fail-fast: false + # matrix: + # include: + # - target: aarch64-unknown-freebsd + # os: freebsd + # version: '12.4' + # - target: aarch64-unknown-freebsd + # os: freebsd + # version: '13.2' + # - target: aarch64-unknown-openbsd + # os: openbsd + # version: '7.3' + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - uses: taiki-e/cross-platform-actions-action@neoverse-v1 + # with: + # environment_variables: CARGO_INCREMENTAL CARGO_NET_RETRY CARGO_TERM_COLOR RUST_BACKTRACE RUST_TEST_THREADS RUSTDOCFLAGS RUSTFLAGS RUSTUP_MAX_RETRIES TEST_FEATURES + # operating_system: ${{ matrix.os }} + # architecture: aarch64 + # version: ${{ matrix.version }} + # shell: bash + # run: | + # set -euxo pipefail + # export RUSTFLAGS="${RUSTFLAGS} --cfg qemu" + # # AArch64 FreeBSD/OpenBSD are tier 3 targets, so install rust from package manager instead of rustup. + # case "$(uname -s)" in + # FreeBSD) sudo pkg install -y rust ;; + # OpenBSD) + # # As of OpenBSD 7.3, the built-in git library is very slow. + # export CARGO_NET_GIT_FETCH_WITH_CLI=true + # # OpenBSD 7.3's rustc version is 1.68, which sparse protocol is not default protocol. + # export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse + # sudo pkg_add git rust + # ;; + # esac + # rustc -vV + # cargo test --features std --tests -- aarch64 - build: - needs: tidy - name: build (${{ matrix.name || matrix.rust }}) - strategy: - fail-fast: false - matrix: - include: - - rust: '1.34' - - rust: '1.59' - - rust: stable - - rust: beta - - rust: nightly - # The oldest nightly that can compile this crate is nightly-2019-01-27 - # which Atomic{I,U}{8,16,32,64} stabilized. - # https://github.com/rust-lang/rust/pull/57425 - # Note: Old nightly compilers are essentially fragile, so support for - # them is on a best-effort basis. - - rust: nightly-2019-01-27 - # https://github.com/taiki-e/portable-atomic/pull/52 - - rust: nightly-2020-06-21 - # for AVR: https://github.com/rust-lang/compiler-builtins/issues/400 - - rust: nightly-2020-12-26 - # Check that test suite can be built - - name: nightly, --tests - rust: nightly - tests: 1 - # Check that this crate can be built for all builtin targets - - name: stable, all tier1/tier2 - rust: stable - target-group: tier1/tier2 - # Skip targets that also checked by other matrix. - skip-default-target: 1 - - name: nightly, all tier1/tier2 - rust: nightly - target-group: tier1/tier2 - skip-default-target: 1 - - name: nightly, all tier3 - rust: nightly - target-group: tier3 - skip-default-target: 1 - runs-on: ubuntu-latest - timeout-minutes: 120 # TODO - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - uses: taiki-e/github-actions/free-device-space@main - if: matrix.target-group == '' - - name: Install Rust - run: rustup toolchain add ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }} - - uses: taiki-e/install-action@cargo-hack - - run: tools/build.sh - env: - TESTS: ${{ matrix.tests }} - TARGET_GROUP: ${{ matrix.target-group }} - SKIP_DEFAULT_TARGET: ${{ matrix.skip-default-target }} + # build: + # needs: tidy + # name: build (${{ matrix.name || matrix.rust }}) + # strategy: + # fail-fast: false + # matrix: + # include: + # - rust: '1.34' + # - rust: '1.59' + # - rust: stable + # - rust: beta + # - rust: nightly + # # The oldest nightly that can compile this crate is nightly-2019-01-27 + # # which Atomic{I,U}{8,16,32,64} stabilized. + # # https://github.com/rust-lang/rust/pull/57425 + # # Note: Old nightly compilers are essentially fragile, so support for + # # them is on a best-effort basis. + # - rust: nightly-2019-01-27 + # # https://github.com/taiki-e/portable-atomic/pull/52 + # - rust: nightly-2020-06-21 + # # for AVR: https://github.com/rust-lang/compiler-builtins/issues/400 + # - rust: nightly-2020-12-26 + # # Check that test suite can be built + # - name: nightly, --tests + # rust: nightly + # tests: 1 + # # Check that this crate can be built for all builtin targets + # - name: stable, all tier1/tier2 + # rust: stable + # target-group: tier1/tier2 + # # Skip targets that also checked by other matrix. + # skip-default-target: 1 + # - name: nightly, all tier1/tier2 + # rust: nightly + # target-group: tier1/tier2 + # skip-default-target: 1 + # - name: nightly, all tier3 + # rust: nightly + # target-group: tier3 + # skip-default-target: 1 + # runs-on: ubuntu-latest + # timeout-minutes: 120 # TODO + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - uses: taiki-e/github-actions/free-device-space@main + # if: matrix.target-group == '' + # - name: Install Rust + # run: rustup toolchain add ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }} + # - uses: taiki-e/install-action@cargo-hack + # - run: tools/build.sh + # env: + # TESTS: ${{ matrix.tests }} + # TARGET_GROUP: ${{ matrix.target-group }} + # SKIP_DEFAULT_TARGET: ${{ matrix.skip-default-target }} - no-std: - needs: tidy - strategy: - fail-fast: false - matrix: - rust: - - '1.64' - - stable - - nightly - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: Install Rust - run: rustup toolchain add ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }} - - uses: taiki-e/install-action@cargo-hack - if: startsWith(matrix.rust, 'nightly') - - uses: taiki-e/install-action@v2 - with: - tool: espup - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: startsWith(matrix.rust, 'nightly') - - run: | - set -euxo pipefail - sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends \ - avr-libc \ - gcc-avr \ - qemu-system-arm \ - qemu-system-misc \ - simavr - # APT's qemu package doesn't provide firmware for riscv32: https://packages.ubuntu.com/en/jammy/all/qemu-system-data/filelist - OPENSBI_VERSION=1.3.1 # https://github.com/riscv-software-src/opensbi/releases - curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://github.com/riscv-software-src/opensbi/releases/download/v${OPENSBI_VERSION}/opensbi-${OPENSBI_VERSION}-rv-bin.tar.xz" \ - | tar xJf - - sudo mv "opensbi-${OPENSBI_VERSION}-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin" /usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.bin - sudo mv "opensbi-${OPENSBI_VERSION}-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.elf" /usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf - rm -rf "opensbi-${OPENSBI_VERSION}-rv-bin" - - run: espup install --targets esp32 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: startsWith(matrix.rust, 'nightly') - - run: tools/no-std.sh - - run: tools/build.sh +esp xtensa-esp32-none-elf - if: startsWith(matrix.rust, 'nightly') - - run: tools/no-std.sh +esp xtensa-esp32-none-elf - if: startsWith(matrix.rust, 'nightly') + # no-std: + # needs: tidy + # strategy: + # fail-fast: false + # matrix: + # rust: + # - '1.64' + # - stable + # - nightly + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - name: Install Rust + # run: rustup toolchain add ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }} + # - uses: taiki-e/install-action@cargo-hack + # if: startsWith(matrix.rust, 'nightly') + # - uses: taiki-e/install-action@v2 + # with: + # tool: espup + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # if: startsWith(matrix.rust, 'nightly') + # - run: | + # set -euxo pipefail + # sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends \ + # avr-libc \ + # gcc-avr \ + # qemu-system-arm \ + # qemu-system-misc \ + # simavr + # # APT's qemu package doesn't provide firmware for riscv32: https://packages.ubuntu.com/en/jammy/all/qemu-system-data/filelist + # OPENSBI_VERSION=1.3.1 # https://github.com/riscv-software-src/opensbi/releases + # curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://github.com/riscv-software-src/opensbi/releases/download/v${OPENSBI_VERSION}/opensbi-${OPENSBI_VERSION}-rv-bin.tar.xz" \ + # | tar xJf - + # sudo mv "opensbi-${OPENSBI_VERSION}-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin" /usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.bin + # sudo mv "opensbi-${OPENSBI_VERSION}-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.elf" /usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf + # rm -rf "opensbi-${OPENSBI_VERSION}-rv-bin" + # - run: espup install --targets esp32 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # if: startsWith(matrix.rust, 'nightly') + # - run: tools/no-std.sh + # - run: tools/build.sh +esp xtensa-esp32-none-elf + # if: startsWith(matrix.rust, 'nightly') + # - run: tools/no-std.sh +esp xtensa-esp32-none-elf + # if: startsWith(matrix.rust, 'nightly') - miri: - needs: tidy - strategy: - fail-fast: false - matrix: - include: - - target: x86_64-unknown-linux-gnu - - target: x86_64-unknown-linux-gnu - flags: -C target-feature=+cmpxchg16b - - target: aarch64-unknown-linux-gnu - - target: i686-unknown-linux-gnu - - target: powerpc64le-unknown-linux-gnu - - target: s390x-unknown-linux-gnu - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: Install Rust - run: rustup toolchain add nightly --no-self-update --component miri && rustup default nightly - - run: sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils - - run: echo "TARGET=--target=${{ matrix.target }}" >>"${GITHUB_ENV}" - if: matrix.target != 'x86_64-unknown-linux-gnu' - - run: tools/test.sh miri $TARGET - env: - RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} ${{ matrix.flags }} - RUSTFLAGS: ${{ env.RUSTFLAGS }} ${{ matrix.flags }} + # miri: + # needs: tidy + # strategy: + # fail-fast: false + # matrix: + # include: + # - target: x86_64-unknown-linux-gnu + # - target: x86_64-unknown-linux-gnu + # flags: -C target-feature=+cmpxchg16b + # - target: aarch64-unknown-linux-gnu + # - target: i686-unknown-linux-gnu + # - target: powerpc64le-unknown-linux-gnu + # - target: s390x-unknown-linux-gnu + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - name: Install Rust + # run: rustup toolchain add nightly --no-self-update --component miri && rustup default nightly + # - run: sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils + # - run: echo "TARGET=--target=${{ matrix.target }}" >>"${GITHUB_ENV}" + # if: matrix.target != 'x86_64-unknown-linux-gnu' + # - run: tools/test.sh miri $TARGET + # env: + # RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} ${{ matrix.flags }} + # RUSTFLAGS: ${{ env.RUSTFLAGS }} ${{ matrix.flags }} - san: - needs: tidy - strategy: - fail-fast: false - matrix: - sanitizer: - - address - - memory - - thread - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: Install Rust - run: rustup toolchain add nightly --no-self-update && rustup default nightly - - run: sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils - - run: | - echo "ASAN_OPTIONS=detect_stack_use_after_return=1" >>"${GITHUB_ENV}" - echo "RUSTFLAGS=${RUSTFLAGS} -Z sanitizer=address" >>"${GITHUB_ENV}" - echo "RUSTDOCFLAGS=${RUSTDOCFLAGS} -Z sanitizer=address" >>"${GITHUB_ENV}" - if: matrix.sanitizer == 'address' - - run: | - echo "MSAN_OPTIONS=verbosity=2" >>"${GITHUB_ENV}" - echo "RUSTFLAGS=${RUSTFLAGS} -Z sanitizer=memory -Z sanitizer-memory-track-origins" >>"${GITHUB_ENV}" - echo "RUSTDOCFLAGS=${RUSTDOCFLAGS} -Z sanitizer=memory -Z sanitizer-memory-track-origins" >>"${GITHUB_ENV}" - if: matrix.sanitizer == 'memory' - - run: | - echo "RUSTFLAGS=${RUSTFLAGS} -Z sanitizer=thread" >>"${GITHUB_ENV}" - echo "RUSTDOCFLAGS=${RUSTDOCFLAGS} -Z sanitizer=thread" >>"${GITHUB_ENV}" - if: matrix.sanitizer == 'thread' - - run: tools/test.sh -Z build-std -vv - # We test doctest only once with the default build conditions because doctest is slow. Both api-test - # and src/tests have extended copies of doctest, so this will not reduce test coverage. - # +cmpxchg16b - - run: tools/test.sh -Z build-std -vv --tests - env: - RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics - RUSTFLAGS: ${{ env.RUSTFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics + # san: + # needs: tidy + # strategy: + # fail-fast: false + # matrix: + # sanitizer: + # - address + # - memory + # - thread + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - name: Install Rust + # run: rustup toolchain add nightly --no-self-update && rustup default nightly + # - run: sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils + # - run: | + # echo "ASAN_OPTIONS=detect_stack_use_after_return=1" >>"${GITHUB_ENV}" + # echo "RUSTFLAGS=${RUSTFLAGS} -Z sanitizer=address" >>"${GITHUB_ENV}" + # echo "RUSTDOCFLAGS=${RUSTDOCFLAGS} -Z sanitizer=address" >>"${GITHUB_ENV}" + # if: matrix.sanitizer == 'address' + # - run: | + # echo "MSAN_OPTIONS=verbosity=2" >>"${GITHUB_ENV}" + # echo "RUSTFLAGS=${RUSTFLAGS} -Z sanitizer=memory -Z sanitizer-memory-track-origins" >>"${GITHUB_ENV}" + # echo "RUSTDOCFLAGS=${RUSTDOCFLAGS} -Z sanitizer=memory -Z sanitizer-memory-track-origins" >>"${GITHUB_ENV}" + # if: matrix.sanitizer == 'memory' + # - run: | + # echo "RUSTFLAGS=${RUSTFLAGS} -Z sanitizer=thread" >>"${GITHUB_ENV}" + # echo "RUSTDOCFLAGS=${RUSTDOCFLAGS} -Z sanitizer=thread" >>"${GITHUB_ENV}" + # if: matrix.sanitizer == 'thread' + # - run: tools/test.sh -Z build-std -vv + # # We test doctest only once with the default build conditions because doctest is slow. Both api-test + # # and src/tests have extended copies of doctest, so this will not reduce test coverage. + # # +cmpxchg16b + # - run: tools/test.sh -Z build-std -vv --tests + # env: + # RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics + # RUSTFLAGS: ${{ env.RUSTFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics - valgrind: - needs: tidy - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: Install Rust - run: rustup toolchain add nightly --no-self-update && rustup default nightly - - run: sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils - - uses: taiki-e/install-action@valgrind - - run: tools/test.sh valgrind -vv - # We test doctest only once with the default build conditions because doctest is slow. Both api-test - # and src/tests have extended copies of doctest, so this will not reduce test coverage. - # +cmpxchg16b - - run: tools/test.sh valgrind -vv --tests - env: - # vmovdqa load/store path has been tested above, disable outline-atomics and test cmpxchg16b load/store path. - RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics - RUSTFLAGS: ${{ env.RUSTFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics + # valgrind: + # needs: tidy + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - name: Install Rust + # run: rustup toolchain add nightly --no-self-update && rustup default nightly + # - run: sudo apt-get -o Acquire::Retries=10 -qq update && sudo apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends moreutils + # - uses: taiki-e/install-action@valgrind + # - run: tools/test.sh valgrind -vv + # # We test doctest only once with the default build conditions because doctest is slow. Both api-test + # # and src/tests have extended copies of doctest, so this will not reduce test coverage. + # # +cmpxchg16b + # - run: tools/test.sh valgrind -vv --tests + # env: + # # vmovdqa load/store path has been tested above, disable outline-atomics and test cmpxchg16b load/store path. + # RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics + # RUSTFLAGS: ${{ env.RUSTFLAGS }} -C target-feature=+cmpxchg16b --cfg portable_atomic_no_outline_atomics - codegen: - needs: tidy - runs-on: ubuntu-latest - timeout-minutes: 60 - permissions: - contents: write - pull-requests: write - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: Install Rust - run: rustup toolchain add nightly --no-self-update --component rustfmt && rustup default nightly - - run: tools/no_atomic.sh - - run: tools/gen.sh - - id: diff - run: tools/ci/gen.sh - if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') - - uses: peter-evans/create-pull-request@v5 - with: - title: Update generated code - body: | - Auto-generated by [create-pull-request][1] - [Please close and immediately reopen this pull request to run CI.][2] + # codegen: + # needs: tidy + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # permissions: + # contents: write + # pull-requests: write + # steps: + # - uses: actions/checkout@v4 + # with: + # persist-credentials: false + # - name: Install Rust + # run: rustup toolchain add nightly --no-self-update --component rustfmt && rustup default nightly + # - run: tools/no_atomic.sh + # - run: tools/gen.sh + # - id: diff + # run: tools/ci/gen.sh + # if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') + # - uses: peter-evans/create-pull-request@v5 + # with: + # title: Update generated code + # body: | + # Auto-generated by [create-pull-request][1] + # [Please close and immediately reopen this pull request to run CI.][2] - [1]: https://github.com/peter-evans/create-pull-request - [2]: https://github.com/peter-evans/create-pull-request/blob/HEAD/docs/concepts-guidelines.md#workarounds-to-trigger-further-workflow-runs - branch: update-generated-code - if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false' - - run: git add -N . && git diff --exit-code + # [1]: https://github.com/peter-evans/create-pull-request + # [2]: https://github.com/peter-evans/create-pull-request/blob/HEAD/docs/concepts-guidelines.md#workarounds-to-trigger-further-workflow-runs + # branch: update-generated-code + # if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false' + # - run: git add -N . && git diff --exit-code diff --git a/src/imp/fallback/mod.rs b/src/imp/fallback/mod.rs index 8a8e7686..5522e075 100644 --- a/src/imp/fallback/mod.rs +++ b/src/imp/fallback/mod.rs @@ -420,7 +420,9 @@ mod tests { test_atomic_int!(i64); test_atomic_int!(u64); } + #[cfg(not(target_arch = "sparc"))] // TODO: LLVM bug: SIGILL on 128-bit add test_atomic_int!(i128); + #[cfg(not(target_arch = "sparc"))] // TODO: LLVM bug: SIGILL on 128-bit add test_atomic_int!(u128); // load/store/swap implementation is not affected by signedness, so it is diff --git a/src/imp/interrupt/mod.rs b/src/imp/interrupt/mod.rs index de98712e..10b1afc8 100644 --- a/src/imp/interrupt/mod.rs +++ b/src/imp/interrupt/mod.rs @@ -1,5 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 OR MIT +#![cfg_attr(all(target_arch = "sparc", test), allow(dead_code))] + // Critical section based fallback implementations // // This module supports two different critical section implementations: @@ -625,7 +627,9 @@ mod tests { test_atomic_int_single_thread!(u32); test_atomic_int_single_thread!(i64); test_atomic_int_single_thread!(u64); + #[cfg(not(target_arch = "sparc"))] // TODO: LLVM bug: SIGILL on 128-bit add test_atomic_int_single_thread!(i128); + #[cfg(not(target_arch = "sparc"))] // TODO: LLVM bug: SIGILL on 128-bit add test_atomic_int_single_thread!(u128); test_atomic_int_single_thread!(isize); test_atomic_int_single_thread!(usize); diff --git a/src/tests/mod.rs b/src/tests/mod.rs index ba7ed479..6ef87e69 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -31,7 +31,9 @@ test_atomic_int_pub!(i32); test_atomic_int_pub!(u32); test_atomic_int_pub!(i64); test_atomic_int_pub!(u64); +#[cfg(not(target_arch = "sparc"))] // TODO: LLVM bug: SIGILL on 128-bit add test_atomic_int_pub!(i128); +#[cfg(not(target_arch = "sparc"))] // TODO: LLVM bug: SIGILL on 128-bit add test_atomic_int_pub!(u128); #[cfg(feature = "float")]