From 4b142bb458754b83481cbd88ac870d46fef11633 Mon Sep 17 00:00:00 2001 From: zhanghb97 Date: Thu, 27 Jun 2024 19:45:36 +0000 Subject: [PATCH] [RVV] Add RVV environment guide and update examples. --- CMakeLists.txt | 19 + docs/RVVEnviroment.md | 153 +++++++ docs/rvv-enviroment.md | 35 -- examples/RVVDialect/makefile | 74 +++- examples/RVVExperiment/makefile | 403 ++++++++++++------ examples/VectorExpDialect/makefile | 87 ++-- .../vector-exp-predication-matmul.mlir | 4 +- 7 files changed, 569 insertions(+), 206 deletions(-) create mode 100644 docs/RVVEnviroment.md delete mode 100644 docs/rvv-enviroment.md diff --git a/CMakeLists.txt b/CMakeLists.txt index 8414445414..83b7981421 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ project(buddy-mlir LANGUAGES CXX C) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED YES) +include(ExternalProject) #------------------------------------------------------------------------------- # Options and settings @@ -188,6 +189,24 @@ if(BUDDY_MLIR_USE_MIMALLOC) find_package(mimalloc REQUIRED) endif() +#------------------------------------------------------------------------------- +# The RISC-V toolchain +#------------------------------------------------------------------------------- + +if(BUDDY_MLIR_ENABLE_RISCV_GNU_TOOLCHAIN) + set(RISCV_GNU_TOOLCHAIN_DIR "${BUDDY_SOURCE_DIR}/thirdparty/riscv-gnu-toolchain") + set(RISCV_GNU_TOOLCHAIN_INSTALL_DIR "${CMAKE_BINARY_DIR}/thirdparty/riscv-gnu-toolchain") + ExternalProject_Add( + riscv-gnu-toolchain + SOURCE_DIR ${RISCV_GNU_TOOLCHAIN_DIR} + PREFIX ${RISCV_GNU_TOOLCHAIN_INSTALL_DIR} + CONFIGURE_COMMAND ${RISCV_GNU_TOOLCHAIN_DIR}/configure --prefix=${RISCV_GNU_TOOLCHAIN_INSTALL_DIR} + BUILD_COMMAND make clean && make linux build-qemu -j + BUILD_IN_SOURCE TRUE + INSTALL_COMMAND "" + ) +endif() + #------------------------------------------------------------------------------- # Initialize Python packages #------------------------------------------------------------------------------- diff --git a/docs/RVVEnviroment.md b/docs/RVVEnviroment.md new file mode 100644 index 0000000000..ddca0ab8fc --- /dev/null +++ b/docs/RVVEnviroment.md @@ -0,0 +1,153 @@ +# Environment Setup Guide for MLIR and RVV Testing and Experiments + +This guide provides instructions on setting up an environment to test the RISC-V Vector Extension using the buddy-mlir project. +The target platform for emulation is QEMU. + +## Requirements + +Before proceed any further make sure that you installed dependencies below + +* [LLVM dependecies](https://llvm.org/docs/GettingStarted.html#requirements) +* [GNU Toolchain dependecies](https://github.com/riscv-collab/riscv-gnu-toolchain#prerequisites) +* [QEMU dependecies](https://wiki.qemu.org/Hosts/Linux) + +## Build Steps + +> **_NOTE:_** The build process includes several heavy stages. It may take significant time to clone and build all components. + +0. Prepare `buddy-mlir` and Submodules + +``` +$ git clone https://github.com/buddy-compiler/buddy-mlir.git +$ cd buddy-mlir +$ git submodule update --init +``` + +1. Build Local LLVM/MLIR + +``` +$ cd buddy-mlir +$ mkdir llvm/build +$ cd llvm/build +$ cmake -G Ninja ../llvm \ + -DLLVM_ENABLE_PROJECTS="mlir;clang;openmp" \ + -DLLVM_TARGETS_TO_BUILD="host;RISCV" \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DOPENMP_ENABLE_LIBOMPTARGET=OFF \ + -DCMAKE_BUILD_TYPE=RELEASE \ + -DMLIR_ENABLE_BINDINGS_PYTHON=ON \ + -DPython3_EXECUTABLE=$(which python3) +$ ninja check-clang check-mlir omp +$ export BUILD_LOCAL_LLVM_DIR=$PWD +``` + +2. Build Local `buddy-mlir` + +``` +$ cd buddy-mlir +$ mkdir build +$ cd build +$ cmake -G Ninja .. \ + -DMLIR_DIR=$PWD/../llvm/build/lib/cmake/mlir \ + -DLLVM_DIR=$PWD/../llvm/build/lib/cmake/llvm \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DCMAKE_BUILD_TYPE=RELEASE \ + -DBUDDY_MLIR_ENABLE_RISCV_GNU_TOOLCHAIN=ON \ + -DBUDDY_MLIR_ENABLE_PYTHON_PACKAGES=ON \ + -DPython3_EXECUTABLE=$(which python3) +$ ninja +$ ninja check-buddy +$ export BUILD_RISCV_GNU_TOOLCHAIN_DIR=$PWD/thirdparty/riscv-gnu-toolchain/ +$ export RISCV_GNU_TOOLCHAIN_SYSROOT_DIR=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}/sysroot/ +``` + +3. Build Cross-Compiled Clang + +``` +$ cd buddy-mlir +$ mkdir llvm/build-cross-clang-rv +$ cd llvm/build-cross-clang-rv +$ cmake -G Ninja ../llvm \ + -DLLVM_ENABLE_PROJECTS="clang" \ + -DLLVM_TARGETS_TO_BUILD="RISCV" \ + -DCMAKE_SYSTEM_NAME=Linux \ + -DCMAKE_C_COMPILER=${BUILD_LOCAL_LLVM_DIR}/bin/clang \ + -DCMAKE_CXX_COMPILER=${BUILD_LOCAL_LLVM_DIR}/bin/clang++ \ + -DCMAKE_C_FLAGS="--target=riscv64-unknown-linux-gnu --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT_DIR} --gcc-toolchain=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}" \ + -DCMAKE_CXX_FLAGS="--target=riscv64-unknown-linux-gnu --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT_DIR} --gcc-toolchain=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}" \ + -DLLVM_TABLEGEN=${BUILD_LOCAL_LLVM_DIR}/bin/llvm-tblgen \ + -DCLANG_TABLEGEN=${BUILD_LOCAL_LLVM_DIR}/bin/clang-tblgen \ + -DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu \ + -DLLVM_TARGET_ARCH=RISCV64 \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ZSTD=Off +$ ninja clang lli +``` + +4. Build Cross-Compiled MLIR + +``` +$ cd buddy-mlir +$ mkdir llvm/build-cross-mlir-rv +$ cd llvm/build-cross-mlir-rv +$ cmake -G Ninja ../../llvm/llvm \ + -DLLVM_ENABLE_PROJECTS="mlir" \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DCMAKE_CROSSCOMPILING=True \ + -DLLVM_TARGET_ARCH=RISCV64 \ + -DLLVM_TARGETS_TO_BUILD=RISCV \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DLLVM_NATIVE_ARCH=RISCV \ + -DLLVM_HOST_TRIPLE=riscv64-unknown-linux-gnu \ + -DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu \ + -DCMAKE_C_COMPILER=${BUILD_LOCAL_LLVM_DIR}/bin/clang \ + -DCMAKE_CXX_COMPILER=${BUILD_LOCAL_LLVM_DIR}/bin/clang++ \ + -DCMAKE_C_FLAGS="--target=riscv64-unknown-linux-gnu --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT_DIR} --gcc-toolchain=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}" \ + -DCMAKE_CXX_FLAGS="--target=riscv64-unknown-linux-gnu --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT_DIR} --gcc-toolchain=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}" \ + -DMLIR_TABLEGEN=${BUILD_LOCAL_LLVM_DIR}/bin/mlir-tblgen \ + -DLLVM_TABLEGEN=${BUILD_LOCAL_LLVM_DIR}/bin/llvm-tblgen \ + -DMLIR_LINALG_ODS_YAML_GEN=${BUILD_LOCAL_LLVM_DIR}/bin/mlir-linalg-ods-yaml-gen \ + -DMLIR_PDLL_TABLEGEN=${BUILD_LOCAL_LLVM_DIR}/bin/mlir-pdll \ + -DLLVM_ENABLE_ZSTD=Off +$ ninja +$ export BUILD_CROSS_MLIR_DIR=$PWD +``` + +5. Build Cross-Compiled `buddy-mlir` + +``` +$ cd buddy-mlir +$ mkdir build-cross-rv +$ cd build-cross-rv +$ cmake -G Ninja .. \ + -DCMAKE_SYSTEM_NAME=Linux \ + -DMLIR_DIR=${BUILD_CROSS_MLIR_DIR}/lib/cmake/mlir \ + -DLLVM_DIR=${BUILD_CROSS_MLIR_DIR}/lib/cmake/llvm \ + -DCMAKE_CROSSCOMPILING=True \ + -DLLVM_TARGETS_TO_BUILD=RISCV \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DLLVM_NATIVE_ARCH=RISCV \ + -DLLVM_HOST_TRIPLE=riscv64-unknown-linux-gnu \ + -DCMAKE_C_COMPILER=${BUILD_LOCAL_LLVM_DIR}/bin/clang \ + -DCMAKE_CXX_COMPILER=${BUILD_LOCAL_LLVM_DIR}/bin/clang++ \ + -DCMAKE_C_FLAGS="--target=riscv64-unknown-linux-gnu --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT_DIR} --gcc-toolchain=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}" \ + -DCMAKE_CXX_FLAGS="--target=riscv64-unknown-linux-gnu --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT_DIR} --gcc-toolchain=${BUILD_RISCV_GNU_TOOLCHAIN_DIR}" \ + -DLLVM_ENABLE_ZSTD=Off +$ ninja StaticMLIRCRunnerUtils StaticMLIRRunnerUtils +``` + +## Testing RVV Environment + +``` +$ cd buddy-mlir +$ cd examples/RVVDialect/ +$ make rvv-mul-add-run + +// Expected Output: +Unranked Memref base@ = 0x55555729aaa0 rank = 1 offset = 0 sizes = [20] strides = [1] data = +[0, 12, 26, 42, 60, 80, 102, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +``` + +Congratulations! Your RVV environment is now fully set up. Enjoy exploring and testing! diff --git a/docs/rvv-enviroment.md b/docs/rvv-enviroment.md deleted file mode 100644 index f48a8262d1..0000000000 --- a/docs/rvv-enviroment.md +++ /dev/null @@ -1,35 +0,0 @@ -# Setting up environment for testing MLIR RVV dialect - -This guide will help to set up environment for testing RISC-V Vector Extension using buddy-mlir project and -corresponding RVV Dialect. As a target platform QEMU emulator is used. - -## Requirements - -Before proceed any further make sure that you installed dependencies below - -* [LLVM dependecies](https://llvm.org/docs/GettingStarted.html#requirements) -* [GNU Toolchain dependecies](https://github.com/riscv-collab/riscv-gnu-toolchain#prerequisites) -* [QEMU dependecies](https://wiki.qemu.org/Hosts/Linux) - -## Build steps - -1. Clone buddy-mlir project -``` bash -git clone git@github.com:buddy-compiler/buddy-mlir.git -cd buddy-mlir -git submodule update --init -``` -> **_NOTE:_** `buddly-mlir` contains `llvm-project` as a submodule. `llvm-project` is large, so cloning will take a while - -2. Run a script building environment -``` -cd buddy-mlir/thirdparty -./build-rvv-env.sh -``` -> **_NOTE:_** The scripts consist of multiple heavy stages, so be patient - it will take a while to clone and build -everything. -Detailed description of the steps can be found in [the page](https://gist.github.com/zhanghb97/ad44407e169de298911b8a4235e68497) - -> **_NOTE:_** By default, the script allows `make` to use all available threads for compilation. It may lead -to consuming a lot of memory and crashing the compiler. If you face with the issue, try to limit the number of threads -by passing a corresponding argument to the script. For example, `./build-rvv-env.sh 4` diff --git a/examples/RVVDialect/makefile b/examples/RVVDialect/makefile index d30c64a000..dea63bd25c 100644 --- a/examples/RVVDialect/makefile +++ b/examples/RVVDialect/makefile @@ -1,18 +1,48 @@ #!/bin/bash -BUDDY_OPT := ../../build/bin/buddy-opt -BUDDY_TRANSLATE := ../../build/bin/buddy-translate -LLC := ../../llvm/build/bin/llc + +# Build Directories +MLIR_BUILD_DIR := ../../llvm/build/ +BUDDY_MLIR_BUILD_DIR := ../../build/ +CROSS_BUDDY_MLIR_BUILD_DIR := ../../build-cross-rv/ +CROSS_LLVM_BUILD_DIR := ../../llvm/build-cross-clang-rv/ +CROSS_MLIR_BUILD_DIR := ../../llvm/build-cross-mlir-rv/ + +# Buddy MLIR Tools +BUDDY_OPT := ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-opt +BUDDY_TRANSLATE := ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-translate + +# Core LLVM/MLIR Tools +MLIR_OPT := ${MLIR_BUILD_DIR}/bin/mlir-opt +MLIR_TRANSLATE := ${MLIR_BUILD_DIR}/bin/mlir-translate +MLIR_CPU_RUNNER := ${MLIR_BUILD_DIR}/bin/mlir-cpu-runner +LLC := ${MLIR_BUILD_DIR}/bin/llc +LOCAL_CLANG := ${MLIR_BUILD_DIR}/bin/clang + +# RISC-V GNU Toolchain +RISCV_GNU_TOOLCHAIN := ${BUDDY_MLIR_BUILD_DIR}/thirdparty/riscv-gnu-toolchain +RISCV_GNU_TOOLCHAIN_SYSROOT := ${RISCV_GNU_TOOLCHAIN}/sysroot +QEMU := ${RISCV_GNU_TOOLCHAIN}/bin/qemu-riscv64 + +# Cross Compiled Toolchain +CROSS_BUDDY_MLIR_LIB := ${CROSS_BUDDY_MLIR_BUILD_DIR}/lib/ +CROSS_LLI := ${CROSS_LLVM_BUILD_DIR}/bin/lli +CROSS_MLIR_CPU_RUNNER := ${CROSS_MLIR_BUILD_DIR}/bin/mlir-cpu-runner +CROSS_MLIR_C_RUNNER_UTILS := ${CROSS_MLIR_BUILD_DIR}/lib/libmlir_c_runner_utils.so +CROSS_MLIR_RUNNER_UTILS := ${CROSS_MLIR_BUILD_DIR}/lib/libmlir_runner_utils.so +CROSS_MLIR_LIB := ${CROSS_MLIR_BUILD_DIR}/lib + +# Optimization Flag OPT_FLAG := -O0 -RISCV_GNU_TOOLCHAIN := ../../thirdparty/build-riscv-gnu-toolchain -RISCV_GNU_TOOLCHAIN_SYSROOT := ../../thirdparty/build-riscv-gnu-toolchain/sysroot -QEMU := ../../thirdparty/qemu/build/riscv64-linux-user/qemu-riscv64 -LOCAL_CLANG := ../../thirdparty/build-local-clang/bin/clang -CROSS_LLI := ../../thirdparty/build-cross-clang/bin/lli -CROSS_MLIR_CPU_RUNNER := ../../thirdparty/build-cross-mlir/bin/mlir-cpu-runner -CROSS_MLIR_C_RUNNER_UTILS := ../../thirdparty/build-cross-mlir/lib/libmlir_c_runner_utils.so -CROSS_MLIR_RUNNER_UTILS := ../../thirdparty/build-cross-mlir/lib/libmlir_runner_utils.so -CROSS_MLIR_LIB := ../../thirdparty/build-cross-mlir/lib +ifeq ($(shell uname),Linux) +MLIR_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_runner_utils.so +MLIR_C_RUNNER_UTILS := ${MLIR_BUILD_DIR}//lib/libmlir_c_runner_utils.so +MTRIPLE := x86_64-unknown-linux-gnu +else ifeq ($(shell uname),Darwin) +MLIR_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_runner_utils.dylib +MLIR_C_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_c_runner_utils.dylib +MTRIPLE := x86_64-apple-darwin +endif rvv-setvl-lower: @${BUDDY_OPT} ./rvv-setvl.mlir \ @@ -43,7 +73,7 @@ rvv-setvl-128-run: -convert-func-to-llvm \ -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} -buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} @@ -56,7 +86,7 @@ rvv-setvl-256-run: -convert-func-to-llvm \ -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} -buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=256 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} @@ -87,7 +117,7 @@ rvv-rsqrt-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-mul-add-lower: @${BUDDY_OPT} ./rvv-mul-add.mlir \ @@ -122,7 +152,7 @@ rvv-mul-add-run: -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} \ - -cpu rv64,x-v=true,vlen=128 \ + -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} \ -dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -132,6 +162,8 @@ rvv-stripmining-lower: -convert-scf-to-cf \ -convert-math-to-llvm \ -lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -143,6 +175,8 @@ rvv-stripmining-translate: -convert-scf-to-cf \ -convert-math-to-llvm \ -lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -154,13 +188,15 @@ rvv-stripmining-run: -convert-scf-to-cf \ -convert-math-to-llvm \ -lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} \ - -cpu rv64,x-v=true,vlen=128 \ + -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} \ -dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -170,6 +206,8 @@ rvv-stripmining-aot: -convert-scf-to-cf \ -convert-math-to-llvm \ -lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -182,4 +220,4 @@ rvv-stripmining-aot: -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out diff --git a/examples/RVVExperiment/makefile b/examples/RVVExperiment/makefile index ba424d4252..5a8a28f38d 100644 --- a/examples/RVVExperiment/makefile +++ b/examples/RVVExperiment/makefile @@ -1,25 +1,50 @@ #!/bin/bash -BUDDY_OPT := ../../build/bin/buddy-opt -BUDDY_TRANSLATE := ../../build/bin/buddy-translate -MLIR_OPT := ../../llvm/build/bin/mlir-opt -MLIR_TRANSLATE := ../../llvm/build/bin/mlir-translate -MLIR_CPU_RUNNER := ../../llvm/build/bin/mlir-cpu-runner -LLI := ../../llvm/build/bin/lli -LLC := ../../llvm/build/bin/llc -OPT := ../../llvm/build/bin/opt + +# Build Directories +MLIR_BUILD_DIR := ../../llvm/build/ +BUDDY_MLIR_BUILD_DIR := ../../build/ +CROSS_BUDDY_MLIR_BUILD_DIR := ../../build-cross-rv/ +CROSS_LLVM_BUILD_DIR := ../../llvm/build-cross-clang-rv/ +CROSS_MLIR_BUILD_DIR := ../../llvm/build-cross-mlir-rv/ + +# Buddy MLIR Tools +BUDDY_OPT := ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-opt +BUDDY_TRANSLATE := ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-translate + +# Core LLVM/MLIR Tools +MLIR_OPT := ${MLIR_BUILD_DIR}/bin/mlir-opt +MLIR_TRANSLATE := ${MLIR_BUILD_DIR}/bin/mlir-translate +MLIR_CPU_RUNNER := ${MLIR_BUILD_DIR}/bin/mlir-cpu-runner +LLC := ${MLIR_BUILD_DIR}/bin/llc +LLI := ${MLIR_BUILD_DIR}/bin/lli +OPT := ${MLIR_BUILD_DIR}/bin/opt +LOCAL_CLANG := ${MLIR_BUILD_DIR}/bin/clang + +# RISC-V GNU Toolchain +RISCV_GNU_TOOLCHAIN := ${BUDDY_MLIR_BUILD_DIR}/thirdparty/riscv-gnu-toolchain +RISCV_GNU_TOOLCHAIN_SYSROOT := ${RISCV_GNU_TOOLCHAIN}/sysroot +QEMU := ${RISCV_GNU_TOOLCHAIN}/bin/qemu-riscv64 + +# Cross Compiled Toolchain +CROSS_BUDDY_MLIR_LIB := ${CROSS_BUDDY_MLIR_BUILD_DIR}/lib/ +CROSS_LLI := ${CROSS_LLVM_BUILD_DIR}/bin/lli +CROSS_MLIR_CPU_RUNNER := ${CROSS_MLIR_BUILD_DIR}/bin/mlir-cpu-runner +CROSS_MLIR_C_RUNNER_UTILS := ${CROSS_MLIR_BUILD_DIR}/lib/libmlir_c_runner_utils.so +CROSS_MLIR_RUNNER_UTILS := ${CROSS_MLIR_BUILD_DIR}/lib/libmlir_runner_utils.so +CROSS_MLIR_LIB := ${CROSS_MLIR_BUILD_DIR}/lib + +# Optimization Flag OPT_FLAG := -O3 -MLIR_RUNNER_UTILS := ../../llvm/build/lib/libmlir_runner_utils.so -MLIR_C_RUNNER_UTILS := ../../llvm/build/lib/libmlir_c_runner_utils.so - -RISCV_GNU_TOOLCHAIN := ../../thirdparty/build-riscv-gnu-toolchain -RISCV_GNU_TOOLCHAIN_SYSROOT := ../../thirdparty/build-riscv-gnu-toolchain/sysroot -QEMU := ../../thirdparty/qemu/build/riscv64-linux-user/qemu-riscv64 -LOCAL_CLANG := ../../thirdparty/build-local-clang/bin/clang -CROSS_LLI := ../../thirdparty/build-cross-clang/bin/lli -CROSS_MLIR_CPU_RUNNER := ../../thirdparty/build-cross-mlir/bin/mlir-cpu-runner -CROSS_MLIR_C_RUNNER_UTILS := ../../thirdparty/build-cross-mlir/lib/libmlir_c_runner_utils.so -CROSS_MLIR_RUNNER_UTILS := ../../thirdparty/build-cross-mlir/lib/libmlir_runner_utils.so -CROSS_MLIR_LIB := ../../thirdparty/build-cross-mlir/lib + +ifeq ($(shell uname),Linux) +MLIR_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_runner_utils.so +MLIR_C_RUNNER_UTILS := ${MLIR_BUILD_DIR}//lib/libmlir_c_runner_utils.so +MTRIPLE := x86_64-unknown-linux-gnu +else ifeq ($(shell uname),Darwin) +MLIR_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_runner_utils.dylib +MLIR_C_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_c_runner_utils.dylib +MTRIPLE := x86_64-apple-darwin +endif MLIR_VECTOR_EXAMPLES := ../MLIRVector @@ -53,7 +78,7 @@ rvv-scalable-run-128: --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -67,16 +92,15 @@ rvv-scalable-aot-128: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out -# Note: this target will trigger an error to show the limitation. -rvv-scalable-run-256-error: +rvv-scalable-run-256: @${BUDDY_OPT} ./rvv-scalable.mlir \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=256 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -86,28 +110,25 @@ rvv-insert-extract-intrinsics-asm: -mattr=+m,+d,+v -riscv-v-vector-bits-min=256 \ --filetype=asm -o log.s -rvv-insert-extract-intrinsics-asm-error: - @${LLC} ./rvv-insert-extract-intrinsics.ll \ - -mtriple riscv64 -target-abi lp64d \ - -mattr=+m,+d,+v -riscv-v-vector-bits-min=128 \ - --filetype=asm -o log.s - +# TODO: Fix me. rvv-c-setvl-translate: @${LOCAL_CLANG} -march=rv64gcv --target=riscv64-unknown-linux-gnu \ --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT} --gcc-toolchain=${RISCV_GNU_TOOLCHAIN} \ ./rvv-c-setvl.c -fPIC -S -emit-llvm -o log.ll +# TODO: Fix me. rvv-c-setvl-asm: @${LOCAL_CLANG} -march=rv64gcv --target=riscv64-unknown-linux-gnu \ --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT} --gcc-toolchain=${RISCV_GNU_TOOLCHAIN} \ ./rvv-c-setvl.c -fPIC -S -o log.s +# TODO: Fix me. run-targets += rvv-c-setvl-run rvv-c-setvl-run: @${LOCAL_CLANG} -march=rv64gcv --target=riscv64-unknown-linux-gnu \ --sysroot=${RISCV_GNU_TOOLCHAIN_SYSROOT} --gcc-toolchain=${RISCV_GNU_TOOLCHAIN} \ ./rvv-c-setvl.c -fPIC -S -emit-llvm -o log.ll - @${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + @${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --entry-function=main --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic log.ll rvv-setvl-translate: @@ -131,7 +152,7 @@ rvv-setvl-run: --lower-rvv -convert-vector-to-llvm -convert-arith-to-llvm -convert-func-to-llvm \ -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -151,7 +172,7 @@ rvv-vscale-128-run: --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -161,7 +182,7 @@ rvv-vscale-256-run: --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=256 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -171,7 +192,7 @@ rvv-vscale-512-run: --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=512 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -185,7 +206,7 @@ rvv-vscale-128-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vscale-256-aot: @${BUDDY_OPT} ./rvv-vscale.mlir \ @@ -197,7 +218,7 @@ rvv-vscale-256-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=256 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vscale-512-aot: @${BUDDY_OPT} ./rvv-vscale.mlir \ @@ -209,7 +230,7 @@ rvv-vscale-512-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=512 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-loop-mask-asm: @${MLIR_OPT} ./rvv-loop-mask.mlir \ @@ -228,7 +249,7 @@ rvv-loop-mask-run: -convert-vector-to-llvm -finalize-memref-to-llvm -convert-arith-to-llvm \ -convert-func-to-llvm -reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -240,15 +261,21 @@ rvv-vp-intrinsic-lower: rvv-vp-intrinsic-translate: @${BUDDY_OPT} ./rvv-vp-intrinsic.mlir \ - --convert-scf-to-cf \ - --lower-rvv --lower-bud --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ + -lower-vector-exp \ + --lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ + --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir -o log.ll rvv-vp-intrinsic-asm: @${BUDDY_OPT} ./rvv-vp-intrinsic.mlir \ - --convert-scf-to-cf \ - --lower-rvv --lower-bud --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ + -lower-vector-exp \ + --lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ + --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ ${LLC} ${OPT_FLAG} -mtriple riscv64 -target-abi lp64d \ @@ -257,50 +284,60 @@ rvv-vp-intrinsic-asm: rvv-vp-intrinsic-run: @${BUDDY_OPT} ./rvv-vp-intrinsic.mlir \ - --convert-scf-to-cf \ - --lower-rvv -lower-vector-exp --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ + -lower-vector-exp \ + --lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ + --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} rvv-vp-intrinsic-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic.mlir \ - --convert-scf-to-cf \ - --lower-rvv -lower-vector-exp --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ + -lower-vector-exp \ + --lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ + --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ ${LLC} -mtriple riscv64 -target-abi lp64d -mattr=+m,+d,+v -riscv-v-vector-bits-min=128 --filetype=obj -o log.o @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-sh-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-sh.mlir \ - --convert-scf-to-cf \ - --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ + --lower-rvv \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ + --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ ${LLC} -mtriple riscv64 -mattr=+v -riscv-v-vector-bits-min=128 --filetype=obj -o log.o @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-sh-jit: @${BUDDY_OPT} ./rvv-vp-intrinsic-sh.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+v \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} rvv-vp-intrinsic-add-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-add.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -309,20 +346,22 @@ rvv-vp-intrinsic-add-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-add-jit: @${BUDDY_OPT} ./rvv-vp-intrinsic-add.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} rvv-vp-intrinsic-and-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-and.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -331,20 +370,22 @@ rvv-vp-intrinsic-and-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-and-jit: @${BUDDY_OPT} ./rvv-vp-intrinsic-and.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} --buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} rvv-vp-intrinsic-div-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-div.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -353,10 +394,11 @@ rvv-vp-intrinsic-div-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-mul-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-mul.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -365,10 +407,11 @@ rvv-vp-intrinsic-mul-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-sub-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-sub.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -377,10 +420,11 @@ rvv-vp-intrinsic-sub-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-fneg-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-fneg.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -389,10 +433,11 @@ rvv-vp-intrinsic-fneg-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-ext-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-ext.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -401,10 +446,11 @@ rvv-vp-intrinsic-ext-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-to-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-to.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -413,10 +459,11 @@ rvv-vp-intrinsic-to-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-trunc-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-trunc.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -425,10 +472,11 @@ rvv-vp-intrinsic-trunc-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-rem-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-rem.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -437,10 +485,11 @@ rvv-vp-intrinsic-rem-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-fma-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-fma.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -449,10 +498,11 @@ rvv-vp-intrinsic-fma-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-merge-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-merge.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -461,10 +511,11 @@ rvv-vp-intrinsic-merge-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-select-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-select.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -473,10 +524,11 @@ rvv-vp-intrinsic-select-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-or-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-or.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -485,10 +537,11 @@ rvv-vp-intrinsic-or-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-xor-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-xor.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -497,10 +550,11 @@ rvv-vp-intrinsic-xor-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-max-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-max.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -509,10 +563,11 @@ rvv-vp-intrinsic-max-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-min-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-min.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -521,10 +576,12 @@ rvv-vp-intrinsic-min-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out +# TODO: Fix Me rvv-vp-intrinsic-memory-aot: @${BUDDY_OPT} rvv-vp-intrinsic-memory.mlir \ + -convert-vector-to-scf \ -convert-linalg-to-loops -lower-affine -convert-scf-to-cf \ --lower-rvv \ -convert-vector-to-llvm -finalize-memref-to-llvm -convert-arith-to-llvm \ @@ -534,11 +591,14 @@ rvv-vp-intrinsic-memory-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out +# TODO: Fix Me rvv-vp-intrinsic-memory-scalable-aot: @${BUDDY_OPT} rvv-vp-intrinsic-memory-scalable.mlir \ - -convert-linalg-to-loops -lower-affine -convert-scf-to-cf \ + -convert-linalg-to-loops -lower-affine \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --lower-rvv \ -convert-vector-to-llvm -finalize-memref-to-llvm -convert-arith-to-llvm \ -convert-func-to-llvm -reconcile-unrealized-casts | \ @@ -547,10 +607,11 @@ rvv-vp-intrinsic-memory-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-fma-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-fma-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -559,10 +620,11 @@ rvv-vp-intrinsic-fma-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-fneg-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-fneg-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -571,10 +633,11 @@ rvv-vp-intrinsic-fneg-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-sh-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-sh-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -583,10 +646,11 @@ rvv-vp-intrinsic-sh-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-add-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-add-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -595,10 +659,11 @@ rvv-vp-intrinsic-add-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-and-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-and-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -607,10 +672,11 @@ rvv-vp-intrinsic-and-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-div-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-div-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -619,10 +685,11 @@ rvv-vp-intrinsic-div-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-ext-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-ext-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -631,10 +698,11 @@ rvv-vp-intrinsic-ext-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-max-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-max-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -643,10 +711,11 @@ rvv-vp-intrinsic-max-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-merge-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-merge-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -655,10 +724,11 @@ rvv-vp-intrinsic-merge-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-min-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-min-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -667,10 +737,11 @@ rvv-vp-intrinsic-min-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-mul-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-mul-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -679,10 +750,11 @@ rvv-vp-intrinsic-mul-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-or-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-or-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -691,10 +763,11 @@ rvv-vp-intrinsic-or-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-rem-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-rem-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -703,10 +776,11 @@ rvv-vp-intrinsic-rem-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-select-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-select-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -715,10 +789,11 @@ rvv-vp-intrinsic-select-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-sub-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-sub-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -727,10 +802,11 @@ rvv-vp-intrinsic-sub-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-to-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-to-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -739,10 +815,11 @@ rvv-vp-intrinsic-to-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-trunc-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-trunc-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -751,10 +828,11 @@ rvv-vp-intrinsic-trunc-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-xor-scalable-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-xor-scalable.mlir \ + -convert-vector-to-scf \ -convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ @@ -763,10 +841,11 @@ rvv-vp-intrinsic-xor-scalable-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-rem-error: @${BUDDY_OPT} ./rvv-vp-intrinsic-rem-error.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -775,10 +854,11 @@ rvv-vp-intrinsic-rem-error: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-fmul-reduce-error: @${BUDDY_OPT} ./rvv-vp-intrinsic-fmul-reduce-error.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -787,10 +867,11 @@ rvv-vp-intrinsic-fmul-reduce-error: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out rvv-vp-intrinsic-mul-reduce-aot: @${BUDDY_OPT} ./rvv-vp-intrinsic-mul-reduce.mlir \ + -convert-vector-to-scf \ --convert-scf-to-cf \ --lower-rvv --convert-vector-to-llvm --finalize-memref-to-llvm --convert-arith-to-llvm \ --convert-func-to-llvm --reconcile-unrealized-casts | \ @@ -799,7 +880,7 @@ rvv-vp-intrinsic-mul-reduce-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o -mabi=lp64d \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out ################################################################################ # Reuse MLIR Vector Examples @@ -822,12 +903,14 @@ rvv-load-run: --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-broadcast-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-broadcast.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -838,15 +921,19 @@ rvv-broadcast-asm: run-targets += rvv-broadcast-run rvv-broadcast-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-broadcast.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-fma-asm: - @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/rvv-fma.mlir \ + @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-fma.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -857,15 +944,19 @@ rvv-fma-asm: run-targets += rvv-fma-run rvv-fma-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-fma.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-long-asm: - @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/rvv-long.mlir \ + @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-long.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -876,10 +967,12 @@ rvv-long-asm: run-targets += rvv-long-run rvv-long-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-long.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} @@ -900,12 +993,14 @@ rvv-transpose-run: -convert-vector-to-llvm -finalize-memref-to-llvm -convert-func-to-llvm \ -reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-shape-cast-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-shape-cast.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -916,15 +1011,19 @@ rvv-shape-cast-asm: run-targets += rvv-shape-cast-run rvv-shape-cast-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-shape-cast.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-bitcast-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-bitcast.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -935,15 +1034,19 @@ rvv-bitcast-asm: run-targets += rvv-bitcast-run rvv-bitcast-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-bitcast.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-shuffle-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-shuffle.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -954,15 +1057,19 @@ rvv-shuffle-asm: run-targets += rvv-shuffle-run rvv-shuffle-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-shuffle.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-splat-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-splat.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -973,15 +1080,19 @@ rvv-splat-asm: run-targets += rvv-splat-run rvv-splat-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-splat.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-insert-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-insert.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -992,15 +1103,19 @@ rvv-insert-asm: run-targets += rvv-insert-run rvv-insert-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-insert.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-reduction-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-reduction.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1011,15 +1126,19 @@ rvv-reduction-asm: run-targets += rvv-reduction-run rvv-reduction-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-reduction.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-outerproduct-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-outerproduct.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1030,15 +1149,19 @@ rvv-outerproduct-asm: run-targets += rvv-outerproduct-run rvv-outerproduct-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-outerproduct.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-createmask-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-createmask.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1049,15 +1172,19 @@ rvv-createmask-asm: run-targets += rvv-create-mask-run rvv-create-mask-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-create-mask.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-extract-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-extract.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1068,15 +1195,19 @@ rvv-extract-asm: run-targets += rvv-extract-run rvv-extract-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-extract.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-maskedload-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-maskedload.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1087,15 +1218,19 @@ rvv-maskedload-asm: run-targets += rvv-maskedload-run rvv-maskedload-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-maskedload.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-maskedstore-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-maskedstore.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1106,15 +1241,19 @@ rvv-maskedstore-asm: run-targets += rvv-maskedstore-run rvv-maskedstore-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-maskedstore.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} rvv-extract-strided-slice-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-extract-strided-slice.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1125,15 +1264,19 @@ rvv-extract-strided-slice-asm: run-targets += rvv-extract-strided-slice-run rvv-extract-strided-slice-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-extract-strided-slice.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-constant-mask-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-constant-mask.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1144,15 +1287,19 @@ rvv-constant-mask-asm: run-targets += rvv-constant-mask-run rvv-constant-mask-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-constant-mask.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-expand-load-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-expandload.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1163,15 +1310,19 @@ rvv-expand-load-asm: run-targets += rvv-expand-load-run rvv-expand-load-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-expandload.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-compressstore-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-compressstore.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1182,15 +1333,19 @@ rvv-compressstore-asm: run-targets += rvv-compressstore-run rvv-compressstore-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-compressstore.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} rvv-insert-strided-slice-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-insert-strided-slice.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1201,15 +1356,19 @@ rvv-insert-strided-slice-asm: run-targets += rvv-insert-strided-slice-run rvv-insert-strided-slice-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-insert-strided-slice.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} rvv-scatter-asm: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-scatter.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ @@ -1220,9 +1379,11 @@ rvv-scatter-asm: run-targets += rvv-scatter-run rvv-scatter-run: @${MLIR_OPT} ${MLIR_VECTOR_EXAMPLES}/vector-scatter.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ --convert-vector-to-llvm --finalize-memref-to-llvm --convert-func-to-llvm \ --reconcile-unrealized-casts | \ ${MLIR_TRANSLATE} --mlir-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} --march=riscv64 -mattr=+m,+d,+v -jit-linker=jitlink -relocation-model=pic \ --dlopen=${CROSS_MLIR_C_RUNNER_UTILS} --dlopen=${CROSS_MLIR_RUNNER_UTILS} diff --git a/examples/VectorExpDialect/makefile b/examples/VectorExpDialect/makefile index 8d55cc14a4..ab85a8a2cc 100644 --- a/examples/VectorExpDialect/makefile +++ b/examples/VectorExpDialect/makefile @@ -1,30 +1,46 @@ #!/bin/bash -BUDDY_OPT := ../../build/bin/buddy-opt -BUDDY_TRANSLATE := ../../build/bin/buddy-translate -MLIR_OPT := ../../llvm/build/bin/mlir-opt -MLIR_TRANSLATE := ../../llvm/build/bin/mlir-translate -MLIR_CPU_RUNNER := ../../llvm/build/bin/mlir-cpu-runner -LLC := ../../llvm/build/bin/llc -OPT_FLAG := -O0 -RISCV_GNU_TOOLCHAIN := ../../thirdparty/build-riscv-gnu-toolchain -RISCV_GNU_TOOLCHAIN_SYSROOT := ../../thirdparty/build-riscv-gnu-toolchain/sysroot -QEMU := ../../thirdparty/qemu/build/riscv64-linux-user/qemu-riscv64 -LOCAL_CLANG := ../../thirdparty/build-local-clang/bin/clang -CROSS_LLI := ../../thirdparty/build-cross-clang/bin/lli -CROSS_MLIR_CPU_RUNNER := ../../thirdparty/build-cross-mlir/bin/mlir-cpu-runner -CROSS_MLIR_C_RUNNER_UTILS := ../../thirdparty/build-cross-mlir/lib/libmlir_c_runner_utils.so -CROSS_MLIR_RUNNER_UTILS := ../../thirdparty/build-cross-mlir/lib/libmlir_runner_utils.so -CROSS_MLIR_LIB := ../../thirdparty/build-cross-mlir/lib -CROSS_BUDDY_MLIR_LIB := ../../thirdparty/build-cross-buddy-mlir/lib/ +# Build Directories +MLIR_BUILD_DIR := ../../llvm/build/ +BUDDY_MLIR_BUILD_DIR := ../../build/ +CROSS_BUDDY_MLIR_BUILD_DIR := ../../build-cross-rv/ +CROSS_LLVM_BUILD_DIR := ../../llvm/build-cross-clang-rv/ +CROSS_MLIR_BUILD_DIR := ../../llvm/build-cross-mlir-rv/ + +# Buddy MLIR Tools +BUDDY_OPT := ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-opt +BUDDY_TRANSLATE := ${BUDDY_MLIR_BUILD_DIR}/bin/buddy-translate + +# Core LLVM/MLIR Tools +MLIR_OPT := ${MLIR_BUILD_DIR}/bin/mlir-opt +MLIR_TRANSLATE := ${MLIR_BUILD_DIR}/bin/mlir-translate +MLIR_CPU_RUNNER := ${MLIR_BUILD_DIR}/bin/mlir-cpu-runner +LLC := ${MLIR_BUILD_DIR}/bin/llc +LOCAL_CLANG := ${MLIR_BUILD_DIR}/bin/clang + +# RISC-V GNU Toolchain +RISCV_GNU_TOOLCHAIN := ${BUDDY_MLIR_BUILD_DIR}/thirdparty/riscv-gnu-toolchain +RISCV_GNU_TOOLCHAIN_SYSROOT := ${RISCV_GNU_TOOLCHAIN}/sysroot +QEMU := ${RISCV_GNU_TOOLCHAIN}/bin/qemu-riscv64 + +# Cross Compiled Toolchain +CROSS_BUDDY_MLIR_LIB := ${CROSS_BUDDY_MLIR_BUILD_DIR}/lib/ +CROSS_LLI := ${CROSS_LLVM_BUILD_DIR}/bin/lli +CROSS_MLIR_CPU_RUNNER := ${CROSS_MLIR_BUILD_DIR}/bin/mlir-cpu-runner +CROSS_MLIR_C_RUNNER_UTILS := ${CROSS_MLIR_BUILD_DIR}/lib/libmlir_c_runner_utils.so +CROSS_MLIR_RUNNER_UTILS := ${CROSS_MLIR_BUILD_DIR}/lib/libmlir_runner_utils.so +CROSS_MLIR_LIB := ${CROSS_MLIR_BUILD_DIR}/lib + +# Optimization Flag +OPT_FLAG := -O0 ifeq ($(shell uname),Linux) -MLIR_RUNNER_UTILS := ../../llvm/build/lib/libmlir_runner_utils.so -MLIR_C_RUNNER_UTILS := ../../llvm/build/lib/libmlir_c_runner_utils.so +MLIR_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_runner_utils.so +MLIR_C_RUNNER_UTILS := ${MLIR_BUILD_DIR}//lib/libmlir_c_runner_utils.so MTRIPLE := x86_64-unknown-linux-gnu else ifeq ($(shell uname),Darwin) -MLIR_RUNNER_UTILS := ../../llvm/build/lib/libmlir_runner_utils.dylib -MLIR_C_RUNNER_UTILS := ../../llvm/build/lib/libmlir_c_runner_utils.dylib +MLIR_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_runner_utils.dylib +MLIR_C_RUNNER_UTILS := ${MLIR_BUILD_DIR}/lib/libmlir_c_runner_utils.dylib MTRIPLE := x86_64-apple-darwin endif @@ -39,6 +55,8 @@ vector-exp-load-original-lower: vector-exp-load-original-translate: @${BUDDY_OPT} ./vector-exp-load-original.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -47,6 +65,8 @@ vector-exp-load-original-translate: vector-exp-load-original-asm: @${BUDDY_OPT} ./vector-exp-load-original.mlir \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -59,6 +79,8 @@ vector-exp-load-original-asm: vector-exp-config-lower: @${BUDDY_OPT} ./vector-exp-predication.mlir \ -lower-vector-exp \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -68,6 +90,8 @@ vector-exp-config-lower: vector-exp-config-translate: @${BUDDY_OPT} ./vector-exp-predication.mlir \ -lower-vector-exp \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -77,6 +101,8 @@ vector-exp-config-translate: vector-exp-config-run: @${BUDDY_OPT} ./vector-exp-predication.mlir \ -lower-vector-exp \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -87,6 +113,8 @@ vector-exp-config-run: vector-exp-predication-memory-lower: @${BUDDY_OPT} ./vector-exp-predication-memory.mlir \ -lower-vector-exp \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ @@ -96,13 +124,14 @@ vector-exp-predication-memory-lower: vector-exp-predication-memory-run: @${BUDDY_OPT} ./vector-exp-predication-memory.mlir \ -lower-vector-exp \ + -convert-vector-to-scf \ + -convert-scf-to-cf \ -convert-vector-to-llvm \ -finalize-memref-to-llvm \ -convert-func-to-llvm \ -reconcile-unrealized-casts |\ ${BUDDY_TRANSLATE} -buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} \ - -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} \ -dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -119,8 +148,7 @@ vector-exp-predication-matmul-run: -convert-func-to-llvm \ -reconcile-unrealized-casts |\ ${BUDDY_TRANSLATE} -buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} \ - -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} \ -dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -141,7 +169,7 @@ vector-exp-predication-matmul-aot: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out vector-exp-predication-matmul-elf: @${BUDDY_OPT} ./vector-exp-predication-matmul.mlir \ @@ -212,7 +240,7 @@ vector-exp-add-mask-run: -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} -buddy-to-llvmir | \ ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} \ - -cpu rv64,x-v=true,vlen=128 \ + -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} \ -dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -243,8 +271,7 @@ vector-exp-add-predication-run: -convert-func-to-llvm \ -reconcile-unrealized-casts | \ ${BUDDY_TRANSLATE} -buddy-to-llvmir | \ - ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} \ - -cpu rv64,x-v=true,vlen=128 \ + ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max \ ${CROSS_LLI} -march=riscv64 -mattr=+m,+d,+v \ -dlopen=${CROSS_MLIR_C_RUNNER_UTILS} \ -dlopen=${CROSS_MLIR_RUNNER_UTILS} @@ -291,4 +318,4 @@ vector-exp-dynamic-vector-run: @${RISCV_GNU_TOOLCHAIN}/bin/riscv64-unknown-linux-gnu-gcc log.o \ -L${CROSS_MLIR_LIB} -lmlir_runner_utils -lmlir_c_runner_utils \ -o a.out - @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu rv64,x-v=true,vlen=128 a.out + @LD_LIBRARY_PATH=${CROSS_MLIR_LIB} ${QEMU} -L ${RISCV_GNU_TOOLCHAIN_SYSROOT} -cpu max a.out diff --git a/examples/VectorExpDialect/vector-exp-predication-matmul.mlir b/examples/VectorExpDialect/vector-exp-predication-matmul.mlir index 557b38f9e6..fc4aee47e9 100644 --- a/examples/VectorExpDialect/vector-exp-predication-matmul.mlir +++ b/examples/VectorExpDialect/vector-exp-predication-matmul.mlir @@ -85,8 +85,8 @@ func.func @main() -> i32 { call @matmul(%mem_i32, %mem_i32, %result_mem) : (memref<10x10xi32>, memref<10x10xi32>, memref<10x10xi32>) -> () - // %print_result_mem = memref.cast %result_mem : memref<10x10xi32> to memref<*xi32> - // call @printMemrefI32(%print_result_mem) : (memref<*xi32>) -> () + %print_result_mem = memref.cast %result_mem : memref<10x10xi32> to memref<*xi32> + call @printMemrefI32(%print_result_mem) : (memref<*xi32>) -> () %ret = arith.constant 0 : i32 return %ret : i32