Skip to content

Commit

Permalink
Refactor the github workflow
Browse files Browse the repository at this point in the history
use llvm intrinsics in riscv

Removed nightly workaround
  • Loading branch information
sayantn committed Jul 19, 2024
1 parent 4279665 commit 2841d21
Show file tree
Hide file tree
Showing 16 changed files with 370 additions and 531 deletions.
27 changes: 0 additions & 27 deletions .github/workflows/aarch64.yml

This file was deleted.

24 changes: 0 additions & 24 deletions .github/workflows/armv8.yml

This file was deleted.

298 changes: 141 additions & 157 deletions .github/workflows/common.yml
Original file line number Diff line number Diff line change
@@ -1,181 +1,165 @@
name: Check

on: push
on:
pull_request:
push:
branches:
- master

jobs:
style:
name: Check Style
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install rust
run: rustup update

- name: Rustfmt Check
run: cargo fmt --all --check

clippy:
continue-on-error: true
name: Clippy Check of ${{ matrix.impl.name }}
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
impl:
- name: AES-NI
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: +sse4.1,+aes
- name: AES-NI with VAES
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: +vaes
- name: AES-NI with VAES and AVX-512
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: +vaes,+avx512f
- name: Neon
target: aarch64-unknown-linux-gnu
caps: AARCH64_UNKNOWN_LINUX_GNU
target-features: +aes
- name: RV64
target: riscv64gc-unknown-linux-gnu
caps: RISCV64GC_UNKNOWN_LINUX_GNU
target-features: +zkne,+zknd
- name: RV32
target: riscv32i-unknown-none-elf
caps: RISCV32I_UNKNOWN_NONE_ELF
target-features: +zkne,+zknd
- name: Software
target: x86_64-unknown-linux-gnu
caps: X86_64_UNKNOWN_LINUX_GNU
target-features: ''
steps:
- uses: actions/checkout@v3

- run: ${{ format('echo "CARGO_TARGET_{0}_RUSTFLAGS=-C target-feature={1}" >> $GITHUB_ENV', matrix.impl.caps, matrix.impl.target-features) }}

- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
toolchain: nightly
target: ${{ matrix.impl.target }}
components: clippy
profile: minimal
override: true

- name: Rustfmt check
uses: actions-rs/cargo@v1
- name: Clippy Check
run: cargo clippy --target ${{ matrix.impl.target }} --features=nightly --no-deps -- -D clippy::pedantic

test-aesni:
strategy:
matrix:
channel: [ stable, beta, nightly ]
name: Test of AESNI with ${{ matrix.channel }}
uses: ./.github/workflows/runtest.yml
with:
target: x86_64-unknown-linux-gnu
channel: ${{ matrix.channel }}
env-vars: CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS=-C target-feature=+sse4.1,+aes

test-aesni-vaes:
name: Test of AESNI with VAES
uses: ./.github/workflows/runtest.yml
with:
target: x86_64-unknown-linux-gnu
channel: nightly
env-vars: CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS=-C target-feature=+vaes

test-aesni-vaes-avx512:
name: Test of AESNI with VAES and AVX512F
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
wget https://downloadmirror.intel.com/813591/sde-external-9.33.0-2024-01-07-lin.tar.xz
tar -xJf sde-external-9.33.0-2024-01-07-lin.tar.xz
shell: bash
- uses: ./.github/workflows/runtest.yml
with:
command: fmt
args: --all --check

# clippy:
# continue-on-error: true
# name: Clippy Check of ${{ matrix.impl.name }}
# runs-on: ubuntu-latest
#
# strategy:
# fail-fast: false
# matrix:
# impl:
# - name: AES-NI
# target: x86_64-unknown-linux-gnu
# caps: X86_64_UNKNOWN_LINUX_GNU
# target-features: +sse4.1,+aes
# - name: AES-NI with VAES
# target: x86_64-unknown-linux-gnu
# caps: X86_64_UNKNOWN_LINUX_GNU
# target-features: +vaes
# - name: AES-NI with VAES and AVX-512
# target: x86_64-unknown-linux-gnu
# caps: X86_64_UNKNOWN_LINUX_GNU
# target-features: +vaes,+avx512f
# - name: Neon
# target: aarch64-unknown-linux-gnu
# caps: AARCH64_UNKNOWN_LINUX_GNU
# target-features: +aes
# - name: RV64
# target: riscv64gc-unknown-linux-gnu
# caps: RISCV64GC_UNKNOWN_LINUX_GNU
# target-features: +zkne,+zknd
# - name: RV32
# target: riscv32i-unknown-none-elf
# caps: RISCV32I_UNKNOWN_NONE_ELF
# target-features: +zkne,+zknd
# - name: Software
# target: x86_64-unknown-linux-gnu
# caps: X86_64_UNKNOWN_LINUX_GNU
# target-features: ''
# steps:
# - uses: actions/checkout@v3
#
# - run: ${{ format('echo "CARGO_TARGET_{0}_RUSTFLAGS=-C target-feature={1}" >> $GITHUB_ENV', matrix.impl.caps, matrix.impl.target-feature) }}
#
# - name: Install Rust
# uses: actions-rs/toolchain@v1
# with:
# toolchain: nightly
# target: ${{ matrix.impl.target }}
# components: clippy
# profile: minimal
# override: true
#
# - name: Clippy Check
# uses: actions-rs/cargo@v1
# with:
# command: clippy
# args: --target ${{ matrix.impl.target }} --features=nightly --no-deps

