Skip to content

Commit

Permalink
github: rework clang-compilation CI
Browse files Browse the repository at this point in the history
Signed-off-by: Jerry Zhang Jian <jerry.zhangjian@sifive.com>
  • Loading branch information
jerryzj committed Oct 24, 2024
1 parent d0669e2 commit c1d5dbe
Showing 1 changed file with 103 additions and 47 deletions.
150 changes: 103 additions & 47 deletions .github/workflows/clang-compilation.yml
Original file line number Diff line number Diff line change
@@ -1,61 +1,117 @@
name: Clang (LLVM) intrinsic test case compilation
on: [push]
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch: # Allows manual triggering of the workflow

jobs:
build:
build-and-test:
runs-on: ubuntu-latest
strategy:
matrix:
llvm-version: ["main", "latest-rel"]
llvm-version: [latest-rel]

env:
COMPILER: llvm-project/build/bin/clang
EXTRA_CFLAGS: "-target riscv64"

steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- name: Checkout rvv-intrinsic-doc
uses: actions/checkout@v4
with:
python-version: '3.11'
- name: Prerequisites
run: |
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev dejagnu
- name: Install dependencies
run: |
pip install --user junitparser
- name: Download LLVM
repository: riscv-non-isa/rvv-intrinsic-doc
path: rvv-intrinsic-doc

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Install Python dependencies
run: |
cd ..
rm -rf llvm-project
git clone https://github.com/llvm/llvm-project -j `nproc`
- name: Checkout LLVM version
pip install junitparser
working-directory: ${{ github.workspace }}

- name: Set up LLVM (latest release)
if: matrix.llvm-version == 'latest-rel'
run: |
cd ../llvm-project
if [ "${{ matrix.llvm-version }}" = "latest-rel" ]; then
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
git checkout $latestTag
latest_release=$(curl -sL https://api.github.com/repos/llvm/llvm-project/releases/latest)
download_url=$(echo "$latest_release" | jq -r '.assets[] | select(.name | endswith("Linux-X64.tar.xz")) | .browser_download_url')
if [ -z "$download_url" ]; then
echo "Error: Could not find Linux X64 tarball URL"
exit 1
fi
- name: Build LLVM with Ninja
run: |
cd ../llvm-project
mkdir build && cd build
cmake -G Ninja \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DLLVM_TARGETS_TO_BUILD="RISCV" \
-DLLVM_PARALLEL_LINK_JOBS=12 \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DLLVM_DEFAULT_TARGET_TRIPLE="riscv64-unknown-linux-gnu" \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
../llvm
ninja -j `nproc`
echo $(pwd)
ls bin
- name: Run compilation test, non-overloaded intrinsics (default (TAMA) policy)
run: |
make -C rvv-intrinsic-generator run-api-testing run-bfloat16-api-testing run-vector-crypto-api-testing COMPILER=$(pwd)/../llvm-project/build/bin/clang EXTRA_CFLAGS="-target riscv64"
- name: Run compilation test, overloaded intrinsics (default (TAMA) policy)
filename=$(basename "$download_url")
echo "Downloading $filename..."
curl -sL -o "$filename" "$download_url"
tar xf "$filename"
extracted_dir=$(tar tf "$filename" | head -1 | cut -f1 -d"/")
# Set the COMPILER environment variable
echo "COMPILER=${{ github.workspace }}/$extracted_dir/bin/clang" >> $GITHUB_ENV
working-directory: ${{ github.workspace }}

- name: Install prerequisites (main)
if: matrix.llvm-version == 'main'
run: |
make -C rvv-intrinsic-generator run-overloaded-api-testing run-bfloat16-overloaded-api-testing run-vector-crypto-overloaded-api-testing COMPILER=$(pwd)/../llvm-project/build/bin/clang EXTRA_CFLAGS="-target riscv64"
- name: Run compilation test, non-overloaded intrinsics (non-default policy)
sudo apt-get update
sudo apt-get install -y ninja-build
working-directory: ${{ github.workspace }}

- name: Checkout LLVM (main)
if: matrix.llvm-version == 'main'
uses: actions/checkout@v4
with:
repository: llvm/llvm-project
path: llvm-project
fetch-depth: 1

- name: Configure & Build LLVM (main)
if: matrix.llvm-version == 'main'
run: |
make -C rvv-intrinsic-generator run-policy-api-testing run-bfloat16-policy-api-testing run-vector-crypto-policy-api-testing COMPILER=$(pwd)/../llvm-project/build/bin/clang EXTRA_CFLAGS="-target riscv64"
- name: Run compilation test, overloaded intrinsics (non-default policy)
mkdir -p build && cd build
cmake -G Ninja ../llvm \
-DCMAKE_C_COMPILER=`which clang` \
-DCMAKE_CXX_COMPILER=`which clang++` \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang" \
-DLLVM_TARGETS_TO_BUILD="RISCV" \
-DLLVM_DEFAULT_TARGET_TRIPLE="riscv64-unknown-linux-gnu"
ninja
working-directory: llvm-project

- name: Test
run: |
make -C rvv-intrinsic-generator run-policy-overloaded-api-testing run-bfloat16-policy-overloaded-api-testing run-vector-crypto-policy-overloaded-api-testing COMPILER=$(pwd)/../llvm-project/build/bin/clang EXTRA_CFLAGS="-target riscv64"
set +e
make -C rvv-intrinsic-generator run-vector-crypto-api-testing
exitcode="$?"
echo "exitcode=$exitcode" >> $GITHUB_OUTPUT
exit "$exitcode"
working-directory: rvv-intrinsic-doc

# - name: Run compilation test, non-overloaded intrinsics (default (TAMA) policy)
# run: |
# set -e # Exit on any error
# make -C rvv-intrinsic-generator run-api-testing run-bfloat16-api-testing run-vector-crypto-api-testing
# working-directory: rvv-intrinsic-doc

# - name: Run compilation test, overloaded intrinsics (default (TAMA) policy)
# run: |
# set -e # Exit on any error
# make -C rvv-intrinsic-generator run-overloaded-api-testing run-bfloat16-overloaded-api-testing run-vector-crypto-overloaded-api-testing
# working-directory: rvv-intrinsic-doc

# - name: Run compilation test, non-overloaded intrinsics (non-default policy)
# run: |
# set -e # Exit on any error
# make -C rvv-intrinsic-generator run-policy-api-testing run-bfloat16-policy-api-testing run-vector-crypto-policy-api-testing
# working-directory: rvv-intrinsic-doc

# - name: Run compilation test, overloaded intrinsics (non-default policy)
# run: |
# set -e # Exit on any error
# make -C rvv-intrinsic-generator run-policy-overloaded-api-testing run-bfloat16-policy-overloaded-api-testing run-vector-crypto-policy-overloaded-api-testing
# working-directory: rvv-intrinsic-doc

0 comments on commit c1d5dbe

Please sign in to comment.