matrix:
fast_finish: true
include:
- # Linux (x86_64)
-
- - name: "x86_64-unknown-linux-gnu"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
-
- - name: "x86_64-unknown-linux-gnu+sse"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=sse
-
- - name: "x86_64-unknown-linux-gnu+sse2"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=sse2
-
- - name: "x86_64-unknown-linux-gnu+sse3"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=sse3
-
- - name: "x86_64-unknown-linux-gnu+sse4.1"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=sse4.1
-
- - name: "x86_64-unknown-linux-gnu+sse4.2"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=sse4.2
-
- - name: "x86_64-unknown-linux-gnu+avx"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=avx
-
- - name: "x86_64-unknown-linux-gnu+avx2"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=avx2
-
- - name: "x86_64-unknown-linux-gnu+avx512vl"
- os: linux
- arch: amd64
- env:
- - TARGET=x86_64-unknown-linux-gnu
- - TARGET_FEATURE=avx512vl
-
# Linux (aarch64)
-
- - name: "aarch64-unknown-linux-gnu"
+ - name: "aarch64-unknown-linux-gnu (neon)"
os: linux
arch: arm64
- env:
- - TARGET=aarch64-unknown-linux-gnu
- - name: "aarch64-unknown-linux-gnu+neon"
+ - name: "aarch64-unknown-linux-gnu (neon, sve)"
os: linux
arch: arm64
- env:
- - TARGET=aarch64-unknown-linux-gnu
- - TARGET_FEATURE=neon
+ env: RUSTFLAGS=-Ctarget-feature=+sve
- - name: "aarch64-unknown-linux-gnu+sve"
+ - name: "aarch64-unknown-linux-gnu (native, see log for cfg)"
os: linux
arch: arm64
- env:
- - TARGET=aarch64-unknown-linux-gnu
- - TARGET_FEATURE=sve
+ env: RUSTFLAGS=-Ctarget-cpu=native
- # Linux (powerpc64)
-
- - name: "powerpc64le-unknown-linux-gnu"
+ # Linux (powerpc64le)
+ - name: "powerpc64le-unknown-linux-gnu (altivec, vsx, power8-*)"
os: linux
arch: ppc64le
- env:
- - TARGET=powerpc64le-unknown-linux-gnu
- - name: "powerpc64le-unknown-linux-gnu+vsx"
+ - name: "powerpc64le-unknown-linux-gnu (native, see log for cfg)"
os: linux
arch: ppc64le
- env:
- - TARGET=powerpc64le-unknown-linux-gnu
- - TARGET_FEATURE=vsx
-
- # Windows (x86_64)
+ env: RUSTFLAGS=-Ctarget-cpu=native
- - name: "x86_64-pc-windows-msvc"
- os: windows
- arch: amd64
- env: TARGET=x86_64-pc-windows-msvc
-
- # Windows (i686)
-
- - name: "i686-pc-windows-msvc"
- os: windows
- env: TARGET=i686-pc-windows-msvc
-
- - name: "i686-pc-windows-msvc+sse"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=sse
-
- - name: "i686-pc-windows-msvc+sse2"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=sse2
-
- - name: "i686-pc-windows-msvc+sse3"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=sse3
-
- - name: "i686-pc-windows-msvc+sse4.1"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=sse4.1
-
- - name: "i686-pc-windows-msvc+sse4.2"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=sse4.2
-
- - name: "i686-pc-windows-msvc+avx"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=avx
-
- - name: "i686-pc-windows-msvc+avx2"
- os: windows
- arch: amd64
- env:
- - TARGET=i686-pc-windows-msvc
- - TARGET_FEATURE=avx2
-
- # Windows (i586)
-
- - name: "i586-pc-windows-msvc"
- os: windows
- env: TARGET=i586-pc-windows-msvc
-
- - name: "i586-pc-windows-msvc+sse"
- os: windows
- arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=sse
-
- - name: "i586-pc-windows-msvc+sse2"
- os: windows
- arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=sse2
-
- - name: "i586-pc-windows-msvc+sse3"
- os: windows
+ # Linux (x86_64) (for AVX512, which sadly seems to only *usually* be present
+ # on the github actions linux runner...)
+ - name: "x86_64-unknown-linux-gnu+avx512vl"
+ os: linux
arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=sse3
+ env: RUSTFLAGS=-Ctarget-feature=+avx512vl
- - name: "i586-pc-windows-msvc+sse4.1"
- os: windows
+ # WebAssembly (wasm-bindgen)
+ - name: "wasm32-unknown-unknown (node, firefox, chrome)"
+ os: linux
arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=sse4.1
+ addons:
+ firefox: latest
+ chrome: stable
+ install:
+ - curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
+ script:
+ - wasm-pack test --node --firefox --chrome --headless crates/core_simd
+ - wasm-pack test --node --firefox --chrome --headless crates/core_simd --release
- - name: "i586-pc-windows-msvc+sse4.2"
- os: windows
+ - name: "wasm32-unknown-unknown+simd128 (chrome)"
+ os: linux
arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=sse4.2
+ addons:
+ chrome: stable
+ install:
+ - curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
+ script:
+ - export RUSTFLAGS="-C target-feature=+simd128"
+ - wasm-pack test --chrome --headless crates/core_simd
+ - wasm-pack test --chrome --headless crates/core_simd --release
- - name: "i586-pc-windows-msvc+avx"
- os: windows
- arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=avx
+script:
+ - echo "## Requested target configuration (RUSTFLAGS=$RUSTFLAGS)"
+ - rustc --print=cfg $RUSTFLAGS
- - name: "i586-pc-windows-msvc+avx2"
- os: windows
- arch: amd64
- env:
- - TARGET=i586-pc-windows-msvc
- - TARGET_FEATURE=avx2
+ - echo "## Supported target configuration"
+ - rustc --print=cfg -Ctarget-cpu=native
- # OSX (x86_64)
+ - echo "\n---\n"
- - name: "x86_64-apple-darwin"
- os: osx
- arch: amd64
- env:
- - TARGET=x86_64-apple-darwin
+ - echo "## Running tests (debug)"
+ - cargo test -v
-script:
- - rustup target add $TARGET
- - if [ -n "$TARGET_FEATURE" ]; then RUSTFLAGS="-C target-feature=+$TARGET_FEATURE"; fi
- - cargo test -v --target $TARGET
+ - echo "## Running tests (release)"
+ - cargo test -v --release