-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Jerry Zhang Jian <jerry.zhangjian@sifive.com>
- Loading branch information
Showing
1 changed file
with
103 additions
and
47 deletions.
There are no files selected for viewing
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
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 |