1
0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-09-16 19:41:44 +02:00
BLAKE3/.github/workflows/ci.yml

174 lines
6.2 KiB
YAML
Raw Normal View History

2019-12-10 03:20:04 +01:00
name: tests
on:
push:
branches:
- "*"
# not on tags
pull_request:
2019-12-10 03:20:04 +01:00
env:
BLAKE3_CI: "1"
RUSTFLAGS: "-D warnings"
2019-12-10 03:20:04 +01:00
jobs:
2019-12-10 03:25:24 +01:00
cargo_tests:
2020-02-07 19:46:42 +01:00
name: ${{ matrix.target.name }} ${{ matrix.channel }}
runs-on: ${{ matrix.target.os }}
2019-12-10 03:20:04 +01:00
strategy:
fail-fast: false
2019-12-10 03:20:04 +01:00
matrix:
2020-02-07 19:46:42 +01:00
target: [
{ "os": "ubuntu-latest", "toolchain": "x86_64-unknown-linux-gnu", "name": "Linux GNU" },
{ "os": "macOS-latest", "toolchain": "x86_64-apple-darwin", "name": "macOS" },
{ "os": "windows-latest", "toolchain": "x86_64-pc-windows-msvc", "name": "Windows MSVC" },
{ "os": "windows-latest", "toolchain": "x86_64-pc-windows-gnu", "name": "Windows GNU" }
]
channel: [stable, beta, nightly]
2019-12-10 03:20:04 +01:00
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
2020-02-07 19:46:42 +01:00
toolchain: ${{ format('{0}-{1}', matrix.channel, matrix.target.toolchain) }}
profile: minimal
2019-12-10 03:20:04 +01:00
override: true
# Print out instruction set support, for debugging.
2020-03-29 00:46:04 +01:00
- run: cargo run --quiet --bin instruction_set_support
# Default tests plus Rayon.
- run: cargo test --features=rayon
# no_std tests.
2019-12-10 03:20:04 +01:00
- run: cargo test --no-default-features
# A matrix of different test settings:
# - debug vs release
# - assembly vs Rust+C intrinsics vs pure Rust intrinsics
# - different levels of SIMD support
#
# Full SIMD support.
- run: cargo test --features=
- run: cargo test --features=prefer_intrinsics
- run: cargo test --features=pure
- run: cargo test --features= --release
- run: cargo test --features=prefer_intrinsics --release
- run: cargo test --features=pure --release
# No AVX-512.
- run: cargo test --features=no_avx512
- run: cargo test --features=no_avx512,prefer_intrinsics
- run: cargo test --features=no_avx512,pure
- run: cargo test --features=no_avx512 --release
- run: cargo test --features=no_avx512,prefer_intrinsics --release
- run: cargo test --features=no_avx512,pure --release
# No AVX2.
- run: cargo test --features=no_avx512,no_avx2
- run: cargo test --features=no_avx512,no_avx2,prefer_intrinsics
- run: cargo test --features=no_avx512,no_avx2,pure
- run: cargo test --features=no_avx512,no_avx2 --release
- run: cargo test --features=no_avx512,no_avx2,prefer_intrinsics --release
- run: cargo test --features=no_avx512,no_avx2,pure --release
# No SSE4.1
- run: cargo test --features=no_avx512,no_avx2,no_sse41
- run: cargo test --features=no_avx512,no_avx2,no_sse41,prefer_intrinsics
- run: cargo test --features=no_avx512,no_avx2,no_sse41,pure
- run: cargo test --features=no_avx512,no_avx2,no_sse41 --release
- run: cargo test --features=no_avx512,no_avx2,no_sse41,prefer_intrinsics --release
- run: cargo test --features=no_avx512,no_avx2,no_sse41,pure --release
# Test benchmarks. RUSTC_BOOTSTRAP=1 lets this run on non-nightly toolchains.
- run: cargo test --benches
env:
RUSTC_BOOTSTRAP: 1
# Test vectors.
- name: test vectors
run: cargo test
working-directory: ./test_vectors
- name: test vectors intrinsics
run: cargo test --features=prefer_intrinsics
working-directory: ./test_vectors
- name: test vectors pure
run: cargo test --features=pure
working-directory: ./test_vectors
2019-12-12 08:13:16 +01:00
# Test b3sum.
- name: test b3sum
run: cargo test
working-directory: ./b3sum
- name: test b3sum --no-default-features
run: cargo test --no-default-features
working-directory: ./b3sum
# Test C code.
- name: cargo test C bindings assembly
run: cargo test
working-directory: ./c/blake3_c_rust_bindings
- name: cargo test C bindings intrinsics
run: cargo test --features=prefer_intrinsics
working-directory: ./c/blake3_c_rust_bindings
2020-01-20 22:36:30 +01:00
# Reference impl doc test.
- name: reference impl doc test
run: cargo test
working-directory: ./reference_impl
2019-12-10 03:20:04 +01:00
2019-12-10 03:25:24 +01:00
cross_tests:
name: cross ${{ matrix.arch }}
2019-12-10 03:20:04 +01:00
runs-on: ubuntu-latest
strategy:
2020-03-24 21:45:33 +01:00
fail-fast: false
matrix:
2020-02-11 19:58:26 +01:00
arch:
- i686-unknown-linux-musl
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-gnu
- mips-unknown-linux-gnu
2019-12-10 03:20:04 +01:00
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- run: cargo install cross
# Test the portable implementation on everything.
- run: cross test --target ${{ matrix.arch }}
# Test the NEON implementation on ARM targets.
- run: cross test --target ${{ matrix.arch }} --features=neon
2019-12-12 05:21:25 +01:00
if: startsWith(matrix.arch, 'armv7-') || startsWith(matrix.arch, 'aarch64-')
# Test vectors. Note that this uses a hacky script due to path dependency limitations.
- run: ./test_vectors/cross_test.sh --target ${{ matrix.arch }}
# Currently only on x86.
c_tests:
name: C Makefile tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
2020-02-12 19:10:24 +01:00
# Test the intrinsics-based implementations.
- run: make test
working-directory: ./c
2020-01-20 22:19:16 +01:00
- run: make clean && rm blake3_sse41.c
working-directory: ./c
- run: BLAKE3_NO_SSE41=1 make test
working-directory: ./c
- run: make clean && rm blake3_avx2.c
working-directory: ./c
- run: BLAKE3_NO_SSE41=1 BLAKE3_NO_AVX2=1 make test
working-directory: ./c
- run: make clean && rm blake3_avx512.c
working-directory: ./c
- run: BLAKE3_NO_SSE41=1 BLAKE3_NO_AVX2=1 BLAKE3_NO_AVX512=1 make test
working-directory: ./c
2020-02-12 19:10:24 +01:00
# Test the assembly implementations.
- run: make test_asm
working-directory: ./c
- run: make clean && rm blake3_sse41_x86-64_unix.S
2020-02-12 19:10:24 +01:00
working-directory: ./c
- run: BLAKE3_NO_SSE41=1 make test_asm
working-directory: ./c
- run: make clean && rm blake3_avx2_x86-64_unix.S
2020-02-12 19:10:24 +01:00
working-directory: ./c
- run: BLAKE3_NO_SSE41=1 BLAKE3_NO_AVX2=1 make test_asm
working-directory: ./c
- run: make clean && rm blake3_avx512_x86-64_unix.S
2020-02-12 19:10:24 +01:00
working-directory: ./c
- run: BLAKE3_NO_SSE41=1 BLAKE3_NO_AVX2=1 BLAKE3_NO_AVX512=1 make test_asm
working-directory: ./c