Implement SIMD latest opcodes and update LLVM to 13.0 (#758)
Implement the latest SIMD opcodes and update LLVM 13.0, update the llvm build scripts, update the sample workloads‘ build scripts, and build customized wasi-sdk to build some workloads. Also refine the CI rules. Signed-off-by: Wenyong Huang <wenyong.huang@intel.com>
This commit is contained in:
@ -5,6 +5,8 @@ cmake_minimum_required (VERSION 3.0)
|
||||
|
||||
project(bwa_wasm C)
|
||||
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/preparation.cmake)
|
||||
|
||||
################ LIBZ ################
|
||||
set(LIBZ_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../libz)
|
||||
add_library(z_wasm STATIC
|
||||
@ -86,16 +88,15 @@ set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME bwa.wasm)
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include/SSE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include/pthread
|
||||
${WASI_SDK_HOME}/share/wasi-sysroot/include/libc/musl
|
||||
${WASI_SDK_HOME}/share/wasi-sysroot/include/sse
|
||||
)
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
USE_MALLOC_WRAPPERS
|
||||
__SSE__ __SSE2__ __SSE4_1__
|
||||
_WASI_EMULATED_MMAN _WASI_EMULATED_SIGNAL
|
||||
_WASI_EMULATED_MMAN _WASI_EMULATED_SIGNAL _WASI_EMULATED_PROCESS_CLOCKS
|
||||
)
|
||||
|
||||
target_compile_options(${PROJECT_NAME}
|
||||
@ -112,16 +113,7 @@ target_link_options(${PROJECT_NAME}
|
||||
LINKER:-z,stack-size=1048576
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} z_wasm)
|
||||
|
||||
find_program(WASM_OPT
|
||||
NAMES wasm-opt
|
||||
PATHS /opt/binaryen-version_97/bin /opt/binaryen/bin
|
||||
)
|
||||
|
||||
if (NOT WASM_OPT)
|
||||
message(WARNING "can not find wasm-opt and will not optimize any wasm module")
|
||||
endif()
|
||||
target_link_libraries(${PROJECT_NAME} z_wasm wasi-emulated-process-clocks)
|
||||
|
||||
add_custom_target(bwa_wasm_opt ALL
|
||||
COMMAND
|
||||
|
||||
@ -10,67 +10,37 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/preparation.cmake)
|
||||
#######################################
|
||||
include(ExternalProject)
|
||||
|
||||
################ HEADERS ################
|
||||
set(EMSDK_SYSTEM_HEADERS "$ENV{EMSDK}/upstream/emscripten/system/include")
|
||||
set(EMSDK_SSE_HEADERS "${EMSDK_SYSTEM_HEADERS}/SSE")
|
||||
set(EMSDK_LIBC_HEADERS "${EMSDK_SYSTEM_HEADERS}/libc")
|
||||
ExternalProject_Add(headers_from_emcc
|
||||
PREFIX headers
|
||||
SOURCE_DIR ${EMSDK_SYSTEM_HEADERS}
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE
|
||||
&& ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys
|
||||
&& ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/emscripten
|
||||
# copy emscripten SSE header files
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_SYSTEM_HEADERS}/wasm_simd128.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_SSE_HEADERS}/immintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
|
||||
# SSE
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_SSE_HEADERS}/xmmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
|
||||
# SSE2
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_SSE_HEADERS}/emmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
|
||||
# SSE4.1
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_SSE_HEADERS}/smmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
|
||||
# a fake empty header to aovid further depenency
|
||||
&& ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_SOURCE_DIR}/include/emscripten/emscripten.h
|
||||
# copy emscripten pthread related header files
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_LIBC_HEADERS}/pthread.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_LIBC_HEADERS}/signal.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_LIBC_HEADERS}/netdb.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_LIBC_HEADERS}/sys/wait.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
|
||||
&& ${CMAKE_COMMAND} -E copy ${EMSDK_LIBC_HEADERS}/sys/socket.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
|
||||
)
|
||||
|
||||
################ libz ################
|
||||
ExternalProject_Add(libz_src
|
||||
PREFIX libz
|
||||
GIT_REPOSITORY https://github.com/madler/zlib.git
|
||||
GIT_TAG master
|
||||
GIT_PROGRESS ON
|
||||
GIT_SHALLOW ON
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libz
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
################ bwa ################
|
||||
ExternalProject_Add(bwa
|
||||
PREFIX bwa
|
||||
GIT_REPOSITORY https://github.com/lh3/bwa.git
|
||||
GIT_TAG master
|
||||
GIT_PROGRESS ON
|
||||
GIT_SHALLOW ON
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/bwa
|
||||
DEPENDS libz_src headers_from_emcc
|
||||
UPDATE_COMMAND git clean -fd && git checkout -- *
|
||||
DEPENDS libz_src
|
||||
UPDATE_COMMAND git clean -ffdx && git checkout -- *
|
||||
&& ${CMAKE_COMMAND} -E echo "Copying pre-installed CMakeLists.txt"
|
||||
&& ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.bwa_wasm.txt CMakeLists.txt
|
||||
&& git apply ../bwa.patch
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND}
|
||||
-DWASI_SDK_PREFIX=${WASI_SDK_HOME}/wasi-sdk
|
||||
-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_HOME}/wasi-sdk/share/cmake/wasi-sdk.cmake
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/bwa
|
||||
-DWASI_SDK_PREFIX=${WASI_SDK_HOME}
|
||||
-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_HOME}/share/cmake/wasi-sdk.cmake
|
||||
-DCMAKE_SYSROOT=${WASI_SDK_HOME}/share/wasi-sysroot
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/bwa
|
||||
BUILD_COMMAND make bwa_wasm_opt
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ./bwa.opt.wasm ${CMAKE_CURRENT_SOURCE_DIR}/build/bwa.wasm
|
||||
)
|
||||
|
||||
1
samples/workload/bwa/build_workload.sh
Symbolic link
1
samples/workload/bwa/build_workload.sh
Symbolic link
@ -0,0 +1 @@
|
||||
../docker/build_workload.sh
|
||||
@ -1 +0,0 @@
|
||||
../docker/docker_build.sh
|
||||
Reference in New Issue
Block a user