sw:vec: Add scalar build support to build rv32im binaries

Add CMake option "BUILD_SIMPLIFIED_CORE" to use the macros defined in
https://spacebeaker-review.googlesource.com/c/shodan/sw/vec/+/18021
to build rv32im SW binaries.

Also remove the unused "riscv_vector.h" header file in the softrvv test
code. The header checks the vector extension in the compilation -march
flag and fails if v-ext is not used. Instead of guard it with the macro,
I remove the unused header.

Change-Id: I85c81cf2d63c232dac53ae15826753d3dd117aa8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ac3e2a9..f1bb05e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,7 @@
 
 cmake_minimum_required (VERSION 3.10)
 
+option(BUILD_SIMPLIFIED_CORE "Build the project with a simplified set of ISA support.")
 set(CMAKE_C_ABI_COMPILED ON)
 set(CMAKE_CXX_ABI_COMPILED ON)
 
@@ -11,6 +12,12 @@
 
 project(springbok_project)
 
+if(${BUILD_SIMPLIFIED_CORE})
+  add_definitions(-DLIBSPRINGBOK_NO_VECTOR_SUPPORT)
+  add_definitions(-DLIBSPRINGBOK_NO_FLOAT_SUPPORT)
+  add_definitions(-DLIBSPRINGBOK_NO_EXCEPTION_SUPPORT)
+endif()
+
 enable_language(ASM)
 
 include($ENV{ROOTDIR}/sw/pigweed/pw_build/pigweed.cmake)
diff --git a/cmake/riscv_baremetal.cmake b/cmake/riscv_baremetal.cmake
index 29ed234..b10e7ca 100644
--- a/cmake/riscv_baremetal.cmake
+++ b/cmake/riscv_baremetal.cmake
@@ -23,8 +23,11 @@
 )
 
 if(${BUILD_WITH_CLANG})
-     set(CMAKE_SYSTEM_PROCESSOR rv32imfv1p0)
-
+     if(${BUILD_SIMPLIFIED_CORE})
+       set(CMAKE_SYSTEM_PROCESSOR rv32im)
+     else()
+       set(CMAKE_SYSTEM_PROCESSOR rv32imfv1p0)
+     endif()
      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)