# test-x86:
# strategy:
# fail-fast: false
# matrix:
# target:
# - triple: x86_64-unknown-linux-gnu
# caps: X86_64_UNKNOWN_LINUX_GNU
# - triple: x86_64-unknown-linux-musl
# caps: X86_64_UNKNOWN_LINUX_MUSL
# - triple: i686-unknown-linux-gnu
# caps: I686_UNKNOWN_LINUX_GNU
# - triple: i586-unknown-linux-gnu
# caps: I586_UNKNOWN_LINUX_GNU
# - triple: i586-unknown-linux-musl
# caps: I586_UNKNOWN_LINUX_MUSL
# uses: ./.github/workflows/x86.yml
# with:
# target: ${{ matrix.target.triple }}
# target-in-caps: ${{ matrix.target.caps }}
#
# test-aarch64:
# strategy:
# fail-fast: false
# matrix:
# target:
# - triple: aarch64-unknown-linux-gnu
# caps: AARCH64_UNKNOWN_LINUX_GNU
# - triple: aarch64-unknown-linux-musl
# caps: AARCH64_UNKNOWN_LINUX_MUSL
# uses: ./.github/workflows/aarch64.yml
# with:
# target: ${{ matrix.target.triple }}
# target-in-caps: ${{ matrix.target.caps }}
#
# test-armv8:
# strategy:
# fail-fast: false
# matrix:
# target:
# - triple: armv7-linux-androideabi
# caps: ARMV7_LINUX_ANDROIDEABI
# - triple: armv7-unknown-linux-gnueabihf
# caps: ARMV7_UNKNOWN_LINUX_GNUEABIHF
# - triple: armv7-unknown-linux-musleabihf
# caps: ARMV7_UNKNOWN_LINUX_MUSLEABIHF
# - triple: thumbv7neon-linux-androideabi
# caps: THUMBV7NEON_LINUX_ANDROIDEABI
# - triple: thumbv7neon-unknown-linux-gnueabihf
# caps: THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF
# uses: ./.github/workflows/armv8.yml
# with:
# target: ${{ matrix.target.triple }}
# target-in-caps: ${{ matrix.target.caps }}
#
# test-other:
# strategy:
# fail-fast: false
# matrix:
# target:
# - riscv64gc-unknown-linux-gnu
# - arm-linux-androideabi
# - arm-unknown-linux-gnueabi
# - arm-unknown-linux-gnueabihf
# - arm-unknown-linux-musleabi
# - arm-unknown-linux-musleabihf
# - armv5te-unknown-linux-gnueabi
# - armv5te-unknown-linux-musleabi
# - armv7-unknown-linux-gnueabi
# - armv7-unknown-linux-musleabi
# - powerpc-unknown-linux-gnu
# - powerpc64-unknown-linux-gnu
# - powerpc64le-unknown-linux-gnu
# - sparc64-unknown-linux-gnu
# - wasm32-unknown-emscripten
# uses: ./.github/workflows/other.yml
# with:
# target: ${{ matrix.target }}

test-build-std:
# These environments have cross support, but don't have rust-std, so cross has to build core, so, nightly-only
target: x86_64-unknown-linux-gnu
channel: nightly
env-vars: |
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS=-C target-feature=+vaes,+avx512f
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER=/sde-external-9.33.0-2024-01-07-lin/sde64 -future --
test-neon:
strategy:
matrix:
channel: [ stable, beta, nightly ]
name: Test of Neon on AArch64 with ${{ matrix.channel }}
uses: ./.github/workflows/runtest.yml
with:
target: aarch64-unknown-linux-gnu
channel: ${{ matrix.channel }}
env-vars: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS=-C target-feature=+aes

test-armv8:
name: Test of Neon on ${{ matrix.target }}
strategy:
fail-fast: false
matrix:
target:
- mips-unknown-linux-gnu
- mips-unknown-linux-musl
- mips64-unknown-linux-gnuabi64
- mips64-unknown-linux-muslabi64
- mipsel-unknown-linux-gnu
- mipsel-unknown-linux-musl
- mips64el-unknown-linux-gnuabi64
- mips64el-unknown-linux-muslabi64
name: Test of Software AES on ${{ matrix.target }} with build-std
- triple: armv7-linux-androideabi
caps: ARMV7_LINUX_ANDROIDEABI
- triple: armv7-unknown-linux-gnueabihf
caps: ARMV7_UNKNOWN_LINUX_GNUEABIHF
- triple: thumbv7neon-linux-androideabi
caps: THUMBV7NEON_LINUX_ANDROIDEABI
- triple: thumbv7neon-unknown-linux-gnueabihf
caps: THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF
uses: ./.github/workflows/runtest.yml
with:
target: ${{ matrix.target }}
target: ${{ matrix.target.triple }}
channel: nightly
build-std: true
env-vars: ${{ format('CARGO_TARGET_{0}_RUSTFLAGS=-C target-feature=+v8,+aes', matrix.target.caps) }}

test-riscv:
name: Test of RV64
uses: ./.github/workflows/runtest.yml
with:
target: riscv64gc-unknown-linux-gnu
channel: nightly
env-vars: |
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUSTFLAGS=-C target-feature=+zkne,+zknd
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUNNER=qemu-riscv64 -cpu rv64,zk=true
test-software:
strategy:
matrix:
channel: [ stable, beta, nightly ]
target:
- x86_64-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
name: Test of Software AES on ${{ matrix.target }} with ${{ matrix.channel }} Rust
uses: ./.github/workflows/runtest.yml
with:
target: ${{ matrix.target }}
channel: ${{ matrix.channel }}
18 changes: 0 additions & 18 deletions .github/workflows/other.yml

This file was deleted.

Loading

0 comments on commit 2841d21

Please sign in to comment.