Merge "CTest support for QEMU/Renode."
diff --git a/cmake/riscv_baremetal.cmake b/cmake/riscv_baremetal.cmake
index 9c8b93b..bd67cf9 100644
--- a/cmake/riscv_baremetal.cmake
+++ b/cmake/riscv_baremetal.cmake
@@ -1,55 +1,83 @@
-set(SHODAN_TOOLCHAIN_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cache/toolchain_vp/bin CACHE STRING "Shodan toolchain path")
-message (STATUS "Shodan toolchain path is ${SHODAN_TOOLCHAIN_PATH}")
-find_file( RISCV_GCC_COMPILER "riscv32-unknown-elf-gcc" HINTS ${SHODAN_TOOLCHAIN_PATH} PATHS ENV INCLUDE)
+# If set to true, build for IREE using clang. If false, build for gcc.
+set(BUILD_IREE OFF CACHE BOOL "")
-# Check compiler found
-if (EXISTS ${RISCV_GCC_COMPILER})
-message(STATUS "RISC-V GCC found. Using ${RISCV_GCC_COMPILER}")
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMAKE_SYSTEM_ABI ilp32)
+set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+
+set(VEC_DEFAULT_COPTS
+ "-Wall"
+ "-O0"
+ "-g3"
+ "-ggdb"
+ "-Werror")
+
+if( ${BUILD_IREE} )
+ set(CMAKE_SYSTEM_PROCESSOR rv32imfv0p10)
+
+ set(RISCV_TOOLCHAIN_ROOT "$ENV{CACHE}/toolchain_iree_rv32imf/bin/" CACHE PATH "RISC-V toolchain root path")
+ message (STATUS "RISC-V toolchain path is ${RISCV_TOOLCHAIN_ROOT}")
+ find_file(RISCV_COMPILER "clang" HINTS ${RISCV_TOOLCHAIN_ROOT} PATHS ENV INCLUDE)
+
+ set(CMAKE_FIND_ROOT_PATH ${RISCV_TOOLCHAIN_ROOT})
+ list(APPEND CMAKE_PREFIX_PATH "${RISCV_TOOLCHAIN_ROOT}")
+
+ set(CMAKE_C_COMPILER "${RISCV_TOOLCHAIN_ROOT}/clang")
+ set(CMAKE_CXX_COMPILER "${RISCV_TOOLCHAIN_ROOT}/clang++")
+ set(CMAKE_AR "${RISCV_TOOLCHAIN_ROOT}/llvm-ar")
+ set(CMAKE_RANLIB "${RISCV_TOOLCHAIN_ROOT}/llvm-ranlib")
+ set(CMAKE_STRIP "${RISCV_TOOLCHAIN_ROOT}/llvm-strip")
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -menable-experimental-extensions -march=${CMAKE_SYSTEM_PROCESSOR} -mabi=${CMAKE_SYSTEM_ABI}")
+ set(VEC_DEFAULT_COPTS "${VEC_DEFAULT_COPTS}"
+ "-Wno-unused-command-line-argument")
else()
-message(FATAL_ERROR "RISC-V GCC not found. ${RISCV_GCC_COMPILER}")
+ set(CMAKE_SYSTEM_PROCESSOR rv32imv)
+
+ set(RISCV_TOOLCHAIN_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../cache/toolchain_vp/bin CACHE STRING "RISC-V toolchain path")
+ message (STATUS "RISC-V toolchain path is ${RISCV_TOOLCHAIN_ROOT}")
+ find_file( RISCV_COMPILER "riscv32-unknown-elf-gcc" HINTS ${RISCV_TOOLCHAIN_ROOT} PATHS ENV INCLUDE)
+
+ get_filename_component(RISCV_TOOLCHAIN_BIN_PATH ${RISCV_COMPILER} DIRECTORY)
+ get_filename_component(RISCV_TOOLCHAIN_BIN_GCC ${RISCV_COMPILER} NAME_WE)
+ get_filename_component(RISCV_TOOLCHAIN_BIN_EXT ${RISCV_COMPILER} EXT)
+
+ message( "RISC-V GCC Path: ${RISCV_TOOLCHAIN_BIN_PATH}" )
+
+ STRING(REGEX REPLACE "\-gcc" "-" CROSS_COMPILE ${RISCV_COMPILER})
+ message( "RISC-V Cross Compile Prefix: ${CROSS_COMPILE}" )
+
+ set(CMAKE_AR ${CROSS_COMPILE}ar)
+ set(CMAKE_ASM_COMPILER ${RISCV_COMPILER})
+ set(CMAKE_C_COMPILER ${RISCV_COMPILER})
+ set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++)
+
+ set( CMAKE_OBJCOPY ${RISCV_TOOLCHAIN_BIN_PATH}/${CROSS_COMPILE}objcopy
+ CACHE FILEPATH "The toolchain objcopy command " FORCE )
+
+ set( CMAKE_OBJDUMP ${RISCV_TOOLCHAIN_BIN_PATH}/${CROSS_COMPILE}objdump
+ CACHE FILEPATH "The toolchain objdump command " FORCE )
+
+ set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${CMAKE_SYSTEM_PROCESSOR} -mabi=${CMAKE_SYSTEM_ABI}")
+
+ set(VEC_DEFAULT_COPTS "${VEC_DEFAULT_COPTS}"
+ "-ffreestanding"
+ "-ffunction-sections"
+ "-fstack-usage"
+ "-mstrict-align"
+ )
endif()
-get_filename_component(RISCV_TOOLCHAIN_BIN_PATH ${RISCV_GCC_COMPILER} DIRECTORY)
-get_filename_component(RISCV_TOOLCHAIN_BIN_GCC ${RISCV_GCC_COMPILER} NAME_WE)
-get_filename_component(RISCV_TOOLCHAIN_BIN_EXT ${RISCV_GCC_COMPILER} EXT)
-
-message( "RISC-V GCC Path: ${RISCV_TOOLCHAIN_BIN_PATH}" )
-
-STRING(REGEX REPLACE "\-gcc" "-" CROSS_COMPILE ${RISCV_GCC_COMPILER})
-message( "RISC-V Cross Compile Prefix: ${CROSS_COMPILE}" )
-
-set( CMAKE_SYSTEM_NAME Generic )
-set( CMAKE_SYSTEM_PROCESSOR rv32imv )
-set( CMAKE_SYSTEM_ABI ilp32 )
-set( CMAKE_EXECUTABLE_SUFFIX ".elf")
-
-set(CMAKE_AR ${CROSS_COMPILE}ar)
-set(CMAKE_ASM_COMPILER ${RISCV_GCC_COMPILER})
-set(CMAKE_C_COMPILER ${RISCV_GCC_COMPILER})
-set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++)
-
-set( CMAKE_OBJCOPY ${RISCV_TOOLCHAIN_BIN_PATH}/${CROSS_COMPILE}objcopy
- CACHE FILEPATH "The toolchain objcopy command " FORCE )
-
-set( CMAKE_OBJDUMP ${RISCV_TOOLCHAIN_BIN_PATH}/${CROSS_COMPILE}objdump
- CACHE FILEPATH "The toolchain objdump command " FORCE )
-
-set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${CMAKE_SYSTEM_PROCESSOR} -mabi=${CMAKE_SYSTEM_ABI}")
+# Check compiler found
+if (EXISTS ${RISCV_COMPILER})
+ message(STATUS "RISC-V compiler found. Using ${RISCV_COMPILER}")
+else()
+ message(FATAL_ERROR "RISC-V compiler not found. ${RISCV_OMPILER}")
+endif()
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" )
set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" )
set( CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" )
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -nostartfiles " )
-set( VEC_DEFAULT_COPTS
- "-Wall"
- "-Werror"
- "-O0"
- "-g3"
- "-ggdb"
- "-ffreestanding"
- "-ffunction-sections"
- "-fstack-usage"
- "-mstrict-align"
-)
-set( VEC_DEFAULT_LINKOPTS -specs=nano.specs -Wl,--gc-sections -Wl,--print-memory-usage -Wl,-Map=${PROJECT_NAME}.map)
\ No newline at end of file
+set( VEC_DEFAULT_LINKOPTS -specs=nano.specs -Wl,--gc-sections -Wl,--print-memory-usage -Wl,-Map=${PROJECT_NAME}.map)
diff --git a/springbok/crt0.s b/springbok/crt0.s
index 8904159..08c7490 100644
--- a/springbok/crt0.s
+++ b/springbok/crt0.s
@@ -44,14 +44,14 @@
csrw mstatus, a0
# Set lmul=8 and clear the register file
- vsetvli t0, zero, e8, m8
+ vsetvli t0, zero, e8, m8, ta, ma
vmv.v.i v0, 0
vmv.v.i v8, 0
vmv.v.i v16, 0
vmv.v.i v24, 0
# Set lmul=1
- vsetvli t0, zero, e8, m1
+ vsetvli t0, zero, e8, m1, ta, ma
# Set vector extension to "clean"
xori a0, a0, 0x600
@@ -60,7 +60,11 @@
###############################################################
# Reset all other CSRs, and perform any other processor setup #
###############################################################
- # TODO(jonathantate): Fill this out
+ # Enable floating point unit
+ csrr a0, mstatus
+ li a1, 0x2000
+ or a0, a0, a1
+ csrw mstatus, a0
#############################################################
# Clear BSS, stack and unused DTCM memory, set up sentinels #
diff --git a/springbok/include/springbok.h b/springbok/include/springbok.h
index b15e3c7..ebe4564 100644
--- a/springbok/include/springbok.h
+++ b/springbok/include/springbok.h
@@ -7,11 +7,10 @@
#define INFO_TAG "INFO"
#define DEBUG_TAG "DEBUG"
-#define ENDLINE "\n"
#define LOG_FMT "%s |"
#define LOG_ARGS(LOG_TAG) LOG_TAG
-#define LOG_MAX_SZ 128
+#define LOG_MAX_SZ 256
#define SIMLOG(sim_log_level,fmt, ...) \
do { \
@@ -20,10 +19,10 @@
springbok_simprint_##sim_log_level(tmp_log_msg, 0); \
} while (0)
-#define LOG_ERROR(msg, args...) SIMLOG(error, LOG_FMT msg ENDLINE, LOG_ARGS(ERROR_TAG), ## args)
-#define LOG_WARN(msg, args...) SIMLOG(warning, LOG_FMT msg ENDLINE, LOG_ARGS(ERROR_TAG), ## args)
-#define LOG_INFO(msg, args...) SIMLOG(info, LOG_FMT msg ENDLINE, LOG_ARGS(INFO_TAG), ## args)
-#define LOG_DEBUG(msg, args...) SIMLOG(debug, LOG_FMT msg ENDLINE, LOG_ARGS(DEBUG_TAG), ## args)
-#define LOG_NOISY(msg, args...) SIMLOG(noisy, LOG_FMT msg ENDLINE, LOG_ARGS(ERROR_TAG), ## args)
+#define LOG_ERROR(msg, args...) SIMLOG(error, LOG_FMT msg, LOG_ARGS(ERROR_TAG), ## args)
+#define LOG_WARN(msg, args...) SIMLOG(warning, LOG_FMT msg, LOG_ARGS(ERROR_TAG), ## args)
+#define LOG_INFO(msg, args...) SIMLOG(info, LOG_FMT msg, LOG_ARGS(INFO_TAG), ## args)
+#define LOG_DEBUG(msg, args...) SIMLOG(debug, LOG_FMT msg, LOG_ARGS(DEBUG_TAG), ## args)
+#define LOG_NOISY(msg, args...) SIMLOG(noisy, LOG_FMT msg, LOG_ARGS(ERROR_TAG), ## args)
-#endif
\ No newline at end of file
+#endif
diff --git a/tests/vle_vse_test.cpp b/tests/vle_vse_test.cpp
index 80a4172..d80548c 100644
--- a/tests/vle_vse_test.cpp
+++ b/tests/vle_vse_test.cpp
@@ -45,7 +45,7 @@
}
for(int idx = 0; idx < MAXVL_BYTES; idx++)
{
- EXPECT_EQ(test_vector_1[idx], test_vector_2[idx]);
+ ASSERT_EQ(test_vector_1[idx], test_vector_2[idx]);
}
}
}