diff --git a/pw_unit_test_demo/CMakeLists.txt b/pw_unit_test_demo/CMakeLists.txt
index 6116e7a..96a718e 100644
--- a/pw_unit_test_demo/CMakeLists.txt
+++ b/pw_unit_test_demo/CMakeLists.txt
@@ -1,4 +1,6 @@
-
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
 vec_cc_test(
   NAME
     pw_unit_test_demo
diff --git a/softrvv/tests/CMakeLists.txt b/softrvv/tests/CMakeLists.txt
index aec740a..364304d 100644
--- a/softrvv/tests/CMakeLists.txt
+++ b/softrvv/tests/CMakeLists.txt
@@ -1,15 +1,3 @@
-
-vec_cc_test(
-  NAME
-    vec_disable_test
-  SRCS
-    vec_disable_test.cpp
-  DEPS
-    softrvv
-  LINKOPTS
-   -Xlinker --defsym=__itcm_length__=256K
-)
-
 vec_cc_test(
   NAME
     softrvv_vwadd
@@ -100,24 +88,6 @@
 
 softrvv_vec_cc_generated_test(
   NAME
-    vfadd
-  TEMPLATE
-    softrvv_vfadd_test.tpl.cpp
-  LINKOPTS
-   -Xlinker --defsym=__itcm_length__=128K
-)
-
-softrvv_vec_cc_generated_test(
-  NAME
-    vfsub
-  TEMPLATE
-    softrvv_vfsub_test.tpl.cpp
-  LINKOPTS
-   -Xlinker --defsym=__itcm_length__=128K
-)
-
-softrvv_vec_cc_generated_test(
-  NAME
     vadd
   TEMPLATE
     softrvv_vadd_test.tpl.cpp
@@ -353,3 +323,35 @@
    -Xlinker --defsym=__itcm_length__=128K
 )
 
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
+
+vec_cc_test(
+  NAME
+    vec_disable_test
+  SRCS
+    vec_disable_test.cpp
+  DEPS
+    softrvv
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=256K
+)
+
+softrvv_vec_cc_generated_test(
+  NAME
+    vfadd
+  TEMPLATE
+    softrvv_vfadd_test.tpl.cpp
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=128K
+)
+
+softrvv_vec_cc_generated_test(
+  NAME
+    vfsub
+  TEMPLATE
+    softrvv_vfsub_test.tpl.cpp
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=128K
+)
diff --git a/softrvv/tests/softrvv_vand_test.cpp b/softrvv/tests/softrvv_vand_test.cpp
index 2eb5f5f..f5db394 100644
--- a/softrvv/tests/softrvv_vand_test.cpp
+++ b/softrvv/tests/softrvv_vand_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vmacc_test.cpp b/softrvv/tests/softrvv_vmacc_test.cpp
index ed784d5..f0449f8 100644
--- a/softrvv/tests/softrvv_vmacc_test.cpp
+++ b/softrvv/tests/softrvv_vmacc_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp b/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp
index 8c1284f..57f1397 100644
--- a/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp
+++ b/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vmax_test.cpp b/softrvv/tests/softrvv_vmax_test.cpp
index 8b1e179..4c15c71 100644
--- a/softrvv/tests/softrvv_vmax_test.cpp
+++ b/softrvv/tests/softrvv_vmax_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdint.h>
 #include <stdio.h>
diff --git a/softrvv/tests/softrvv_vmaxu_test.cpp b/softrvv/tests/softrvv_vmaxu_test.cpp
index cc7306b..747d3cd 100644
--- a/softrvv/tests/softrvv_vmaxu_test.cpp
+++ b/softrvv/tests/softrvv_vmaxu_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdint.h>
 #include <stdio.h>
diff --git a/softrvv/tests/softrvv_vmin_test.cpp b/softrvv/tests/softrvv_vmin_test.cpp
index c3852f7..82cbaea 100644
--- a/softrvv/tests/softrvv_vmin_test.cpp
+++ b/softrvv/tests/softrvv_vmin_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdint.h>
 #include <stdio.h>
diff --git a/softrvv/tests/softrvv_vmv_s_x_test.cpp b/softrvv/tests/softrvv_vmv_s_x_test.cpp
index fd10f46..55b74b2 100644
--- a/softrvv/tests/softrvv_vmv_s_x_test.cpp
+++ b/softrvv/tests/softrvv_vmv_s_x_test.cpp
@@ -1,5 +1,4 @@
 #include <limits.h>
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 
diff --git a/softrvv/tests/softrvv_vor_test.cpp b/softrvv/tests/softrvv_vor_test.cpp
index 9d01e5d..6879155 100644
--- a/softrvv/tests/softrvv_vor_test.cpp
+++ b/softrvv/tests/softrvv_vor_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vsext_test.cpp b/softrvv/tests/softrvv_vsext_test.cpp
index 27e3c81..adffb60 100644
--- a/softrvv/tests/softrvv_vsext_test.cpp
+++ b/softrvv/tests/softrvv_vsext_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vwadd_test.cpp b/softrvv/tests/softrvv_vwadd_test.cpp
index 6935a42..b955307 100644
--- a/softrvv/tests/softrvv_vwadd_test.cpp
+++ b/softrvv/tests/softrvv_vwadd_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vwaddu_test.cpp b/softrvv/tests/softrvv_vwaddu_test.cpp
index 871a62f..06d2e03 100644
--- a/softrvv/tests/softrvv_vwaddu_test.cpp
+++ b/softrvv/tests/softrvv_vwaddu_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vwsub_test.cpp b/softrvv/tests/softrvv_vwsub_test.cpp
index db44f4d..7111524 100644
--- a/softrvv/tests/softrvv_vwsub_test.cpp
+++ b/softrvv/tests/softrvv_vwsub_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vwsubu_test.cpp b/softrvv/tests/softrvv_vwsubu_test.cpp
index c23d6c2..0d10882 100644
--- a/softrvv/tests/softrvv_vwsubu_test.cpp
+++ b/softrvv/tests/softrvv_vwsubu_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/softrvv_vzext_test.cpp b/softrvv/tests/softrvv_vzext_test.cpp
index 896a764..7ef7e37 100644
--- a/softrvv/tests/softrvv_vzext_test.cpp
+++ b/softrvv/tests/softrvv_vzext_test.cpp
@@ -1,4 +1,3 @@
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/softrvv/tests/templates/base.tpl.cpp b/softrvv/tests/templates/base.tpl.cpp
index 586cfff..04aa997 100644
--- a/softrvv/tests/templates/base.tpl.cpp
+++ b/softrvv/tests/templates/base.tpl.cpp
@@ -12,7 +12,6 @@
     return src1_data, src2_data, rs1
 %>
 /* File is auto-generated. */
-#include <riscv_vector.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/test_v_helpers/test_v_helpers.cpp b/test_v_helpers/test_v_helpers.cpp
index 133ad07..b539448 100644
--- a/test_v_helpers/test_v_helpers.cpp
+++ b/test_v_helpers/test_v_helpers.cpp
@@ -1,5 +1,5 @@
 #include "test_v_helpers.h"
-
+#ifndef LIBSPRINGBOK_NO_VECTOR_SUPPORT
 #include <riscv_vector.h>
 
 namespace test_v_helpers {
@@ -530,3 +530,5 @@
 }
 
 }  // namespace test_v_helpers
+
+#endif  // #ifndef LIBSPRINGBOK_NO_VECTOR_SUPPORT
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index dbe8669..ba12983 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,3 +1,7 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
+
 vec_cc_generated_test(
   NAME
     vfadd
diff --git a/vector_executive/CMakeLists.txt b/vector_executive/CMakeLists.txt
index 9116c16..8128db2 100644
--- a/vector_executive/CMakeLists.txt
+++ b/vector_executive/CMakeLists.txt
@@ -1,3 +1,6 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
 
 vec_cc_binary(
     NAME
diff --git a/vector_load_store_tests/CMakeLists.txt b/vector_load_store_tests/CMakeLists.txt
index d929aa7..fc5a350 100644
--- a/vector_load_store_tests/CMakeLists.txt
+++ b/vector_load_store_tests/CMakeLists.txt
@@ -1,3 +1,6 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
 
 vec_cc_binary(
   NAME
diff --git a/vector_matmul4_asm_test/CMakeLists.txt b/vector_matmul4_asm_test/CMakeLists.txt
index 7b797a3..6c0c04b 100644
--- a/vector_matmul4_asm_test/CMakeLists.txt
+++ b/vector_matmul4_asm_test/CMakeLists.txt
@@ -1,3 +1,7 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
+
 vec_cc_binary(
     NAME
       vector_matmul4_asm_test
diff --git a/vector_tests/CMakeLists.txt b/vector_tests/CMakeLists.txt
index e939871..c943ad4 100644
--- a/vector_tests/CMakeLists.txt
+++ b/vector_tests/CMakeLists.txt
@@ -1,3 +1,6 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
 
 enable_language(ASM)
 add_library(vector_tests
diff --git a/vector_vadd_vsub_tests/CMakeLists.txt b/vector_vadd_vsub_tests/CMakeLists.txt
index 2ce8ff3..72e39b2 100644
--- a/vector_vadd_vsub_tests/CMakeLists.txt
+++ b/vector_vadd_vsub_tests/CMakeLists.txt
@@ -1,3 +1,6 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
 
 set (OPERAND_TYPES VV VX VI)
 
diff --git a/vector_vset_tests/CMakeLists.txt b/vector_vset_tests/CMakeLists.txt
index 3388d71..6557b2f 100644
--- a/vector_vset_tests/CMakeLists.txt
+++ b/vector_vset_tests/CMakeLists.txt
@@ -1,3 +1,6 @@
+if(${BUILD_SIMPLIFIED_CORE})
+  return()
+endif()
 
 vec_cc_binary(
   NAME