Add build option to turn on/off RVV Add build option to turn off/off RVV (default: ON). Change-Id: Ic19ecad264b6ee3a5894f19105b0ad4fae2f03d7
diff --git a/cmake/springbok_bytecode_module.cmake b/cmake/springbok_bytecode_module.cmake index 8e8e7f5..e9314de 100644 --- a/cmake/springbok_bytecode_module.cmake +++ b/cmake/springbok_bytecode_module.cmake
@@ -9,6 +9,7 @@ # FLAGS: Flags to pass to the translation tool (list of strings). # C_IDENTIFIER: Identifier to use for generate c embed code. # If omitted then no C embed code will be generated. +# RVV_OFF: Indicate RVV is OFF (default: ON) # # Examples: # springbok_bytecode_module( @@ -31,13 +32,14 @@ # "simple_float_mul_bytecode_module_dylib" # FLAGS # "-iree-input-type=mhlo" +# RVV_OFF # PUBLIC # ) # function(springbok_bytecode_module) cmake_parse_arguments( _RULE - "" + "PUBLIC;RVV_OFF" "NAME;SRC;C_IDENTIFIER" "FLAGS" ${ARGN} @@ -65,6 +67,11 @@ ) endif() + set(_CPU_FEATURES "+m,+f,+zvl512b,+zve32x") + if (${_RULE_RVV_OFF}) + set(_CPU_FEATURES "+m,+f") + endif() + iree_bytecode_module( NAME "${_RULE_NAME}" @@ -77,7 +84,7 @@ "-iree-hal-target-backends=dylib-llvm-aot" "-iree-llvm-target-triple=riscv32-pc-linux-elf" "-iree-llvm-target-cpu=generic-rv32" - "-iree-llvm-target-cpu-features=+m,+f,+zvl512b,+zve32x" + "-iree-llvm-target-cpu-features=${_CPU_FEATURES}" "-iree-llvm-target-abi=ilp32" "-iree-llvm-link-embedded=true" "-iree-llvm-debug-symbols=false"
diff --git a/cmake/springbok_c_module.cmake b/cmake/springbok_c_module.cmake index 381c048..e9774bf 100644 --- a/cmake/springbok_c_module.cmake +++ b/cmake/springbok_c_module.cmake
@@ -2,13 +2,14 @@ # springbok_c_module() # -# A wrapper for the iree_bytecode_module to apply common iree-translate flags +# A wrapper for the iree c module to apply common iree-translate flags # Parameters: # NAME: Name of target. # SRC: Source file to compile into an emitC module. Support relative path. # FLAGS: Flags to pass to the translation tool (list of strings). # C_IDENTIFIER: Identifier to use for generate c embed code. # If omitted then no C embed code will be generated. +# RVV_OFF: Indicate RVV is OFF (default: ON) # # Examples: # springbok_c_module( @@ -27,13 +28,14 @@ # "simple_float_mul.mlir" # FLAGS # "-iree-input-type=mhlo" +# RVV_OFF # PUBLIC # ) # function(springbok_c_module) cmake_parse_arguments( _RULE - "PUBLIC" + "PUBLIC;RVV_OFF" "NAME;SRC" "FLAGS" ${ARGN} @@ -80,6 +82,11 @@ set(_EMITC_LIB_NAME "${_PACKAGE_NAME}_${_RULE_EMITC_NAME}") set(_EMITC_FILE_NAME ${_RULE_EMITC_NAME}.h) + set(_CPU_FEATURES "+m,+f,+zvl512b,+zve32x") + if (${_RULE_RVV_OFF}) + set(_CPU_FEATURES "+m,+f") + endif() + ## Example with VM C module. # Setup args for iree-translate. set(_TRANSLATE_ARGS ${_RULE_FLAGS}) @@ -87,7 +94,7 @@ list(APPEND _TRANSLATE_ARGS "-iree-hal-target-backends=dylib-llvm-aot") list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-triple=riscv32-pc-linux-elf") list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu=generic-rv32") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu-features=+m,+f,+zvl512b,+zve32x") + list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu-features=${_CPU_FEATURES}") list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-abi=ilp32") list(APPEND _TRANSLATE_ARGS "-iree-llvm-link-embedded=false") list(APPEND _TRANSLATE_ARGS "-iree-llvm-link-static")
diff --git a/cmake/springbok_modules.cmake b/cmake/springbok_modules.cmake index eee7e94..a410525 100644 --- a/cmake/springbok_modules.cmake +++ b/cmake/springbok_modules.cmake
@@ -9,6 +9,7 @@ # FLAGS: Flags to pass to the translation tool (list of strings). # C_IDENTIFIER: Identifier to use for generate c embed code. # If omitted then no C embed code will be generated. +# RVV_OFF: Indicate RVV is OFF (default: ON) # # Examples: # springbok_modules( @@ -31,6 +32,7 @@ # "simple_float_mul" # FLAGS # "-iree-input-type=mhlo" +# RVV_OFF # PUBLIC # ) # @@ -38,12 +40,16 @@ function(springbok_modules) cmake_parse_arguments( _RULE - "PUBLIC" + "PUBLIC;RVV_OFF" "NAME;SRC;C_IDENTIFIER" "FLAGS" ${ARGN} ) + if (${_RULE_RVV_OFF}) + set(_RVV_OFF_ARG "RVV_OFF") + endif() + springbok_bytecode_module( NAME "${_RULE_NAME}_bytecode_module_dylib" @@ -53,6 +59,7 @@ "${_RULE_C_IDENTIFIER}_bytecode_module_dylib" FLAGS "${_RULE_FLAGS}" + "${_RVV_OFF_ARG}" PUBLIC ) @@ -63,6 +70,7 @@ "${_RULE_SRC}" FLAGS "${_RULE_FLAGS}" + "${_RVV_OFF_ARG}" PUBLIC )