diff --git a/README.vortex b/README.vortex index b6bb5f1dc77a70ea880ec91daeb742470d39180a..d50fa2bdc8e7861a34f1de9e43132f794b4454dc 100644 --- a/README.vortex +++ b/README.vortex @@ -8,4 +8,7 @@ - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$POCL_PATH -DWITH_LLVM_CONFIG=$LLVM_PREFIX/bin/llvm-config -DVORTEX_PREFIX=$VORTEX_PREFIX -DENABLE_VORTEX=ON -DKERNEL_CACHE_DEFAULT=OFF -DENABLE_HOST_CPU_DEVICES=OFF -DENABLE_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON -DENABLE_ICD=OFF .. - make -j`nproc` - make install -- cp -r ../include $POCL_RT_PATH \ No newline at end of file +- cp -r ../include $POCL_RT_PATH + +cmake -B build ./ -G "Unix Makefiles" -DCLANG_HAS_64B_MATH=1 -DCLANG_HAS_128B_MATH=1 -DCLANG_NEEDS_RTLIB=0 -DCMAKE_BUILD_TYPE=Release -DENABLE_VORTEX=ON -DENABLE_POCLCC=ON -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DVORTEX_PREFIX=/home/noic/dev/vortex-traces -DKERNEL_CACHE_DEFAULT=OFF -DENABLE_HOST_CPU_DEVICES=OFF -DENABLE_TESTS=OFF -DSTATIC_LLVM=ON -DENABLE_LOADABLE_DRIVERS=OFF -DWITH_LLVM_CONFIG=/usr/local/bin/llvm-config -DHOST_CPU_SUPPORTS_DOUBLE=ON -DPOCL_DEBUG_MESSAGES=ON -DENABLE_ICD=OFF +cmake --build build -j `nproc` --target install diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake index 428ec61822a928667dd3e57cc19f455d4f8c4a90..f9169e52e5204386ce31a214b6551f6f92b30edd 100644 --- a/cmake/LLVM.cmake +++ b/cmake/LLVM.cmake @@ -525,13 +525,13 @@ if(NOT DEFINED CLANG_NEEDS_RTLIB) # on 64bit systems, we need 128bit integers for Errol set(INC "extern __uint128_t __udivmodti4(__uint128_t a, __uint128_t b, __uint128_t* rem);") set(SRC "__uint128_t low, mid, tmp1, pow19 = (__uint128_t)1000000000; mid = __udivmodti4(low, pow19, &tmp1); return 0;") - custom_try_link_clang("${INC}" "${SRC}" RES) + custom_try_link_clang("${INC}" "${SRC}" RES "-march=rv32imaf" "-fforce-enable-int128") if(NOT RES) message(STATUS "udivmodti4 compiles without extra flags") set(RT128 ON) else() - custom_try_link_clang("${INC}" "${SRC}" RES "--rtlib=compiler-rt") + custom_try_link_clang("${INC}" "${SRC}" RES "--rtlib=compiler-rt" "-march=rv32imaf" "-fforce-enable-int128") if(NOT RES) message(STATUS "udivmodti4 compiles WITH --rtlib=compiler-rt") set(NEEDS_RTLIB_FLAG ON) diff --git a/include/CL/CMakeLists.txt b/include/CL/CMakeLists.txt index 69b5829288ae5d2858919b6aa2add9f4e23e8a21..da2b71c098a7314486cc11d0f061c0c127fc95da 100644 --- a/include/CL/CMakeLists.txt +++ b/include/CL/CMakeLists.txt @@ -33,6 +33,8 @@ if(INSTALL_OPENCL_HEADERS) cl_dx9_media_sharing_intel.h cl_ext.h cl_egl.h + cl_exp_defined_builtin_kernels.h + cl_exp_tensor.h cl_ext_intel.h cl_ext_pocl.h cl_gl.h diff --git a/lib/CL/devices/CMakeLists.txt b/lib/CL/devices/CMakeLists.txt index fed894c44bce55717982c8774261e74379c2b9e1..c3908a9dcc682230fab87183ab9ab0d82320d687 100644 --- a/lib/CL/devices/CMakeLists.txt +++ b/lib/CL/devices/CMakeLists.txt @@ -162,7 +162,7 @@ if(ENABLE_VORTEX) "$<TARGET_OBJECTS:pocl-devices-vortex>") if(NOT ENABLE_LOADABLE_DRIVERS) - list(APPEND POCL_DEVICES_LINK_LIST vortex) + list(APPEND POCL_DEVICES_LINK_LIST ${VORTEX_PREFIX}/runtime/libvortex.so) endif() endif() diff --git a/lib/CL/devices/vortex/CMakeLists.txt b/lib/CL/devices/vortex/CMakeLists.txt index dc53db46e706d0f7ea91b71c9be1fa1539fa90c6..4326f9f758324ac944b0a2a50b263d2c211e9585 100644 --- a/lib/CL/devices/vortex/CMakeLists.txt +++ b/lib/CL/devices/vortex/CMakeLists.txt @@ -33,7 +33,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) add_pocl_device_library("pocl-devices-vortex" pocl-vortex.c pocl-vortex.h vortex_utils.cc vortex_utils.h) if(ENABLE_LOADABLE_DRIVERS) - target_link_libraries(pocl-devices-vortex PRIVATE ${VORTEX_PREFIX}/runtime/lib/libvortex.so ${PTHREAD_LIBRARY}) + target_link_libraries(pocl-devices-vortex PRIVATE ${VORTEX_PREFIX}/runtime/libvortex.so ${PTHREAD_LIBRARY}) endif() install(FILES "kernel_main.c" "kernel_args.h" diff --git a/lib/CL/devices/vortex/pocl-vortex.c b/lib/CL/devices/vortex/pocl-vortex.c index bdd48f0e21c88c07d80e948b95ff4199885b9900..7608747865d6ebe188d16a3fedb7cbca8edae548 100644 --- a/lib/CL/devices/vortex/pocl-vortex.c +++ b/lib/CL/devices/vortex/pocl-vortex.c @@ -1,5 +1,5 @@ #include "pocl-vortex.h" -#include "builtin_kernels.hh" +#include "pocl_builtin_kernels.h" #include "common.h" #include "config.h" #include "config2.h" diff --git a/lib/kernel/vortex/CMakeLists.txt b/lib/kernel/vortex/CMakeLists.txt index 71aaa4b2d1bdf96acf42438e9ded7948f3d83966..af97049d8cd3f5afaf1140cdc90816f6d36b5d20 100644 --- a/lib/kernel/vortex/CMakeLists.txt +++ b/lib/kernel/vortex/CMakeLists.txt @@ -25,10 +25,10 @@ include("bitcode_rules") -set(LLVM_TARGET_64 riscv64) +set(LLVM_TARGET_64 riscv64-none-unknown-elf) set(TARGET_MARCH_64 rv64imafd) -set(LLVM_TARGET_32 riscv32) +set(LLVM_TARGET_32 riscv32-none-unknown-elf) set(TARGET_MARCH_32 rv32imaf) set(KERNEL_SOURCES ${SOURCES_GENERIC}) @@ -56,13 +56,13 @@ foreach(EXT ${VORTEX_DEVICE_EXTENSIONS}) endforeach() separate_arguments(DEVICE_CL_FLAGS) -set(CLANG_FLAGS "-ffreestanding" "-target" "${LLVM_TARGET_32}" "-march=${TARGET_MARCH_32}" "-emit-llvm" "-DPOCL_DEVICE_ADDRESS_BITS=32" "-D_CL_DISABLE_HALF" "-I${VORTEX_PREFIX}/kernel/include") +set(CLANG_FLAGS "-Dcl_khr_fp64" "-Dcl_khr_int64" "-cl-ext=all,-cl_khr_fp64" "-ffreestanding" "-target" "${LLVM_TARGET_32}" "-march=${TARGET_MARCH_32}" "-emit-llvm" "-DPOCL_DEVICE_ADDRESS_BITS=32" "-D_CL_DISABLE_HALF" "-I${VORTEX_PREFIX}/kernel/include" "-I${VORTEX_PREFIX}/hw/") set(DEVICE_CL_FLAGS "-D__OPENCL_VERSION__=${VORTEX_DEVICE_CL_VERSION} -DPOCL_DEVICE_ADDRESS_BITS=32") -make_kernel_bc(KERNEL_BC_32 "${LLVM_TARGET_32}" "VX32-BCs" 0 0 0 ${KERNEL_SOURCES}) +make_kernel_bc(KERNEL_BC_32 "riscv32" "VX32-BCs" 0 0 0 ${KERNEL_SOURCES}) -set(CLANG_FLAGS "-ffreestanding" "-target" "${LLVM_TARGET_64}" "-march=${TARGET_MARCH_64}" "-emit-llvm" "-DPOCL_DEVICE_ADDRESS_BITS=64" "-D_CL_DISABLE_HALF" "-I${VORTEX_PREFIX}/kernel/include") +set(CLANG_FLAGS "-Dcl_khr_fp64" "-Dcl_khr_int64" "-cl-ext=all,-cl_khr_fp64" "-ffreestanding" "-target" "${LLVM_TARGET_64}" "-march=${TARGET_MARCH_64}" "-emit-llvm" "-DPOCL_DEVICE_ADDRESS_BITS=64" "-D_CL_DISABLE_HALF" "-I${VORTEX_PREFIX}/kernel/include" "-I${VORTEX_PREFIX}/hw/") set(DEVICE_CL_FLAGS "-D__OPENCL_VERSION__=${VORTEX_DEVICE_CL_VERSION} -DPOCL_DEVICE_ADDRESS_BITS=64") -make_kernel_bc(KERNEL_BC_64 "${LLVM_TARGET_64}" "VX64-BCs" 0 0 0 ${KERNEL_SOURCES}) +make_kernel_bc(KERNEL_BC_64 "riscv64" "VX64-BCs" 0 0 0 ${KERNEL_SOURCES}) # just debug message(STATUS "${LLVM_TARGET_32} Kernel BC: ${KERNEL_BC_32}")