Nightly Linux tests / LLVM trunk #1886
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright 2020-2026, Intel Corporation | |
| # SPDX-License-Identifier: BSD-3-Clause | |
| # Nightly Linux run. | |
| name: Nightly Linux tests / LLVM trunk | |
| permissions: read-all | |
| # Run daily - test sse2-avx512 targets @ -O0/-O1/-O2 | |
| on: | |
| schedule: | |
| - cron: '0 7 * * *' | |
| push: | |
| branches: | |
| - '**test_nightly**' | |
| workflow_dispatch: | |
| inputs: | |
| llvm_sha: | |
| description: 'Specific LLVM commit SHA to build (leave empty for trunk HEAD)' | |
| required: false | |
| type: string | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| define-targets: | |
| # Only run in the main ispc/ispc repo to avoid unnecessary scheduled runs on forks. | |
| if: github.repository == 'ispc/ispc' | |
| runs-on: ubuntu-latest | |
| outputs: | |
| # TODO: restore avx2vnni targets when SDE problem is fixed | |
| targets: >- | |
| ["generic-i1x4", "generic-i1x8", "generic-i1x16", "generic-i1x32", | |
| "generic-i8x16", "generic-i8x32", | |
| "generic-i16x8", "generic-i16x16", | |
| "generic-i32x4", "generic-i32x8", "generic-i32x16", | |
| "generic-i64x4", | |
| "sse2-i32x4", "sse2-i32x8", | |
| "sse4-i8x16", "sse4-i16x8", "sse4-i32x4", "sse4-i32x8", | |
| "avx1-i32x4", "avx1-i32x8", "avx1-i32x16", "avx1-i64x4", | |
| "avx2-i8x32", "avx2-i16x16", "avx2-i32x4", "avx2-i32x8", "avx2-i32x16", "avx2-i64x4", | |
| "avx512skx-x4", "avx512skx-x8", "avx512skx-x16", "avx512skx-x64", "avx512skx-x32", | |
| "avx512icl-x4", "avx512icl-x8", "avx512icl-x16", "avx512icl-x64", "avx512icl-x32", | |
| "avx512spr-x4", "avx512spr-x8", "avx512spr-x16", "avx512spr-x64", "avx512spr-x32", | |
| "avx512gnr-x4", "avx512gnr-x8", "avx512gnr-x16", "avx512gnr-x64", "avx512gnr-x32", | |
| "avx10.2dmr-x4", "avx10.2dmr-x8", "avx10.2dmr-x16", "avx10.2dmr-x64", "avx10.2dmr-x32"] | |
| llvm_sha: ${{ steps.get-llvm-sha.outputs.llvm_sha }} | |
| steps: | |
| - name: Get LLVM SHA | |
| id: get-llvm-sha | |
| env: | |
| INPUT_LLVM_SHA: ${{ inputs.llvm_sha }} | |
| run: | | |
| if [ -n "$INPUT_LLVM_SHA" ]; then | |
| LLVM_SHA="$INPUT_LLVM_SHA" | |
| echo "Using provided LLVM SHA: $LLVM_SHA" | |
| else | |
| LLVM_SHA=$(git ls-remote https://github.com/llvm/llvm-project.git refs/heads/main | cut -f1) | |
| echo "Fetched LLVM main HEAD: $LLVM_SHA" | |
| fi | |
| echo "llvm_sha=$LLVM_SHA" >> "$GITHUB_OUTPUT" | |
| echo "$LLVM_SHA" > llvm-commit-sha.txt | |
| - name: Upload LLVM SHA artifact | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: llvm_commit_sha | |
| path: llvm-commit-sha.txt | |
| linux-build-llvm-trunk: | |
| needs: [define-targets] | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Free disk space | |
| uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 | |
| with: | |
| tool-cache: false | |
| android: true | |
| dotnet: true | |
| haskell: true | |
| large-packages: true | |
| docker-images: true | |
| swap-storage: true | |
| - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 | |
| with: | |
| submodules: true | |
| - name: Check environment | |
| run: | | |
| cat /proc/cpuinfo | |
| - name: Build LLVM | |
| run: | | |
| cd docker/ubuntu/22.04/cpu_ispc_build | |
| ls -al | |
| docker buildx create --use | |
| docker buildx build --tag ispc/ubuntu22.04 --target=llvm_build --build-arg REPO="${GITHUB_REPOSITORY}" --build-arg SHA="${GITHUB_SHA}" --build-arg LLVM_VERSION=trunk --build-arg LLVM_SHA="${{ needs.define-targets.outputs.llvm_sha }}" --output=type=tar,dest=result.tar . | |
| - name: Pack LLVM | |
| run: | | |
| cd docker/ubuntu/22.04/cpu_ispc_build | |
| tar xvf result.tar usr/local/src/llvm | |
| mv usr/local/src/llvm/bin-trunk . | |
| # Note using gzip here, instead of xz - trading of space for speed, as it's just for passing to another stage. | |
| tar czvf llvm-trunk-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.gz bin-trunk | |
| - name: Upload package | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: llvm_trunk_linux | |
| path: docker/ubuntu/22.04/cpu_ispc_build/llvm-trunk-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.gz | |
| linux-build-ispc-llvm-trunk: | |
| needs: [linux-build-llvm-trunk] | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 | |
| with: | |
| submodules: true | |
| - name: Download package | |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 | |
| with: | |
| name: llvm_trunk_linux | |
| - name: Install dependencies | |
| env: | |
| LLVM_TAR: llvm-trunk-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.gz | |
| LLVM_VERSION: trunk | |
| run: | | |
| .github/workflows/scripts/install-build-deps.sh | |
| - name: Check environment | |
| run: | | |
| which -a clang | |
| cat /proc/cpuinfo | |
| - name: Build package | |
| run: | | |
| .github/workflows/scripts/build-ispc.sh | |
| - name: Sanity testing (make check-all, make test) | |
| run: | | |
| .github/workflows/scripts/check-ispc.sh | |
| - name: Upload package | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: ispc_llvm_trunk_linux | |
| path: build/ispc-trunk-linux.tar.gz | |
| linux-test-llvm-trunk: | |
| needs: [define-targets, linux-build-ispc-llvm-trunk] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: ${{ matrix.arch }} | |
| artifact_name: ispc_llvm_trunk_linux | |
| targets: ${{ needs.define-targets.outputs.targets }} | |
| optsets: -O0 -O1 -O2 |