Add asserts, checks, guard against null dereference #3909
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
#=========================== begin_copyright_notice ============================ | |
# | |
# Copyright (C) 2022 Intel Corporation | |
# | |
# SPDX-License-Identifier: MIT | |
# | |
#============================ end_copyright_notice ============================= | |
name: Build IGC | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
jobs: | |
download-OpenCL-Clang: # openCL Clang is downloaded from intel/intel-graphics-compiler releases | |
if: github.repository == 'intel/intel-graphics-compiler' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: oprypin/find-latest-tag@v1 | |
with: | |
repository: intel/intel-graphics-compiler | |
releases-only: true | |
id: get-latest-IGC-release-tag | |
- name: caching downloaded OpenCL Clang # Downloading a new OpenCL Clang only after the new IGC is released | |
id: cache-igc-release | |
uses: actions/cache@v3 | |
with: | |
path: ./igc-official-release | |
key: ${{ steps.get-latest-IGC-release-tag.outputs.tag }} | |
- name: creating a folder for downloaded deb files | |
if: steps.cache-igc-release.outputs.cache-hit != 'true' | |
run: mkdir igc-official-release | |
- name: download latest igc release | |
if: steps.cache-igc-release.outputs.cache-hit != 'true' | |
working-directory: ./igc-official-release | |
# To install openCL clang from Deb package, IGC must also be installed. Therefore, the last IGC release is also downloaded. | |
run: curl -s https://api.github.com/repos/intel/intel-graphics-compiler/releases/latest | grep browser_download_url | egrep 'opencl_|core_' | cut -d '"' -f 4 | wget -qi - | |
- name: checking if downloaded deb files are here | |
run: ls ./igc-official-release | |
build-SPIRV-LLVM-Translator: | |
if: github.repository == 'intel/intel-graphics-compiler' | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ubuntu_version: [ '20.04', '22.04' ] | |
llvm_ver: [ 14 ] | |
include: | |
- ubuntu_version: '22.04' | |
llvm_ver: 15 | |
experimental: true | |
steps: | |
- uses: actions/checkout@v3 | |
- name: cloning SPIRV-LLVM-Translator repository | |
run: git clone --branch llvm_release_${{ matrix.llvm_ver }}0 https://github.com/KhronosGroup/SPIRV-LLVM-Translator | |
- name: getting latest commit hash from SPIRV-LLVM-Translator repository | |
id: SPIRV-LLVM-Translator-hash | |
working-directory: ./SPIRV-LLVM-Translator | |
run: | | |
SPIRV_TRANSLATOR_SHA_SHORT=$(git log -1 --pretty=format:"%h") | |
echo "This is SPIRV-LLVM-Translator repository latest commit hash = ${SPIRV_TRANSLATOR_SHA_SHORT}" | |
echo "spirv_translator_sha_short=$SPIRV_TRANSLATOR_SHA_SHORT" >> $GITHUB_OUTPUT | |
- name: caching SPIRV-LLVM-Translator deb files | |
id: cache-spirv-llvm-translator | |
uses: actions/cache@v3 | |
with: | |
path: ./build-SPIRV-LLVM-Translator | |
key: ${{ steps.SPIRV-LLVM-Translator-hash.outputs.spirv_translator_sha_short }}-ubuntu${{ matrix.ubuntu_version }}-llvm${{ matrix.llvm_ver }} | |
- name: run Docker | |
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true' | |
run: | | |
docker run --name=buildslt \ | |
-v $(pwd)/scripts/buildSLT.sh:/buildSLT.sh \ | |
--env DEBIAN_FRONTEND="noninteractive" \ | |
--env UBUNTU_VERSION=${{ matrix.ubuntu_version }} \ | |
--env LLVM_VERSION=${{ matrix.llvm_ver }} \ | |
ubuntu:${{ matrix.ubuntu_version }} \ | |
sh /buildSLT.sh | |
- name: creating folders to store SPIRV-LLVM-Translator build outputs | |
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true' | |
run: mkdir build-SPIRV-LLVM-Translator && mkdir temp-SPIRV-LLVM-Translator-build | |
- name: copying artifact from docker to github host | |
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true' | |
run: sudo docker cp buildslt:/SPIRV-LLVM-Translator/build ./temp-SPIRV-LLVM-Translator-build | |
- name: copy deb file to main artifact folder | |
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true' | |
run: sudo cp ./temp-SPIRV-LLVM-Translator-build/build/*.deb ./build-SPIRV-LLVM-Translator | |
build-IGC: | |
needs: [build-SPIRV-LLVM-Translator, download-OpenCL-Clang] | |
if: github.repository == 'intel/intel-graphics-compiler' | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ubuntu_version: [ '20.04', '22.04' ] | |
llvm_ver: [ 14 ] | |
compiler: [ gcc, clang ] | |
include: | |
- ubuntu_version: '22.04' | |
llvm_ver: 15 | |
compiler: gcc | |
experimental: true | |
steps: | |
- uses: actions/checkout@v3 | |
#Get OpenCL Clang | |
- uses: oprypin/find-latest-tag@v1 | |
with: | |
repository: intel/intel-graphics-compiler | |
releases-only: true | |
id: get-latest-IGC-release-tag | |
- name: getting OpenCL Clang from cache from the previous job | |
id: cache-igc-release | |
uses: actions/cache@v3 | |
with: | |
path: ./igc-official-release | |
key: ${{ steps.get-latest-IGC-release-tag.outputs.tag }} | |
- name: checking if deb files are here | |
run: ls ./igc-official-release | |
#Get SPIRV-LLVM-Translator | |
- name: cloning SPIRV-LLVM-Translator repository | |
run: git clone --branch llvm_release_${{ matrix.llvm_ver }}0 https://github.com/KhronosGroup/SPIRV-LLVM-Translator | |
- name: getting latest commit hash from SPIRV-LLVM-Translator repository | |
id: SPIRV-LLVM-Translator-hash | |
working-directory: ./SPIRV-LLVM-Translator | |
run: | | |
SPIRV_TRANSLATOR_SHA_SHORT=$(git log -1 --pretty=format:"%h") | |
echo "This is SPIRV-LLVM-Translator hash = ${SPIRV_TRANSLATOR_SHA_SHORT}" | |
echo "spirv_translator_sha_short=$SPIRV_TRANSLATOR_SHA_SHORT" >> $GITHUB_OUTPUT | |
- name: getting SPIRV-LLVM-Translator deb files from cache from the previous job | |
id: cache-spirv-llvm-translator | |
uses: actions/cache@v3 | |
with: | |
path: ./build-SPIRV-LLVM-Translator | |
key: ${{ steps.SPIRV-LLVM-Translator-hash.outputs.spirv_translator_sha_short }}-ubuntu${{ matrix.ubuntu_version }}-llvm${{ matrix.llvm_ver }} | |
#Build IGC | |
- name: Checkout IGC sources | |
uses: actions/checkout@v3 | |
with: | |
path: workspace/igc | |
- name: Checkout vc-intrinsics sources | |
uses: actions/checkout@v3 | |
with: | |
repository: intel/vc-intrinsics | |
ref: master | |
path: workspace/vc-intrinsics | |
- name: Checkout SPIRV-Headers sources | |
uses: actions/checkout@v3 | |
with: | |
repository: KhronosGroup/SPIRV-Headers | |
ref: sdk-1.3.204.1 | |
path: workspace/SPIRV-Headers | |
- name: Checkout the SPIRV-Headers | |
uses: actions/checkout@v3 | |
with: | |
repository: KhronosGroup/SPIRV-Tools | |
ref: sdk-1.3.204.1 | |
path: workspace/SPIRV-Tools | |
- name: get short hash | |
id: igc-current-short-Hash | |
run: echo "sha_short=${GITHUB_SHA::7}" >> $GITHUB_OUTPUT | |
- name: run Docker | |
run: | | |
docker run --name=buildigc \ | |
-v $(pwd)/scripts/buildIGC.sh:/buildIGC.sh \ | |
-v $(pwd)/igc-official-release:/igc-official-release \ | |
-v $(pwd)/build-SPIRV-LLVM-Translator:/build-SPIRV-LLVM-Translator \ | |
-v $(pwd)/workspace:/workspace \ | |
--env DEBIAN_FRONTEND="noninteractive" \ | |
--env UBUNTU_VERSION=${{ matrix.ubuntu_version }} \ | |
--env LLVM_VERSION=${{ matrix.llvm_ver }} \ | |
--env COMPILER=${{ matrix.compiler }} \ | |
--env IGC_SHA=${{ steps.igc-current-short-Hash.outputs.sha_short }} \ | |
ubuntu:${{ matrix.ubuntu_version }} \ | |
sh /buildIGC.sh | |
- name: creating folder to store output artifacts | |
run: mkdir Artifacts | |
- name: copying artifact from docker to github host | |
run: sudo docker cp buildigc:/workspace/igc/build/DEB-FILES ./Artifacts | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: IGC_Ubuntu${{ matrix.ubuntu_version }}_llvm${{ matrix.llvm_ver }}_${{ matrix.compiler }}-${{ steps.igc-current-short-Hash.outputs.sha_short }} | |
path: ./Artifacts/DEB-FILES/*.deb | |
retention-days: 7 |