Run ock tests for PR testing #1495
This file contains 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
# Simple workflow for running non-documentation PR testing | |
name: Run ock tests for PR testing | |
on: | |
workflow_call: | |
inputs: | |
update_cache: | |
required: false | |
type: boolean | |
default: false | |
is_pull_request: | |
required: false | |
type: boolean | |
default: true | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
inputs: | |
update_cache: | |
required: false | |
type: boolean | |
default: false | |
is_pull_request: | |
required: false | |
type: bool | |
default: true | |
permissions: {} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# build and run host x86_64, execute UnitCL and lit tests and build and run offline | |
run_host_x86_64: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
# installs tools, ninja, installs llvm and sets up sccahe | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: 18 | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
# These need to match the configurations of build_pr_cache to use the cache effectively | |
- name: build host x86_64 online release | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_type: Release | |
- name: run just online lit | |
run: | |
ninja -C build check-ock-all-lit | |
- name: run host online check | |
run: | |
ninja -C build check-ock-UnitCL | |
# use the previous build for online to get clc | |
- name: build host x86_64 offline release | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_type: Release | |
extra_flags: -DCA_RUNTIME_COMPILER_ENABLED=OFF -DCA_EXTERNAL_CLC=${{ github.workspace }}/build/bin/clc | |
build_dir: build_offline | |
build_targets: UnitCL | |
assemble_spirv_ll_lit_test_offline: ON | |
- name: run host x86_64 offline | |
run: | |
ninja -C build_offline check-ock-UnitCL | |
# build and run riscv m1, execute UnitCL and lit tests | |
run_riscv_m1: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
# installs tools, ninja, installs llvm and sets up sccahe | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: 18 | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
- name: build riscv M1 | |
uses: ./.github/actions/do_build_ock/do_build_m1 | |
- name: run riscv M1 lit | |
run: | |
ninja -C build check-ock-all-lit | |
- name: run riscv M1 UnitCL tests | |
run: | |
ninja -C build check-ock-UnitCL | |
# build and run clang-tidy | |
run_clang_tidy_changes: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
# installs tools, ninja, installs llvm and sets up sccahe | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: 19 | |
llvm_build_type: RelAssert | |
- name: build initial config files | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_type: ReleaseAssert | |
host_image: ON | |
build_targets: build.ninja | |
# Here we compute the set difference between the output of the two | |
# temporary file descriptors using `awk`. Awk processes both files line by | |
# line, going through the first file, then the second file. The NR==FNR | |
# predicate executes its block only on the records of the first file, | |
# ensuring to call `next` (equivalent to `return`) to avoid running the | |
# second block on each line in the first file. | |
# | |
# The first input to `awk` lists all targets reported by ninja. | |
# | |
# The second input to awk collects all targets on which `tidy-` targets | |
# depend. This may include targets which are guarded by if() statements in | |
# CMake, hence why we need to compute a set difference with the targets that | |
# ninja reports. | |
- name: build actual targets needed | |
run: | |
ninja -C build | |
$( | |
awk -F':' 'NR==FNR { targets[$1] = 1; next } $1 in targets { print $1 }' | |
<(ninja -C build -t targets) | |
<( | |
find modules source -type f -name CMakeLists.txt -exec | |
awk -F"[()]" '/add_dependencies\(tidy-/ {sub(/[^ ]*/, "", $2);print $2}' | |
{} \+ | tr ' ' '\n' | |
) | |
) | |
- name: run clang-tidy | |
run: | | |
git fetch origin ${{ github.base_ref }} | |
./scripts/compute-dependants.py \ | |
--exclude-filter='(/build/.*\.s$)|(.*/(external|cookie)/.*)' \ | |
--build-dir="$PWD/build" \ | |
`git diff --name-only --diff-filter=d \ | |
HEAD..origin/${{ github.base_ref }} | \ | |
grep -P '\.(c|cc|cxx|cpp|h|hh|hpp|hxx)$'` | \ | |
tee /dev/stderr | \ | |
parallel --verbose -- clang-tidy --quiet -p "$PWD/build/" "{}" | |
# run clang-format-diff on the repo | |
run_clang_format: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
- name: setup-ubuntu-clang-format | |
run: | |
pip install clang-format==19.1.0 | |
- name: run clang-format | |
run: | | |
# we've installed clang-format-19 in the docker via pip, which just installs it as clang-format, | |
# so just use clang-format-diff and -b clang-format directly | |
git fetch origin ${{ github.base_ref }} | |
git diff --no-color origin/${{ github.base_ref }} | \ | |
clang-format-diff.py -p1 -regex \ | |
"^(?!(.+\\/)*(external|cookie)\\/).*\\.(c|cc|cxx|cpp|h|hh|hxx|hpp)$" -b clang-format | |
# Based on: mr-windows-msvc-x86_64-llvm-previous-cl3.0-offline | |
run_windows_msvc_x86_64_llvm_latest_cl3_0_offline: | |
runs-on: windows-2019 | |
steps: | |
- name: Setup Windows llvm base | |
uses: llvm/actions/setup-windows@main | |
with: | |
arch: amd64 | |
- name: Checkout repo | |
uses: actions/[email protected] | |
# installs tools, ninja, installs llvm and sets up sccache | |
- name: setup-windows | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: 19 | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
os: windows | |
- name: build ock x86_64 relassert | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: check-ock | |
enable_api: "" | |
builtin_kernel: ON | |
shell_to_use: pwsh | |
gtest_launcher: "python3;-u;${{ github.workspace }}/scripts/gtest-terse-runner.py" | |
debug_support: ON | |
enable_unitcl_expensive: ${{ !inputs.is_pull_request && 'ON' || 'OFF' }} | |
- name: build ock x86_64 offline | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: check-ock | |
runtime_compiler_enabled: OFF | |
external_clc: "${{ github.workspace }}/build/bin/clc.exe" | |
shell_to_use: pwsh | |
gtest_launcher: "python3;-u;${{ github.workspace }}/scripts/gtest-terse-runner.py" | |
debug_support: ON | |
install_dir: ${{ github.workspace }}/install_offline | |
build_dir: ${{ github.workspace }}/build_offline | |
# Based on: mr-ubuntu-gcc-x86_64-riscv-fp16-cl3.0-unitcl_vecz | |
run_ubuntu_gcc_x86_64_riscv_fp16_cl3_0_unitcl_vecz: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: '18' | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
- run: echo WORKSPACE is $GITHUB_WORKSPACE && echo PWD is `pwd` && ls -al | |
- name: build ock | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: check-ock-UnitCL-group-vecz | |
mux_targets_enable: riscv | |
mux_compilers_enable: riscv | |
riscv_enabled: ON | |
enable_rvv_scalable_vecz_check: ON | |
enable_rvv_scalable_vp_vecz_check: ON | |
use_linker: gold | |
hal_description: RV64GCV_Zfh | |
hal_refsi_soc: G1 | |
hal_refsi_thread_mode: WG | |
debug_support: ON | |
# Based on: mr-ubuntu-clang-x86-llvm-previous-cl3-0-offline | |
run-ubuntu-clang-x86-llvm-latest-cl3-0-offline: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 90 # offline needs longer timeout | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: '19' | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
cross_arch: x86 | |
- run: echo WORKSPACE is $GITHUB_WORKSPACE && echo PWD is `pwd` && ls -al | |
- name: build ock x86 relassert | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_32_bit: ON | |
extra_flags: -DCMAKE_C_COMPILER=$GITHUB_WORKSPACE/llvm_install/bin/clang -DCMAKE_CXX_COMPILER=$GITHUB_WORKSPACE/llvm_install/bin/clang++ | |
build_targets: check-ock | |
enable_api: "" | |
builtin_kernel: ON | |
use_linker: gold | |
debug_support: ON | |
- name: build ock x86 offline | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_32_bit: ON | |
extra_flags: -DCMAKE_C_COMPILER=$GITHUB_WORKSPACE/llvm_install/bin/clang -DCMAKE_CXX_COMPILER=$GITHUB_WORKSPACE/llvm_install/bin/clang++ | |
build_targets: check-ock | |
runtime_compiler_enabled: OFF | |
assemble_spirv_ll_lit_test_offline: ON | |
external_clc: ${GITHUB_WORKSPACE}/build/bin/clc | |
use_linker: gold | |
debug_support: ON | |
install_dir: $GITHUB_WORKSPACE/install_offline | |
build_dir: $GITHUB_WORKSPACE/build_offline | |
# Based on: mr-ubuntu-gcc-x86_64-riscv-fp16-cl3-0 | |
run-ubuntu-gcc-x86_64-riscv-fp16-cl3-0: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: '19' | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
- run: echo WORKSPACE is $GITHUB_WORKSPACE && echo PWD is `pwd` && ls -al | |
- name: build ock | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: check-ock | |
mux_targets_enable: riscv | |
mux_compilers_enable: riscv | |
riscv_enabled: ON | |
disable_unitcl_vecz_checks: ON | |
enable_rvv_scalable_vecz_check: ON | |
enable_rvv_scalable_vp_vecz_check: ON | |
host_enable_builtins: OFF | |
use_linker: gold | |
hal_description: RV64GCV_Zfh | |
hal_refsi_soc: G1 | |
hal_refsi_thread_mode: WG | |
debug_support: ON | |
# Based on: mr-ubuntu-gcc-x86-llvm-latest-x86_64-images-cl3-0-release: | |
run-ubuntu-gcc-x86-llvm-latest-x86_64-images-cl3-0-release: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: '19' | |
llvm_build_type: Release | |
save: ${{ inputs.update_cache }} | |
- run: echo WORKSPACE is $GITHUB_WORKSPACE && echo PWD is `pwd` && ls -al | |
- name: build ock | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_type: Release | |
build_targets: check-ock | |
host_image: ON | |
use_linker: gold | |
enable_api: "" | |
builtin_kernel: ON | |
# Based on: mr-ubuntu-gcc-aarch64-llvm-previous-cl3-0-fp16: | |
run-ubuntu-gcc-aarch64-llvm-latest-cl3-0-fp16: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 90 # aarch64 needs longer timeout | |
steps: | |
- name: Checkout repo | |
uses: actions/[email protected] | |
- name: load native llvm | |
uses: actions/cache/restore@v4 | |
with: | |
path: llvm_install/** | |
key: llvm-ubuntu-22.04-x86_64-v19-RelAssert | |
fail-on-cache-miss: true | |
- run: mv llvm_install llvm_install_native | |
- name: setup-ubuntu | |
uses: ./.github/actions/setup_build | |
with: | |
llvm_version: '19' | |
llvm_build_type: RelAssert | |
save: ${{ inputs.update_cache }} | |
cross_arch: aarch64 | |
- run: echo WORKSPACE is $GITHUB_WORKSPACE && echo PWD is `pwd` && ls -al | |
- name: build ock | |
uses: ./.github/actions/do_build_ock | |
with: | |
build_targets: check-ock-cross | |
host_fp16: ON | |
use_linker: gold | |
debug_support: ON | |
builtin_kernel: ON | |
enable_api: "" | |
toolchain_file: "scripts/../platform/arm-linux/aarch64-toolchain.cmake" | |
extra_flags: -DCA_BUILTINS_TOOLS_DIR=${{ github.workspace }}/llvm_install_native/bin | |