Skip to content

Tests

Tests #1516

Workflow file for this run

# Copyright 2020-2024, 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: 813591
SDE_TAR_NAME: sde-external-9.33.0-2024-01-07
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: '["avx2-i32x8"]'
OPTSETS_SMOKE: "-O2"
TARGETS_FULL: '["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"]'
OPTSETS_FULL: "-O0 -O1 -O2"
ISPC_OPAQUE_PTR_MODE: "OFF"
ISPC_ANDROID_NDK_PATH: "/usr/local/share/android-ndk"
jobs:
define-flow:
runs-on: ubuntu-22.04
outputs:
tests_matrix_targets: ${{ steps.set-flow.outputs.matrix }}
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=${TARGETS_SMOKE}" >> "$GITHUB_OUTPUT"
fi
if [[ "$RUN_FULL" == "true" ]]; then
echo "matrix=${TARGETS_FULL}" >> "$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: [self-hosted, Linux, ARM64]
# Disable self-hosted jobs for forks.
if: github.repository == 'ispc/ispc'
container: ubuntu:22.04
strategy:
fail-fast: false
matrix:
llvm:
- version: "18.1"
full_version: "18.1.8"
short_version: 18
opaque_ptr_mode: "ON"
env:
LLVM_VERSION: ${{ matrix.llvm.version }}
LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-ubuntu22.04aarch64-Release+Asserts-x86.arm.wasm.tar.xz
ISPC_OPAQUE_PTR_MODE: ${{ matrix.llvm.opaque_ptr_mode }}
steps:
- name: Install git
run: |
apt-get -y update && apt-get install -y git
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: false
- name: Set git safe directory
run: |
git config --global --add safe.directory /__w/ispc/ispc
- name: Install dependencies
run: |
.github/workflows/scripts/install-build-deps-aarch64.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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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: "16.0"
full_version: "16.0.6"
short_version: 16
opaque_ptr_mode: "ON"
- version: "17.0"
full_version: "17.0.6"
short_version: 17
opaque_ptr_mode: "ON"
- version: "18.1"
full_version: "18.1.8"
short_version: 18
opaque_ptr_mode: "ON"
env:
LLVM_VERSION: ${{ matrix.llvm.version }}
LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-ubuntu22.04-Release+Asserts-x86.arm.wasm.tar.xz
ISPC_OPAQUE_PTR_MODE: ${{ matrix.llvm.opaque_ptr_mode }}
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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
ISPC_OPAQUE_PTR_MODE: "ON"
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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
ISPC_OPAQUE_PTR_MODE: "ON"
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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
ISPC_OPAQUE_PTR_MODE: "OFF"
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 \
-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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: ispc_xe_deps_llvm18rel_linux
path: ispc-xe
linux-test:
needs: [define-flow, linux-build-ispc]
runs-on: ubuntu-22.04
continue-on-error: false
strategy:
fail-fast: false
matrix:
version: [16, 17, 18]
arch: [x86, x86-64]
target: ${{fromJson(needs.define-flow.outputs.tests_matrix_targets)}}
# See issue #2818 for more deatils. It's SDE problem running on AMD runner.
exclude:
- arch: x86
target: "avx2vnni-i32x4"
- arch: x86
target: "avx2vnni-i32x8"
- arch: x86
target: "avx2vnni-i32x16"
- arch: x86
target: "avx512skx-x4"
- arch: x86
target: "avx512skx-x8"
- arch: x86
target: "avx512skx-x16"
- arch: x86
target: "avx512skx-x32"
- arch: x86
target: "avx512skx-x64"
- arch: x86
target: "avx512icl-x4"
- arch: x86
target: "avx512icl-x8"
- arch: x86
target: "avx512icl-x16"
- arch: x86
target: "avx512icl-x32"
- arch: x86
target: "avx512icl-x64"
- arch: x86
target: "avx512spr-x4"
- arch: x86
target: "avx512spr-x8"
- arch: x86
target: "avx512spr-x16"
- arch: x86
target: "avx512spr-x32"
- arch: x86
target: "avx512spr-x64"
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm${{matrix.version}}_linux
- name: Install dependencies and unpack artifacts
run: |
.github/workflows/scripts/install-test-deps.sh
- name: Check environment
run: |
cat /proc/cpuinfo
- name: Running tests
run: |
echo PATH="$PATH"
./scripts/alloy.py -r --only="stability ${{ matrix.arch }} current ${{ needs.define-flow.outputs.tests_optsets }}" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm${{matrix.version}}.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm${{matrix.version}}.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
linux-test-llvm18-lto:
needs: [define-flow, linux-build-ispc-llvm18-lto]
runs-on: ubuntu-22.04
continue-on-error: false
strategy:
fail-fast: false
matrix:
arch: [x86, x86-64]
target: ${{fromJson(needs.define-flow.outputs.tests_matrix_targets)}}
# See issue #2818 for more deatils. It's SDE problem running on AMD runner.
exclude:
- arch: x86
target: "avx2vnni-i32x4"
- arch: x86
target: "avx2vnni-i32x8"
- arch: x86
target: "avx2vnni-i32x16"
- arch: x86
target: "avx512skx-x4"
- arch: x86
target: "avx512skx-x8"
- arch: x86
target: "avx512skx-x16"
- arch: x86
target: "avx512skx-x32"
- arch: x86
target: "avx512skx-x64"
- arch: x86
target: "avx512icl-x4"
- arch: x86
target: "avx512icl-x8"
- arch: x86
target: "avx512icl-x16"
- arch: x86
target: "avx512icl-x32"
- arch: x86
target: "avx512icl-x64"
- arch: x86
target: "avx512spr-x4"
- arch: x86
target: "avx512spr-x8"
- arch: x86
target: "avx512spr-x16"
- arch: x86
target: "avx512spr-x32"
- arch: x86
target: "avx512spr-x64"
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm18_lto_linux
- name: Install dependencies and unpack artifacts
run: |
.github/workflows/scripts/install-test-deps.sh
- name: Check environment
run: |
cat /proc/cpuinfo
- name: Running tests
run: |
echo PATH="$PATH"
./scripts/alloy.py -r --only="stability ${{ matrix.arch }} current ${{ needs.define-flow.outputs.tests_optsets }}" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm18_lto.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm18_lto.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
# Test release version
linux-test-llvm18-release:
needs: [define-flow, linux-build-ispc-llvm18-release]
runs-on: ubuntu-22.04
continue-on-error: false
strategy:
fail-fast: false
matrix:
arch: [x86, x86-64]
target: [avx2-i32x8]
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm18rel_linux
- name: Install dependencies and unpack artifacts
run: |
.github/workflows/scripts/install-test-deps.sh
- name: Check environment
run: |
cat /proc/cpuinfo
- name: Running tests
run: |
echo PATH="$PATH"
./scripts/alloy.py -r --only="stability ${{ matrix.arch}} current -O0 -O2" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm18rel.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm18rel.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
# 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' }}
runs-on: ubuntu-22.04
continue-on-error: false
strategy:
fail-fast: false
matrix:
arch: [x86, x86-64]
target: [avx2-i32x8]
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm18_linux
- name: Install dependencies and unpack artifacts
run: |
.github/workflows/scripts/install-test-deps.sh
- name: Check environment
run: |
cat /proc/cpuinfo
- name: Running tests
run: |
echo PATH="$PATH"
./scripts/alloy.py -r --only="stability ${{ matrix.arch }} current debug -O0 -O2" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm18.debug.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm18.debug.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
# 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' }}
runs-on: ubuntu-22.04
continue-on-error: false
strategy:
fail-fast: false
matrix:
arch: [x86, x86-64]
target: [avx2-i32x8]
env:
INSTALL_COMPUTE_RUNTIME: 1
COMPUTE_RUNTIME_GITHUB_RELEASE: 1
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_xe_llvm18rel_linux
- name: Install dependencies and unpack artifacts
run: |
.github/workflows/scripts/install-test-deps.sh
- name: Check environment
run: |
cat /proc/cpuinfo
- name: Running tests
run: |
echo PATH="$PATH"
# github runners don't have GPU so run CPU tests at least
./scripts/alloy.py -r --only="stability ${{ matrix.arch }} current -O0 -O2" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.xe.llvm18rel.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.xe.llvm18rel.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
macos-build-ispc:
needs: [define-flow]
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
runner: [macos-12, macos-14]
llvm:
- version: "16.0"
full_version: "16.0.6"
short_version: 16
opaque_ptr_mode: "ON"
- version: "17.0"
full_version: "17.0.6"
short_version: 17
opaque_ptr_mode: "ON"
- version: "18.1"
full_version: "18.1.8"
short_version: 18
opaque_ptr_mode: "ON"
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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-12
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: ispc_llvm18_lto_macos
path: build/build-ispc-stage2/src/ispc-stage2-build/ispc-trunk-macOS.universal.tar.gz
macos-test-ispc:
needs: [define-flow, macos-build-ispc]
runs-on: macos-12
continue-on-error: false
strategy:
fail-fast: false
matrix:
version: [16, 17, 18]
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm${{matrix.version}}_macos-12
- 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"
echo "LLVM_HOME=$GITHUB_WORKSPACE" >> "$GITHUB_ENV"
- name: Check environment
run: |
sysctl -n machdep.cpu.brand_string
- name: Running tests
run: |
echo PATH="$PATH"
./scripts/alloy.py -r --only="stability current x86-64 -O0 -O2" --only-targets="sse4-i32x4" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm${{matrix.version}}.macos.sse4.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm${{matrix.version}}.macos.sse4
path: alloy_results_*
macos-test-ispc-llvm18-lto:
needs: [define-flow, macos-build-ispc-llvm18-lto]
runs-on: macos-12
continue-on-error: false
strategy:
fail-fast: false
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm18_lto_macos
- name: Install dependencies and unpack artifacts
run: |
tar xf ispc-trunk-macOS.universal.tar.gz
echo "$GITHUB_WORKSPACE/ispc-trunk-macOS.universal/bin" >> "$GITHUB_PATH"
echo "ISPC_HOME=$GITHUB_WORKSPACE" >> "$GITHUB_ENV"
echo "LLVM_HOME=$GITHUB_WORKSPACE" >> "$GITHUB_ENV"
- name: Check environment
run: |
sysctl -n machdep.cpu.brand_string
- name: Running tests
run: |
echo PATH="$PATH"
./scripts/alloy.py -r --only="stability current x86-64 -O0 -O2" --only-targets="sse4-i32x4" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm18_lto.macos.sse4.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm18_lto.macos.sse4
path: alloy_results_*
win-build-ispc:
needs: [define-flow]
runs-on: windows-2019
strategy:
fail-fast: false
matrix:
llvm:
- version: "16.0"
full_version: "16.0.6"
short_version: 16
opaque_ptr_mode: "ON"
- version: "17.0"
full_version: "17.0.6"
short_version: 17
opaque_ptr_mode: "ON"
- version: "18.1"
full_version: "18.1.8"
short_version: 18
opaque_ptr_mode: "ON"
env:
LLVM_VERSION: ${{ matrix.llvm.version }}
LLVM_TAR: llvm-${{ matrix.llvm.full_version }}-win.vs2019-Release+Asserts-x86.arm.wasm.tar.7z
ISPC_OPAQUE_PTR_MODE: ${{ matrix.llvm.opaque_ptr_mode }}
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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"
ISPC_OPAQUE_PTR_MODE: "ON"
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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_OPAQUE_PTR_MODE: "OFF"
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%
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: ispc_xe_deps_llvm18rel_win
path: ispc-xe
win-test:
needs: [define-flow, win-build-ispc]
env:
LLVM_HOME: "C:\\projects\\llvm"
runs-on: windows-2022
continue-on-error: false
strategy:
fail-fast: false
matrix:
version: [16, 17, 18]
arch: [x86, x86-64]
target: ${{fromJson(needs.define-flow.outputs.tests_matrix_targets)}}
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm${{matrix.version}}_win
- name: Install dependencies
run: |
.github/workflows/scripts/install-test-deps.ps1
- name: Check environment
shell: cmd
run: |
wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
- name: Running tests
run: |
$env:ISPC_HOME = "$pwd"
.github/workflows/scripts/load-vs-env.ps1 "${{ matrix.arch }}"
python .\scripts\alloy.py -r --only="stability ${{ matrix.arch }} current ${{ needs.define-flow.outputs.tests_optsets }}" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm${{matrix.version}}.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm${{matrix.version}}.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
win-test-llvm18-lto:
needs: [define-flow, win-build-ispc-llvm18-lto]
env:
LLVM_HOME: "C:\\projects\\llvm"
runs-on: windows-2022
continue-on-error: false
strategy:
fail-fast: false
matrix:
arch: [x86, x86-64]
target: ${{fromJson(needs.define-flow.outputs.tests_matrix_targets)}}
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_llvm18_lto_win
- name: Install dependencies
run: |
.github/workflows/scripts/install-test-deps.ps1
- name: Check environment
shell: cmd
run: |
wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
- name: Running tests
run: |
$env:ISPC_HOME = "$pwd"
.github/workflows/scripts/load-vs-env.ps1 "${{ matrix.arch }}"
python .\scripts\alloy.py -r --only="stability ${{ matrix.arch }} current ${{ needs.define-flow.outputs.tests_optsets }}" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.llvm18_lto.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm18_lto.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
win-test-xe-llvm18-release:
needs: [define-flow, win-build-ispc-xe-llvm18-release]
if: ${{ needs.define-flow.outputs.flow_type == 'smoke' }}
env:
LLVM_HOME: "C:\\projects\\llvm"
runs-on: windows-2022
continue-on-error: false
strategy:
fail-fast: false
matrix:
arch: [x86, x86-64]
target: ${{fromJson(needs.define-flow.outputs.tests_matrix_targets)}}
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Download package
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ispc_xe_llvm18rel_win
- name: Install dependencies
run: |
.github/workflows/scripts/install-test-deps.ps1
- name: Check environment
shell: cmd
run: |
wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
- name: Running tests
run: |
$env:ISPC_HOME = "$pwd"
.github/workflows/scripts/load-vs-env.ps1 "${{ matrix.arch }}"
python .\scripts\alloy.py -r --only="stability ${{ matrix.arch }} current ${{ needs.define-flow.outputs.tests_optsets }}" --only-targets="${{ matrix.target }}" --time --update-errors=FP
- name: Check
run: |
# Print fails to the log.
git diff --exit-code
- name: Upload fail_db.txt
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: fail_db.xe.llvm18rel.${{matrix.arch}}.${{matrix.target}}.txt
path: tests/fail_db.txt
- name: Upload alloy logs
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: failure()
with:
name: alloy_results.llvm18rel.${{matrix.arch}}.${{matrix.target}}
path: alloy_results_*
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"
ISPC_OPAQUE_PTR_MODE: "ON"
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.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
ISPC_OPAQUE_PTR_MODE: "ON"
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@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: examples_tgz
path: build/ispc-examples-trunk.tar.gz