[llvm] Add pre-merge workflow for HLSL testing (PR #122184)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 8 18:18:03 PST 2025
================
@@ -0,0 +1,157 @@
+name: HLSL Test
+
+permissions:
+ contents: read
+
+on:
+ workflow_dispatch:
+ inputs:
+ LLVM-Ref:
+ description: 'Test Suite Branch'
+ required: false
+ default: 'main'
+ type: string
+ LLVM-branch:
+ description: 'LLVM Branch'
+ required: false
+ default: 'main'
+ type: string
+ DXC-branch:
+ description: 'DXC Branch'
+ required: false
+ default: 'main'
+ type: string
+ BuildType:
+ description: 'Build Type'
+ required: false
+ default: 'Release'
+ type: choice
+ options:
+ - Release
+ - RelWithDebInfo
+ - Debug
+ TestTarget:
+ required: false
+ default: 'check-hlsl'
+ type: string
+ Test-Clang:
+ required: true
+ type: choice
+ options:
+ - On
+ - Off
+ SKU:
+ required: true
+ type: choice
+ options:
+ - hlsl-metal
+ LLVM-ExtraCMakeArgs:
+ description: 'Extra CMake Args for LLVM'
+ required: false
+ default: ''
+ type: string
+ workflow_call:
+ inputs:
+ OffloadTest-branch:
+ description: 'Test Suite Branch'
+ required: false
+ default: 'main'
+ type: string
+ LLVM-branch:
+ description: 'LLVM Branch'
+ required: false
+ default: 'main'
+ type: string
+ DXC-branch:
+ description: 'DXC Branch'
+ required: false
+ default: 'main'
+ type: string
+ SKU:
+ required: true
+ type: string
+ BuildType:
+ description: 'Build Type'
+ required: false
+ default: 'Release'
+ type: string
+ Test-Clang:
+ required: false
+ default: 'On'
+ type: string
+ TestTarget:
+ required: false
+ default: 'check-hlsl'
+ type: string
+ LLVM-ExtraCMakeArgs:
+ description: 'Extra CMake Args for LLVM'
+ required: false
+ default: ''
+ type: string
+
+jobs:
+ build:
+ runs-on: [self-hosted, "${{ inputs.SKU }}"]
+ steps:
+ - name: Checkout DXC
+ uses: actions/checkout at v4
+ with:
+ repository: Microsoft/DirectXShaderCompiler
+ ref: ${{ inputs.DXC-branch }}
+ path: DXC
+ fetch-depth: 1
+ submodules: true
+ - name: Checkout LLVM
+ uses: actions/checkout at v4
+ with:
+ repository: llvm/llvm-project
+ ref: ${{ inputs.LLVM-branch }}
+ path: llvm-project
+ fetch-depth: 1
+ - name: Checkout OffloadTest
+ uses: actions/checkout at v4
+ with:
+ repository: llvm-beanz/offload-test-suite
+ ref: ${{ inputs.OffloadTest-branch }}
+ path: OffloadTest
+ fetch-depth: 1
+ - name: Checkout Golden Images
+ uses: actions/checkout at v4
+ with:
+ repository: llvm-beanz/offload-golden-images
+ ref: main
+ path: golden-images
+ fetch-depth: 1
+ - name: Setup Windows
+ if: runner.os == 'Windows'
+ uses: llvm/actions/setup-windows at main
+ with:
+ arch: amd64
+ - name: Build DXC
+ run: |
+ cd DXC
+ mkdir build
+ cd build
+ cmake -G Ninja -DCMAKE_BUILD_TYPE=${{ inputs.BuildType }} -C ${{ github.workspace }}/DXC/cmake/caches/PredefinedParams.cmake -C ${{ github.workspace }}/OffloadTest/cmake/caches/sccache.cmake -DHLSL_DISABLE_SOURCE_GENERATION=On ${{ github.workspace }}/DXC/
+ ninja dxv llvm-dis
+ - name: Build LLVM
+ run: |
+ cd llvm-project
+ mkdir build
+ cd build
+ cmake -G Ninja ${{ inputs.LLVM-ExtraCMakeArgs }} -DDXIL_DIS=${{ github.workspace }}/DXC/build/bin/llvm-dis -DLLVM_INCLUDE_DXIL_TESTS=On -DCMAKE_BUILD_TYPE=${{ inputs.BuildType }} -C ${{ github.workspace }}/llvm-project/clang/cmake/caches/HLSL.cmake -C ${{ github.workspace }}/OffloadTest/cmake/caches/sccache.cmake -DDXC_DIR=${{ github.workspace }}/DXC/build/bin -DLLVM_EXTERNAL_OFFLOADTEST_SOURCE_DIR=${{ github.workspace }}/OffloadTest -DLLVM_EXTERNAL_PROJECTS="OffloadTest" -DLLVM_LIT_ARGS="--xunit-xml-output=testresults.xunit.xml -v" -DOFFLOADTEST_TEST_CLANG=${{ inputs.Test-Clang }} -DGOLDENIMAGE_DIR=${{ github.workspace }}/golden-images ${{ github.workspace }}/llvm-project/llvm/
+ ninja hlsl-test-depends llvm-test-depends clang-test-depends
+ - name: Run HLSL Tests
+ run: |
+ cd llvm-project
+ cd build
+ ninja check-llvm
+ ninja check-clang
+ ninja check-hlsl-unit
+ ninja ${{ inputs.TestTarget }}
+ - name: Publish Test Results
+ uses: EnricoMi/publish-unit-test-result-action/macos at v2
----------------
boomanaiden154 wrote:
This seems like a reasonable enough first approach for publishing test results to me. We need to figure out something like this for the main premerge pipeline and I'm not exactly sure what we want to do...
Good to know that this exists.
https://github.com/llvm/llvm-project/pull/122184
More information about the llvm-commits
mailing list