Tests #1646
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-2025, Intel Corporation | |
| # SPDX-License-Identifier: BSD-3-Clause | |
| name: Tests | |
| permissions: read-all | |
| on: | |
| schedule: | |
| # Run daily - test sse2-avx512 targets @ -O0/-O1/-O2 | |
| - cron: '0 7 * * *' | |
| pull_request: | |
| workflow_dispatch: | |
| inputs: | |
| flow_type: | |
| description: 'Workflow flow type (full or smoke)' | |
| required: true | |
| default: 'smoke' | |
| type: choice | |
| options: | |
| - 'full' | |
| - 'smoke' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| SDE_MIRROR_ID: 843185 | |
| SDE_TAR_NAME: sde-external-9.48.0-2024-11-25 | |
| USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36" | |
| LLVM_REPO: https://github.com/ispc/ispc.dependencies | |
| TARGETS_SMOKE_X86: '["avx2-i32x8", "generic-i32x4"]' | |
| TARGETS_SMOKE_ARM: '["neon-i32x4"]' | |
| OPTSETS_SMOKE: "-O2" | |
| TARGETS_FULL_X86: '["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", | |
| "avx2vnni-i32x4", "avx2vnni-i32x8", "avx2vnni-i32x16", | |
| "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"]' | |
| TARGETS_FULL_ARM: '["neon-i32x4", "neon-i32x8", "neon-i8x16", "neon-i16x8", "neon-i8x32", "neon-i16x16"]' | |
| OPTSETS_FULL: "-O0 -O1 -O2" | |
| ISPC_ANDROID_NDK_PATH: "/usr/local/share/android-ndk" | |
| jobs: | |
| define-flow: | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| tests_matrix_targets_x86: ${{ steps.set-flow.outputs.matrix_x86 }} | |
| tests_matrix_targets_arm: ${{ steps.set-flow.outputs.matrix_arm }} | |
| tests_optsets: ${{ steps.set-flow.outputs.optsets }} | |
| flow_type: ${{ steps.set-flow.outputs.type }} | |
| env: | |
| # for debug purposes | |
| REF_NAME: ${{ github.ref }} | |
| EVENT_NAME: ${{ github.event_name }} | |
| # define rule when to run full flow | |
| RUN_FULL: ${{ (github.ref == 'refs/heads/main' && github.event_name == 'schedule') || | |
| (github.event_name == 'workflow_dispatch' && github.event.inputs.flow_type == 'full') }} | |
| # define rule when to run smoke flow | |
| RUN_SMOKE: ${{ github.event_name == 'pull_request' || | |
| (github.event_name == 'workflow_dispatch' && github.event.inputs.flow_type == 'smoke') }} | |
| steps: | |
| - name: Set workflow jobs flow | |
| id: set-flow | |
| run: | | |
| # one and only one var should be set | |
| if [[ "$RUN_SMOKE" == false && "$RUN_FULL" == true ]]; then | |
| echo "type=full" >> "$GITHUB_OUTPUT" | |
| elif [[ "$RUN_SMOKE" == true && "$RUN_FULL" == false ]]; then | |
| echo "type=smoke" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "One and only one env var must be set: RUN_SMOKE or RUN_FULL" | |
| exit 1 | |
| fi | |
| # set tests matrix depends on flow | |
| if [[ "$RUN_SMOKE" == "true" ]]; then | |
| echo "matrix_x86=${TARGETS_SMOKE_X86}" >> "$GITHUB_OUTPUT" | |
| echo "matrix_arm=${TARGETS_SMOKE_ARM}" >> "$GITHUB_OUTPUT" | |
| fi | |
| if [[ "$RUN_FULL" == "true" ]]; then | |
| echo "matrix_x86=${TARGETS_FULL_X86}" >> "$GITHUB_OUTPUT" | |
| echo "matrix_arm=${TARGETS_FULL_ARM}" >> "$GITHUB_OUTPUT" | |
| fi | |
| # set tests optsets | |
| if [[ "$RUN_SMOKE" == "true" ]]; then | |
| echo "optsets=${OPTSETS_SMOKE}" >> "$GITHUB_OUTPUT" | |
| fi | |
| if [[ "$RUN_FULL" == "true" ]]; then | |
| echo "optsets=${OPTSETS_FULL}" >> "$GITHUB_OUTPUT" | |
| fi | |
| linux-aarch64-build-ispc: | |
| needs: [define-flow] | |
| runs-on: ubuntu-22.04-arm | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| llvm: | |
| - version: "18.1" | |
| full_version: "18.1.8" | |
| short_version: 18 | |
| env: | |
| LLVM_VERSION: ${{ matrix.llvm.version }} | |
| LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-ubuntu22.04aarch64-Release+Asserts-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: false | |
| - name: Install dependencies | |
| 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@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm${{ matrix.llvm.short_version }}_linux.aarch64 | |
| path: build/ispc-trunk-linux.tar.gz | |
| linux-build-ispc: | |
| needs: [define-flow] | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| llvm: | |
| - version: "17.0" | |
| full_version: "17.0.6" | |
| short_version: 17 | |
| - version: "18.1" | |
| full_version: "18.1.8" | |
| short_version: 18 | |
| - version: "19.1" | |
| full_version: "19.1.7" | |
| short_version: 19 | |
| env: | |
| LLVM_VERSION: ${{ matrix.llvm.version }} | |
| LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| 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@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm${{ matrix.llvm.short_version }}_linux | |
| path: build/ispc-trunk-linux.tar.gz | |
| linux-build-ispc-llvm18-lto: | |
| needs: [define-flow] | |
| runs-on: ubuntu-22.04 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-ubuntu22.04-Release+Asserts-lto-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.sh | |
| - name: Check environment | |
| run: | | |
| which -a clang | |
| cat /proc/cpuinfo | |
| - name: Build package | |
| run: | | |
| cmake -B build superbuild --preset os -DLTO=ON -DXE_DEPS=OFF -DCMAKE_CXX_FLAGS=-Werror -DPREBUILT_STAGE2_PATH="${GITHUB_WORKSPACE}/bin-$LLVM_VERSION" | |
| cmake --build build | |
| - name: Sanity testing (make check-all) | |
| run: | | |
| cmake --build build --target ispc-stage2-check-all | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm18_lto_linux | |
| path: build/build-ispc-stage2/src/ispc-stage2-build/ispc-trunk-linux.tar.gz | |
| linux-build-ispc-llvm18-release: | |
| needs: [define-flow] | |
| runs-on: ubuntu-22.04 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-ubuntu22.04-Release-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| 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 -DISPC_CROSS=ON | |
| - name: Sanity testing (make check-all, make test) | |
| run: | | |
| .github/workflows/scripts/check-ispc.sh | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm18rel_linux | |
| path: build/ispc-trunk-linux.tar.gz | |
| linux-build-ispc-xe-llvm18-release: | |
| needs: [define-flow] | |
| runs-on: ubuntu-22.04 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-ubuntu22.04-Release-x86.arm.wasm.tar.xz | |
| INSTALL_COMPUTE_RUNTIME: 1 | |
| COMPUTE_RUNTIME_GITHUB_RELEASE: 1 | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.sh | |
| - name: Check environment | |
| run: | | |
| which -a clang | |
| cat /proc/cpuinfo | |
| - name: Build package | |
| run: | | |
| cmake superbuild \ | |
| -B build \ | |
| --preset os \ | |
| -DISPC_CROSS=ON \ | |
| -DINSTALL_WITH_XE_DEPS=ON \ | |
| -DISPC_INCLUDE_BENCHMARKS=ON \ | |
| -DPREBUILT_STAGE2_PATH="${GITHUB_WORKSPACE}/bin-${LLVM_VERSION}" \ | |
| -DCMAKE_INSTALL_PREFIX="${GITHUB_WORKSPACE}"/ispc-xe | |
| cmake --build build | |
| - name: Sanity testing (make check-all, make test) | |
| run: | | |
| find build -name check_isa -exec {} \; | |
| find build -name ispc -exec {} --support-matrix \; | |
| cmake --build build --target ispc-stage2-check | |
| - name: Upload XE enabled package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_xe_llvm18rel_linux | |
| path: build/build-ispc-stage2/src/ispc-stage2-build/ispc-trunk-linux.tar.gz | |
| - name: Upload ISPC with XE dependencies | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_xe_deps_llvm18rel_linux | |
| path: ispc-xe | |
| linux-test: | |
| needs: [define-flow, linux-build-ispc] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| llvm: [17, 18, 19] | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: ${{ matrix.llvm }} | |
| artifact_name: ispc_llvm${{ matrix.llvm }}_linux | |
| targets: ${{ needs.define-flow.outputs.tests_matrix_targets_x86 }} | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| linux-test-llvm18-lto: | |
| needs: [define-flow, linux-build-ispc-llvm18-lto] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18_lto_linux | |
| targets: ${{ needs.define-flow.outputs.tests_matrix_targets_x86 }} | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| enable_lto: true | |
| linux-test-llvm18-aarch64: | |
| needs: [define-flow, linux-aarch64-build-ispc] | |
| strategy: | |
| fail-fast: false | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: aarch64 | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18_linux.aarch64 | |
| targets: ${{ needs.define-flow.outputs.tests_matrix_targets_arm }} | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| # Test release version | |
| linux-test-llvm18-release: | |
| needs: [define-flow, linux-build-ispc-llvm18-release] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18rel_linux | |
| targets: '["avx2-i32x8"]' | |
| optsets: -O0 -O2 | |
| # Debug run is experimental with the purpose to see if it's capable to catch anything. | |
| # So it's running in "full" mode only for now. | |
| # Single target, as it should be representative enough. | |
| linux-test-debug-llvm18: | |
| needs: [define-flow, linux-build-ispc] | |
| if: ${{ needs.define-flow.outputs.flow_type == 'full' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18_linux | |
| targets: '["avx2-i32x8"]' | |
| optsets: -O0 -O2 | |
| enable_debug: true | |
| # Test xe release version | |
| linux-test-xe-llvm18-release: | |
| needs: [define-flow, linux-build-ispc-xe-llvm18-release] | |
| if: ${{ needs.define-flow.outputs.flow_type == 'smoke' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: linux | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: 18 | |
| artifact_name: ispc_xe_llvm18rel_linux | |
| targets: '["avx2-i32x8"]' | |
| optsets: -O0 -O2 | |
| enable_xe: true | |
| macos-build-ispc: | |
| needs: [define-flow] | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| runner: [macos-13, macos-14] | |
| llvm: | |
| - version: "17.0" | |
| full_version: "17.0.6" | |
| short_version: 17 | |
| - version: "18.1" | |
| full_version: "18.1.8" | |
| short_version: 18 | |
| - version: "19.1" | |
| full_version: "19.1.7" | |
| short_version: 19 | |
| env: | |
| LLVM_VERSION: ${{ matrix.llvm.version }} | |
| LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-macos-Release+Asserts-universal-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: | | |
| ls -al /Library/Developer/CommandLineTools/SDKs/ | |
| xcrun --show-sdk-path | |
| [ -n "$LLVM_REPO" ] && wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 5 --no-verbose "$LLVM_REPO/releases/download/llvm-${LLVM_VERSION}-ispc-dev/${LLVM_TAR}" | |
| tar xf "$LLVM_TAR" | |
| echo "${GITHUB_WORKSPACE}/bin-${LLVM_VERSION}/bin" >> "$GITHUB_PATH" | |
| brew install bison flex | |
| if [ "${{ matrix.runner }}" == "macos-14" ]; then | |
| echo "/opt/homebrew/opt/bison/bin" >> "$GITHUB_PATH" | |
| echo "/opt/homebrew/opt/flex/bin" >> "$GITHUB_PATH" | |
| else | |
| echo "/usr/local/opt/bison/bin" >> "$GITHUB_PATH" | |
| echo "/usr/local/opt/flex/bin" >> "$GITHUB_PATH" | |
| fi | |
| - name: Check environment | |
| run: | | |
| which -a clang | |
| llvm-config --system-libs | |
| sysctl -n machdep.cpu.brand_string | |
| - name: Build package | |
| run: | | |
| .github/workflows/scripts/build-ispc.sh #-DBENCHMARKS_ISPC_TARGETS=avx1-i32x4 | |
| - name: Sanity testing (make check-all, make test) | |
| run: | | |
| .github/workflows/scripts/check-ispc.sh | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm${{ matrix.llvm.short_version }}_${{ matrix.runner }} | |
| path: build/ispc-trunk-macos.tar.gz | |
| macos-build-ispc-llvm18-lto: | |
| needs: [define-flow] | |
| runs-on: macos-13 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-macos-Release+Asserts-lto-universal-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: | | |
| ls -al /Library/Developer/CommandLineTools/SDKs/ | |
| xcrun --show-sdk-path | |
| [ -n "$LLVM_REPO" ] && wget --retry-connrefused --waitretry=5 --read-timeout=20 --timeout=15 -t 5 --no-verbose "$LLVM_REPO/releases/download/llvm-${LLVM_VERSION}-ispc-dev/${LLVM_TAR}" | |
| tar xf "$LLVM_TAR" | |
| echo "${GITHUB_WORKSPACE}/bin-${LLVM_VERSION}/bin" >> "$GITHUB_PATH" | |
| brew install bison flex ninja | |
| echo "/usr/local/opt/bison/bin" >> "$GITHUB_PATH" | |
| echo "/usr/local/opt/flex/bin" >> "$GITHUB_PATH" | |
| - name: Check environment | |
| run: | | |
| which -a clang | |
| llvm-config --system-libs | |
| sysctl -n machdep.cpu.brand_string | |
| - name: Build package | |
| run: | | |
| cmake -B build superbuild --preset os -DLTO=ON -DXE_DEPS=OFF -DCMAKE_CXX_FLAGS=-Werror -DPREBUILT_STAGE2_PATH="${GITHUB_WORKSPACE}/bin-${LLVM_VERSION}" -DMACOS_UNIVERSAL_BIN=ON -DISPC_ANDROID_NDK_PATH=${{ env.ISPC_ANDROID_NDK_PATH }} | |
| cmake --build build | |
| - name: Sanity testing (make check-all) | |
| run: | | |
| cmake --build build --target ispc-stage2-check-all | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm18_lto_macos | |
| path: build/build-ispc-stage2/src/ispc-stage2-build/ispc-trunk-macOS.universal.tar.gz | |
| # For macos we test only one target so there is no problem with exceeding strategy limit. | |
| # If it happens then we can split it into two jobs. | |
| macos-test-ispc: | |
| needs: [define-flow, macos-build-ispc] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| llvm: [17, 18, 19] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: macos | |
| architecture: x86-64 | |
| llvm_version: ${{ matrix.llvm }} | |
| artifact_name: ispc_llvm${{matrix.llvm}}_macos-13 | |
| targets: '["sse4-i32x4"]' | |
| optsets: -O0 -O2 | |
| macos-test-ispc-llvm18-lto: | |
| needs: [define-flow, macos-build-ispc-llvm18-lto] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: macos | |
| architecture: x86-64 | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18_lto_macos | |
| targets: '["sse4-i32x4"]' | |
| optsets: -O0 -O2 | |
| enable_lto: true | |
| macos-test-ispc-llvm18-arm64: | |
| needs: [define-flow, macos-build-ispc] | |
| strategy: | |
| fail-fast: false | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: macos | |
| architecture: aarch64 | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18_macos-14 | |
| targets: ${{ needs.define-flow.outputs.tests_matrix_targets_arm }} | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| win-build-ispc: | |
| needs: [define-flow] | |
| runs-on: windows-2019 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| llvm: | |
| - version: "17.0" | |
| full_version: "17.0.6" | |
| short_version: 17 | |
| - version: "18.1" | |
| full_version: "18.1.8" | |
| short_version: 18 | |
| - version: "19.1" | |
| full_version: "19.1.7" | |
| short_version: 19 | |
| env: | |
| LLVM_VERSION: ${{ matrix.llvm.version }} | |
| LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-win.vs2019-Release+Asserts-x86.arm.wasm.tar.7z | |
| LLVM_HOME: "C:\\projects\\llvm" | |
| CROSS_TOOLS_GNUWIN32: "C:\\projects\\cross\\gnuwin32" | |
| BUILD_TYPE: "Release" | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.ps1 | |
| - name: Check environment | |
| shell: cmd | |
| run: | | |
| wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status | |
| - name: Build package | |
| run: | | |
| .github/workflows/scripts/build-ispc.ps1 | |
| - name: Sanity testing (make check-all, make test) | |
| run: | | |
| .github/workflows/scripts/check-ispc.ps1 | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm${{ matrix.llvm.short_version }}_win | |
| path: build/ispc-trunk-windows.zip | |
| win-build-ispc-llvm18-lto: | |
| needs: [define-flow] | |
| runs-on: windows-2019 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-win.vs2019-Release+Asserts-lto-x86.arm.wasm.tar.7z | |
| LLVM_HOME: "C:\\projects\\llvm" | |
| CROSS_TOOLS_GNUWIN32: "C:\\projects\\cross\\gnuwin32" | |
| BUILD_TYPE: "Release" | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.ps1 | |
| - name: Check environment | |
| shell: cmd | |
| run: | | |
| wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status | |
| - name: Build package | |
| shell: cmd | |
| run: | | |
| set VSVARS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| call %VSVARS% | |
| cmake -B build superbuild --preset os -G "NMake Makefiles" -DLTO=ON -DXE_DEPS=OFF -DPREBUILT_STAGE2_PATH=%LLVM_HOME%\bin-%LLVM_VERSION% -DEXPLICIT_ENV_PATH=OFF -DGNUWIN32=%CROSS_TOOLS_GNUWIN32% | |
| cmake --build build | |
| - name: Sanity testing (make check-all) | |
| shell: cmd | |
| run: | | |
| set VSVARS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| call %VSVARS% | |
| cmake --build build --target ispc-stage2-check-all | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_llvm18_lto_win | |
| path: build/build-ispc-stage2/src/ispc-stage2-build/ispc-trunk-windows.zip | |
| win-build-ispc-xe-llvm18-release: | |
| needs: [define-flow] | |
| runs-on: windows-2019 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-win.vs2019-Release-x86.arm.wasm.tar.7z | |
| LLVM_HOME: "C:\\projects\\llvm" | |
| CROSS_TOOLS_GNUWIN32: "C:\\projects\\cross\\gnuwin32" | |
| BUILD_TYPE: "Release" | |
| ISPC_DIR: "build\\build-ispc-stage2\\src\\ispc-stage2-build" | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.ps1 | |
| - name: Check environment | |
| shell: cmd | |
| run: | | |
| wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status | |
| - name: Build package | |
| shell: cmd | |
| run: | | |
| set VSVARS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| call %VSVARS% | |
| cmake superbuild -B build --preset os -G "NMake Makefiles" -DINSTALL_WITH_XE_DEPS=ON -DPREBUILT_STAGE2_PATH=%LLVM_HOME%/bin-%LLVM_VERSION% -DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\ispc-xe -DISPC_INCLUDE_BENCHMARKS=ON -DEXPLICIT_ENV_PATH=OFF -DGNUWIN32=%CROSS_TOOLS_GNUWIN32% -DISPC_CROSS=ON | |
| cmake --build build | |
| - name: Sanity testing (make check-all, make test) | |
| shell: cmd | |
| run: | | |
| set VSVARS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| call %VSVARS% | |
| %ISPC_DIR%\bin\check_isa | |
| %ISPC_DIR%\bin\ispc --support-matrix | |
| cmake --build build --target ispc-stage2-check | |
| - name: Upload XE enabled package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_xe_llvm18rel_win | |
| path: ${{ env.ISPC_DIR }}/ispc-trunk-windows.zip | |
| - name: Upload ISPC with XE dependencies | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc_xe_deps_llvm18rel_win | |
| path: ispc-xe | |
| # To avoid strategy expansion exceeding 256 results, there are two jobs: | |
| # - win-test for the LLVM version used for release builds and newer versions | |
| # - win-test-prior for older LLVM versions | |
| win-test: | |
| needs: [define-flow, win-build-ispc] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| llvm: [17, 18, 19] | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: windows | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: ${{ matrix.llvm }} | |
| artifact_name: ispc_llvm${{matrix.llvm}}_win | |
| targets: ${{ needs.define-flow.outputs.tests_matrix_targets_x86 }} | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| win-test-llvm18-lto: | |
| needs: [define-flow, win-build-ispc-llvm18-lto] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: windows | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: 18 | |
| artifact_name: ispc_llvm18_lto_win | |
| targets: ${{ needs.define-flow.outputs.tests_matrix_targets_x86 }} | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| enable_lto: true | |
| # Test xe release version | |
| win-test-xe-llvm18-release: | |
| needs: [define-flow, win-build-ispc-xe-llvm18-release] | |
| if: ${{ needs.define-flow.outputs.flow_type == 'smoke' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86-64] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: windows | |
| architecture: ${{ matrix.arch }} | |
| llvm_version: 18 | |
| artifact_name: ispc_xe_llvm18rel_win | |
| targets: '["avx2-i32x8"]' | |
| optsets: ${{ needs.define-flow.outputs.tests_optsets }} | |
| enable_xe: true | |
| win-test-llvm18-vectorcall: | |
| needs: [define-flow, win-build-ispc-xe-llvm18-release] | |
| uses: ./.github/workflows/reusable.ispc.test.yml | |
| with: | |
| platform: windows | |
| architecture: x86-64 | |
| llvm_version: 18 | |
| artifact_name: ispc_xe_llvm18rel_win | |
| targets: '["avx2-i32x8"]' | |
| optsets: O2 | |
| calling_conv: vectorcall | |
| win-package-examples: | |
| needs: [define-flow] | |
| runs-on: windows-2019 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-win.vs2019-Release+Asserts-x86.arm.wasm.tar.7z | |
| LLVM_HOME: "C:\\projects\\llvm" | |
| CROSS_TOOLS_GNUWIN32: "C:\\projects\\cross\\gnuwin32" | |
| BUILD_TYPE: "Release" | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.ps1 | |
| - name: Build examples package | |
| run: | | |
| cmake -B build ./ -DISPC_PREPARE_PACKAGE=ON | |
| cmake --build build --target package-examples | |
| - name: Upload examples package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: examples_zip | |
| path: build/ispc-examples-trunk.zip | |
| linux-package-examples: | |
| needs: [define-flow] | |
| runs-on: ubuntu-22.04 | |
| env: | |
| LLVM_VERSION: "18.1" | |
| LLVM_TAR: llvm-18.1.8-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.xz | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.sh | |
| - name: Build examples package | |
| run: | | |
| cmake -B build ./ -DISPC_PREPARE_PACKAGE=ON | |
| cmake --build build --target package-examples | |
| - name: Upload package | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: examples_tgz | |
| path: build/ispc-examples-trunk.tar.gz | |
| win-build-examples: | |
| needs: [win-package-examples, win-build-ispc] | |
| runs-on: windows-2019 | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Download ispc package | |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
| with: | |
| name: ispc_llvm18_win | |
| - name: Download examples package | |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
| with: | |
| name: examples_zip | |
| path: examples-package | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-test-deps.ps1 | |
| - name: Unpack examples | |
| run: | | |
| unzip ispc-examples-trunk.zip | |
| working-directory: examples-package | |
| shell: cmd | |
| - name: Run performance tests | |
| shell: cmd | |
| run: | | |
| set VSVARS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| call %VSVARS% | |
| set PATH=%GITHUB_WORKSPACE%\ispc-trunk-windows\bin;%PATH% | |
| python scripts\perf.py -n 1 -g "Visual Studio 16" | |
| - name: Build examples | |
| run: | | |
| mkdir examples-build | |
| cmake -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" examples-package\examples\cpu -B examples-build -Thost=x64 -G "Visual Studio 16" | |
| cmake --build examples-build --target ALL_BUILD --config Release | |
| shell: cmd | |
| linux-build-examples: | |
| needs: [linux-package-examples, linux-build-ispc] | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Download ispc package | |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
| with: | |
| name: ispc_llvm18_linux | |
| - name: Download examples package | |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
| with: | |
| name: examples_tgz | |
| path: examples-package | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-test-deps.sh | |
| - name: Unpack examples | |
| run: | | |
| tar xf ispc-examples-trunk.tar.gz | |
| working-directory: examples-package | |
| - name: Run performance tests | |
| run: python scripts/perf.py | |
| - name: Build examples | |
| run: | | |
| mkdir examples-build | |
| cmake -DCMAKE_C_FLAGS="-Wall -Werror" -DCMAKE_CXX_FLAGS="-Wall -Werror" examples-package/examples/cpu -B examples-build | |
| cmake --build examples-build | |
| macos-build-examples: | |
| needs: [linux-package-examples, macos-build-ispc] | |
| runs-on: macos-14 | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: true | |
| - name: Download ispc package | |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
| with: | |
| name: ispc_llvm18_macos-14 | |
| - name: Download examples package | |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
| with: | |
| name: examples_tgz | |
| path: examples-package | |
| - name: Install dependencies and unpack artifacts | |
| run: | | |
| tar xf ispc-trunk-macos.tar.gz | |
| echo "$GITHUB_WORKSPACE/ispc-trunk-macos/bin" >> "$GITHUB_PATH" | |
| echo "ISPC_HOME=$GITHUB_WORKSPACE" >> "$GITHUB_ENV" | |
| - name: Unpack examples | |
| run: | | |
| tar xf ispc-examples-trunk.tar.gz | |
| working-directory: examples-package | |
| - name: Build examples | |
| run: | | |
| mkdir examples-build | |
| cmake -DCMAKE_C_FLAGS="-Wall -Werror" -DCMAKE_CXX_FLAGS="-Wall -Werror" examples-package/examples/cpu -B examples-build | |
| cmake --build examples-build | |
| linux-wasm: | |
| runs-on: ubuntu-22.04 | |
| env: | |
| LLVM_TAR: llvm-18.1.8-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.xz | |
| ISPC_HOME: ${{ github.workspace }} | |
| LLVM_HOME: ${{ github.workspace }} | |
| LLVM_VERSION: "18.1" | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: false | |
| - name: Install Dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.sh | |
| - name: Configure | |
| run: | | |
| # Setup emcc for WASM target | |
| source scripts/install_emscripten.sh && emcc --version | |
| cmake ./ \ | |
| -B build \ | |
| -DISPC_PREPARE_PACKAGE=ON \ | |
| -DISPC_CROSS=ON \ | |
| -DWASM_ENABLED=ON \ | |
| -DISPC_INCLUDE_BENCHMARKS=ON | |
| - name: Build | |
| run: cd build && make package -j"$(nproc)" | |
| - name: Test | |
| run: | | |
| cd build | |
| bin/ispc --support-matrix | |
| make check-all | |
| make test | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc-wasm-linux | |
| path: build/ispc-* | |
| windows-wasm: | |
| runs-on: windows-2019 | |
| env: | |
| CROSS_TOOLS_GNUWIN32: "C:\\projects\\cross\\gnuwin32" | |
| LLVM_TAR: llvm-18.1.8-win.vs2019-Release+Asserts-x86.arm.wasm.tar.7z | |
| ISPC_HOME: ${{ github.workspace }} | |
| LLVM_HOME: "C:\\projects\\llvm" | |
| LLVM_VERSION: "18.1" | |
| steps: | |
| - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
| with: | |
| submodules: false | |
| - name: Install dependencies | |
| run: | | |
| .github/workflows/scripts/install-build-deps.ps1 | |
| - name: Build and Test | |
| shell: cmd | |
| run: | | |
| call scripts\install_emscripten.bat | |
| set VSVARS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
| call %VSVARS% | |
| cmake . -B build -Thost=x64 -G "Visual Studio 16" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%ISPC_HOME%\install -DISPC_PREPARE_PACKAGE=ON -DISPC_CROSS=ON -DISPC_GNUWIN32_PATH=%CROSS_TOOLS_GNUWIN32% -DWASM_ENABLED=ON -DISPC_INCLUDE_BENCHMARKS=ON | |
| cmake --build build --config Release --target package --verbose | |
| set PATH=%ISPC_HOME%\build\bin\Release;%PATH% | |
| cd %ISPC_HOME% | |
| check_isa.exe | |
| ispc --support-matrix | |
| cmake --build build --config Release --target check-all | |
| cmake --build build --config Release --target RUN_TESTS | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: ispc-wasm-windows | |
| path: build/ispc-*-windows.zip |