diff --git a/cmake/riscv_baremetal.cmake b/cmake/riscv_baremetal.cmake
index fe9375f..24de4c3 100644
--- a/cmake/riscv_baremetal.cmake
+++ b/cmake/riscv_baremetal.cmake
@@ -59,6 +59,7 @@
      # Use Nano header and libraries.
      include_directories(BEFORE SYSTEM "${RISCV_TOOLCHAIN_ROOT}/../riscv32-unknown-elf/include/newlib-nano/")
      link_directories(BEFORE "${RISCV_TOOLCHAIN_ROOT}/../riscv32-unknown-elf/lib/newlib-nano")
+     set(VEC_DEFAULT_LINKOPTS "${VEC_DEFAULT_LINKOPTS}" "-Wl,--no-warn-rwx-segments")
 else()
      set(CMAKE_SYSTEM_PROCESSOR rv32imv)
 
diff --git a/cmake/vec_cc_binary.cmake b/cmake/vec_cc_binary.cmake
index 1bb000a..6092d61 100644
--- a/cmake/vec_cc_binary.cmake
+++ b/cmake/vec_cc_binary.cmake
@@ -27,7 +27,7 @@
 
 set(_ELF_NAME "${_RULE_NAME}.elf")
 add_executable(${_ELF_NAME})
-target_include_directories(${_ELF_NAME} PUBLIC include)
+target_include_directories(${_ELF_NAME} PUBLIC ${CMAKE_SOURCE_DIR})
 set_target_properties(${_ELF_NAME} PROPERTIES LINK_DEPENDS "${LINKER_SCRIPT}")
 
 target_sources(${_ELF_NAME}
diff --git a/faults/layout.h b/faults/layout.h
index b3da0be..84ca0b4 100644
--- a/faults/layout.h
+++ b/faults/layout.h
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#ifndef LAYOUT_H_
-#define LAYOUT_H_
+#ifndef FAULTS_LAYOUT_H_
+#define FAULTS_LAYOUT_H_
 
 #define MMU_NUM_WINDOWS 6
 #define MMU_WINDOW_SIZE 0x1000000
 #define MMU_RANGE_START 0x34000000
 
-#endif
+#endif  // FAULTS_LAYOUT_H_
diff --git a/hello_vec/main.cpp b/hello_vec/main.cpp
index 42984c4..37f70e8 100644
--- a/hello_vec/main.cpp
+++ b/hello_vec/main.cpp
@@ -18,7 +18,7 @@
 #include <springbok.h>
 
 class ExampleStatic {
-public:
+ public:
   ExampleStatic() {
     springbok_simprint_error("Hello pre-main C++ world.", 0);
     value = 1279;
diff --git a/pw_unit_test_demo/pw_unit_test_demo.cpp b/pw_unit_test_demo/pw_unit_test_demo.cpp
index af02a37..fa5211e 100644
--- a/pw_unit_test_demo/pw_unit_test_demo.cpp
+++ b/pw_unit_test_demo/pw_unit_test_demo.cpp
@@ -25,8 +25,8 @@
 
 TEST(SpringbokTest, ExceptBool) {
   size_t vl = __riscv_vsetvl_e8m1(32);
-  EXPECT_TRUE(vl == 32);
+  EXPECT_EQ(vl, 32);
 }
 
-} // namespace
-} // namespace pw_unit_test_demo
+}  // namespace
+}  // namespace pw_unit_test_demo
diff --git a/scripts/generate_vector_tests.py b/scripts/generate_vector_tests.py
index 55f470e..1d59bc8 100644
--- a/scripts/generate_vector_tests.py
+++ b/scripts/generate_vector_tests.py
@@ -13,14 +13,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""
+""" Generate tests for softrvv
+
 Generate tests for softrvv
 TODO(henryherman) Look into combining the different template workflows
 """
 import os
 import logging
 import argparse
-from collections import namedtuple
 from pathlib import Path
 
 from mako.lookup import TemplateLookup
@@ -51,13 +51,13 @@
     try:
         template = mylookup.get_template(args.template_name)
     except mako.exceptions.TopLevelLookupException:
-        parser.error("Template does not exist %s" % args.template_name)
+        parser.error(f"Template does not exist {args.template_name}")
     logging.debug("Template %s found", args.template_name)
     Path(args.out_path).mkdir(parents=True, exist_ok=True)
     outfile_name = args.template_name.replace(".tpl", "")
     full_outfile_path = os.path.join(args.out_path, outfile_name)
     logging.debug("Generating file %s", full_outfile_path)
-    with open(full_outfile_path, "w+") as outfile:
+    with open(full_outfile_path, "w+", encoding="UTF-8") as outfile:
         outfile.write(template.render(op=args.op))
 
 if __name__ == "__main__":
diff --git a/scripts/vec_test_helpers/__init__.py b/scripts/vec_test_helpers/__init__.py
index 06e3658..adbc695 100644
--- a/scripts/vec_test_helpers/__init__.py
+++ b/scripts/vec_test_helpers/__init__.py
@@ -11,7 +11,6 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 """ vec_test_helpers
 
 This module is for reusable helper functions used by the templates.
@@ -21,8 +20,10 @@
 import re
 import numpy as np
 
+
 class VecTemplateHelper:
     """Given op and sew provide template with necessary parameters."""
+
     class OperandType(enum.Enum):
         """RISC-V V operand type options."""
         VECTOR = enum.auto()
@@ -37,43 +38,36 @@
         NARROWING = enum.auto()
 
     mnemonic_suffix = {
-        OperandType.VECTOR : {
+        OperandType.VECTOR: {
             OperandWidth.STANDARD: "vv",
             OperandWidth.WIDENING: "vv",
             OperandWidth.NARROWING: "wv",
         },
-        OperandType.SCALAR : {
+        OperandType.SCALAR: {
             OperandWidth.STANDARD: "vx",
             OperandWidth.WIDENING: "vx",
             OperandWidth.NARROWING: "wx",
         },
-        OperandType.IMMEDIATE : {
+        OperandType.IMMEDIATE: {
             OperandWidth.STANDARD: "vi",
             OperandWidth.WIDENING: "vi",
             OperandWidth.NARROWING: "wi",
         },
-        OperandType.FLOATSCALAR : {
+        OperandType.FLOATSCALAR: {
             OperandWidth.STANDARD: "vf",
             OperandWidth.WIDENING: "vf",
             OperandWidth.NARROWING: "wf",
         },
     }
-
     """Helper class for providing params for use in templates"""
+
     def __init__(self, op_code, sew=None):
         self._op_code = op_code
         self._sew = sew
         self.force_unsigned = False
-        self.signed_np_types = {
-            8:np.int8,
-            16:np.int16,
-            32:np.int32}
-        self.unsigned_np_types = {
-            8:np.uint8,
-            16:np.uint16,
-            32:np.uint32}
-        self.float_np_types = {
-            32:np.float32}
+        self.signed_np_types = {8: np.int8, 16: np.int16, 32: np.int32}
+        self.unsigned_np_types = {8: np.uint8, 16: np.uint16, 32: np.uint32}
+        self.float_np_types = {32: np.float32}
 
     @property
     def op_code(self):
@@ -104,7 +98,7 @@
     def sew(self, value):
         """Set the selected element width."""
         if self.is_floating():
-            if not (value == 32):
+            if not value == 32:
                 raise ValueError("Invalid SEW")
         if not value in (8, 16, 32):
             raise ValueError("Invalid SEW")
@@ -113,21 +107,27 @@
     def is_widening(self):
         """Check if a particular op_code is a widening type."""
         if self.is_floating():
-            raise ValueError("Widening is not supported with this template for floating point values")
+            raise ValueError(
+                "Widening is not supported with this template for floating "
+                "point values")
         return self.op_code[1] == 'w'
 
     def is_narrowing(self):
         """Check if a particular op_code is a narrowing type."""
         if self.is_floating():
-            raise ValueError("Narrowing is not supported with this template for floating point values")
+            raise ValueError(
+                "Narrowing is not supported with this template for floating "
+                "point values")
         return self.op_code[1] == 'n'
 
     def is_destination_mask_register(self):
         """Check if a particular op_code has a mask output."""
         if self.is_floating():
-            comparison_ops = ('vmfeq', 'vmfle', 'vmflt', 'vmfne', 'vmfgt', 'vmfge')
+            comparison_ops = ('vmfeq', 'vmfle', 'vmflt', 'vmfne', 'vmfgt',
+                              'vmfge')
         else:
-            comparison_ops = ('vmseq', 'vmsne', 'vmsltu', 'vmsleu', 'vmsle', 'vmsgtu', 'vmsgt')
+            comparison_ops = ('vmseq', 'vmsne', 'vmsltu', 'vmsleu', 'vmsle',
+                              'vmsgtu', 'vmsgt')
         return self.op_code in comparison_ops
 
     def is_unsigned(self):
@@ -164,20 +164,20 @@
         imm_type won't be used for floating point values.
         """
         VarTypes = collections.namedtuple(
-            "VarTypes",
-            ('dest_type', 'src2_type', 'src1_type', 'imm_type'))
+            "VarTypes", ('dest_type', 'src2_type', 'src1_type', 'imm_type'))
         if self.is_floating():
-            """dest_type is defined as int32_t instead of float
-            to use "set_bit_in_dest_mask" (in softrvv/include/softrvv_internal.h)
-            , which has bitwise operations in it.
-            """
+            # dest_type is defined as int32_t instead of float
+            # to use "set_bit_in_dest_mask"
+            # (in softrvv/include/softrvv_internal.h), which has bitwise
+            #  operations in it.
             if self.is_destination_mask_register():
                 var_types = VarTypes("int32_t", "float", "float", "float")
             else:
                 var_types = VarTypes("float", "float", "float", "float")
         else:
             type_fmt = "%sint%d_t"
-            sign_type  = "u" if self.is_unsigned() or self.force_unsigned else ""
+            sign_type = "u" if self.is_unsigned(
+            ) or self.force_unsigned else ""
             dest_sew, src2_sew, src1_sew, imm_sew = self.get_sew_sizes()
             dest_type = type_fmt % (sign_type, dest_sew)
             src1_type = type_fmt % (sign_type, src1_sew)
@@ -188,17 +188,21 @@
 
     def get_mnemonic(self, operand_type):
         """Generate the correct mnemonic given a opcode and operand type."""
-        operand_width = self.OperandWidth.STANDARD
-        if self.is_floating():
-            if operand_type == self.OperandType.SCALAR:
-                operand_type = self.OperandType.FLOATSCALAR
-        else:
+        if self.is_floating() and operand_type == self.OperandType.SCALAR:
+            operand_width = self.OperandWidth.STANDARD
+            operand_type = self.OperandType.FLOATSCALAR
+        elif not self.is_floating():
             if self.is_narrowing():
                 operand_width = self.OperandWidth.NARROWING
             elif self.is_widening():
                 operand_width = self.OperandWidth.WIDENING
+            else:
+                operand_width = self.OperandWidth.STANDARD
+        else:  # default operand_width
+            operand_width = self.OperandWidth.STANDARD
+
         op_suffix = self.mnemonic_suffix[operand_type][operand_width]
-        return "%s.%s" % (self.op_code, op_suffix)
+        return f"{self.op_code}.{op_suffix}"
 
     def get_lmuls(self):
         """Given an op_code return an iterable of valid lmuls."""
@@ -218,7 +222,7 @@
         var_types = self.get_var_types()
         if not self.is_floating():
             if self.is_narrowing() or self.is_widening():
-                return "%s, %s" % (var_types.dest_type, var_types.src2_type)
+                return f"{var_types.dest_type}, {var_types.src2_type}"
         return var_types.src1_type
 
     def get_ref_opcode(self):
@@ -271,7 +275,7 @@
             return types[self.sew * 2]
         return types[self.sew]
 
-    def get_test_inputs(self, n=5, allow_zero=True): # pylint: disable=invalid-name
+    def get_test_inputs(self, n=5, allow_zero=True):  # pylint: disable=invalid-name
         """Return test inputs."""
         src1_np_type = self.get_np_src1_type()
         src2_np_type = self.get_np_src2_type()
@@ -292,16 +296,17 @@
             return src2_data, src1_data, rs1
 
         # Return test inputs for integers.
+        # pylint: disable=redefined-variable-type
         type_info = np.iinfo(src1_np_type)
-        src1_data =  np.random.randint(
-            type_info.min, type_info.max, n).astype(src1_np_type)
+        src1_data = np.random.randint(type_info.min, type_info.max,
+                                      n).astype(src1_np_type)
         rs1 = self.get_np_src1_type()(np.random.randint(
             type_info.min, type_info.max))
         type_info = np.iinfo(src2_np_type)
-        src2_data = np.random.randint(
-            type_info.min, type_info.max, n).astype(src2_np_type)
+        src2_data = np.random.randint(type_info.min, type_info.max,
+                                      n).astype(src2_np_type)
         if not allow_zero:
-            src2_data[src2_data==0] = 1
+            src2_data[src2_data == 0] = 1
             rs1 = 1 if rs1 == 0 else rs1
         return src2_data, src1_data, rs1
 
@@ -310,18 +315,22 @@
         dest_type = self.get_np_dest_type()
         return np.packbits(dest_type(values), bitorder='little')
 
+
 def cast_to_unsigned(arr):
     """Cast a signed array to an unsigned array.
     This should not be called with floating point values.
     """
-    udtypes = {np.int8:np.uint8,
-               np.int16:np.uint16,
-               np.int32:np.uint32,
-               np.int64:np.uint64}
-    if not arr.dtype.type in udtypes.keys():
+    udtypes = {
+        np.int8: np.uint8,
+        np.int16: np.uint16,
+        np.int32: np.uint32,
+        np.int64: np.uint64
+    }
+    if not arr.dtype.type in udtypes:
         raise TypeError
     return arr.astype(udtypes[arr.dtype.type])
 
+
 def to_carr_str(arr):
     """Simple function for turn array into comma separated list."""
-    return ", ".join(("%s" % x for x in arr))
+    return ", ".join((f"{x}" for x in arr))
diff --git a/softrvv/CMakeLists.txt b/softrvv/CMakeLists.txt
index 26b62f3..bf3803e 100644
--- a/softrvv/CMakeLists.txt
+++ b/softrvv/CMakeLists.txt
@@ -13,6 +13,6 @@
 # limitations under the License.
 
 add_library(softrvv INTERFACE)
-target_include_directories(softrvv INTERFACE include)
+target_include_directories(softrvv INTERFACE ${CMAKE_SOURCE_DIR})
 
 add_subdirectory(tests)
diff --git a/softrvv/include/encoding.h b/softrvv/include/encoding.h
index 5e99cbd..bb682b4 100644
--- a/softrvv/include/encoding.h
+++ b/softrvv/include/encoding.h
@@ -14,8 +14,10 @@
  * limitations under the License.
  */
 
-#ifndef ENCODING_H
-#define ENCODING_H
+#ifndef SOFTRVV_INCLUDE_ENCODING_H_
+#define SOFTRVV_INCLUDE_ENCODING_H_
+
+#include <stdint.h>
 
 #define MSTATUS_UIE 0x00000001
 #define MSTATUS_SIE 0x00000002
@@ -65,7 +67,7 @@
 
 #define SSTATUS_VS_MASK                                                  \
   (SSTATUS_SIE | SSTATUS_SPIE | SSTATUS_SPP | SSTATUS_FS | SSTATUS_SUM | \
-   SSTATUS_MXR | SSTATUS_UXL)
+   SSTATUS_MXR | SSTATUS_UXL)  // NOLINT(whitespace/indent)
 
 #define HSTATUS_VSXL 0x300000000
 #define HSTATUS_VTSR 0x00400000
@@ -261,7 +263,7 @@
 
 #define read_csr(reg)                             \
   ({                                              \
-    unsigned long __tmp;                          \
+    uint32_t __tmp;                               \
     asm volatile("csrr %0, " #reg : "=r"(__tmp)); \
     __tmp;                                        \
   })
@@ -270,21 +272,21 @@
 
 #define swap_csr(reg, val)                                            \
   ({                                                                  \
-    unsigned long __tmp;                                              \
+    uint32_t __tmp;                                                   \
     asm volatile("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "rK"(val)); \
     __tmp;                                                            \
   })
 
 #define set_csr(reg, bit)                                             \
   ({                                                                  \
-    unsigned long __tmp;                                              \
+    uint32_t __tmp;                                                   \
     asm volatile("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \
     __tmp;                                                            \
   })
 
 #define clear_csr(reg, bit)                                           \
   ({                                                                  \
-    unsigned long __tmp;                                              \
+    uint32_t __tmp;                                                   \
     asm volatile("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \
     __tmp;                                                            \
   })
@@ -293,10 +295,10 @@
 #define rdcycle() read_csr(cycle)
 #define rdinstret() read_csr(instret)
 
-#endif // __GNUC__
+#endif  // __GNUC__
 
-#endif // __ASSEMBLER__
+#endif  // __ASSEMBLER__
 
-#endif // __riscv
+#endif  // __riscv
 
-#endif // ENCODING_H
+#endif  // SOFTRVV_INCLUDE_ENCODING_H_
diff --git a/softrvv/include/softrvv.h b/softrvv/include/softrvv.h
index dcd4dee..b5c5bcf 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -14,54 +14,54 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_H
-#define SOFTRVV_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_H_
 
 #include <stddef.h>
 #include <stdint.h>
 
-#include "encoding.h"
-#include "softrvv_internal.h"
-#include "softrvv_vadd.h"
-#include "softrvv_vand.h"
-#include "softrvv_vdiv.h"
-#include "softrvv_vfadd.h"
-#include "softrvv_vfdiv.h"
-#include "softrvv_vfmax.h"
-#include "softrvv_vfmin.h"
-#include "softrvv_vfmul.h"
-#include "softrvv_vfsub.h"
-#include "softrvv_vmadd_vnmsub.h"
-#include "softrvv_vmacc.h"
-#include "softrvv_vmax.h"
-#include "softrvv_vmfeq.h"
-#include "softrvv_vmfge.h"
-#include "softrvv_vmfgt.h"
-#include "softrvv_vmfle.h"
-#include "softrvv_vmflt.h"
-#include "softrvv_vmfne.h"
-#include "softrvv_vmin.h"
-#include "softrvv_vmseq.h"
-#include "softrvv_vmsge.h"
-#include "softrvv_vmsgt.h"
-#include "softrvv_vmsle.h"
-#include "softrvv_vmslt.h"
-#include "softrvv_vmsne.h"
-#include "softrvv_vmul_vmulh.h"
-#include "softrvv_vmv_s_x.h"
-#include "softrvv_vnsra.h"
-#include "softrvv_vnsrl.h"
-#include "softrvv_vor.h"
-#include "softrvv_vredsum.h"
-#include "softrvv_vrem.h"
-#include "softrvv_vsext_vzext.h"
-#include "softrvv_vsll.h"
-#include "softrvv_vsra.h"
-#include "softrvv_vsrl.h"
-#include "softrvv_vsub.h"
-#include "softrvv_vwadd.h"
-#include "softrvv_vwsub.h"
-#include "softrvv_vxor.h"
+#include "softrvv/include/encoding.h"
+#include "softrvv/include/softrvv_internal.h"
+#include "softrvv/include/softrvv_vadd.h"
+#include "softrvv/include/softrvv_vand.h"
+#include "softrvv/include/softrvv_vdiv.h"
+#include "softrvv/include/softrvv_vfadd.h"
+#include "softrvv/include/softrvv_vfdiv.h"
+#include "softrvv/include/softrvv_vfmax.h"
+#include "softrvv/include/softrvv_vfmin.h"
+#include "softrvv/include/softrvv_vfmul.h"
+#include "softrvv/include/softrvv_vfsub.h"
+#include "softrvv/include/softrvv_vmacc.h"
+#include "softrvv/include/softrvv_vmadd_vnmsub.h"
+#include "softrvv/include/softrvv_vmax.h"
+#include "softrvv/include/softrvv_vmfeq.h"
+#include "softrvv/include/softrvv_vmfge.h"
+#include "softrvv/include/softrvv_vmfgt.h"
+#include "softrvv/include/softrvv_vmfle.h"
+#include "softrvv/include/softrvv_vmflt.h"
+#include "softrvv/include/softrvv_vmfne.h"
+#include "softrvv/include/softrvv_vmin.h"
+#include "softrvv/include/softrvv_vmseq.h"
+#include "softrvv/include/softrvv_vmsge.h"
+#include "softrvv/include/softrvv_vmsgt.h"
+#include "softrvv/include/softrvv_vmsle.h"
+#include "softrvv/include/softrvv_vmslt.h"
+#include "softrvv/include/softrvv_vmsne.h"
+#include "softrvv/include/softrvv_vmul_vmulh.h"
+#include "softrvv/include/softrvv_vmv_s_x.h"
+#include "softrvv/include/softrvv_vnsra.h"
+#include "softrvv/include/softrvv_vnsrl.h"
+#include "softrvv/include/softrvv_vor.h"
+#include "softrvv/include/softrvv_vredsum.h"
+#include "softrvv/include/softrvv_vrem.h"
+#include "softrvv/include/softrvv_vsext_vzext.h"
+#include "softrvv/include/softrvv_vsll.h"
+#include "softrvv/include/softrvv_vsra.h"
+#include "softrvv/include/softrvv_vsrl.h"
+#include "softrvv/include/softrvv_vsub.h"
+#include "softrvv/include/softrvv_vwadd.h"
+#include "softrvv/include/softrvv_vwsub.h"
+#include "softrvv/include/softrvv_vxor.h"
 
 namespace softrvv {
 
@@ -82,4 +82,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_H_
diff --git a/softrvv/include/softrvv_internal.h b/softrvv/include/softrvv_internal.h
index 3df396a..bf52d72 100644
--- a/softrvv/include/softrvv_internal.h
+++ b/softrvv/include/softrvv_internal.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_INTERNAL_H
-#define SOFTRVV_INTERNAL_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_INTERNAL_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_INTERNAL_H_
 
 #include <bit>
 #include <tuple>
@@ -29,7 +29,8 @@
   const unsigned int shift = bw_required - 1;
   // shift is the number of bits required to store the value minus 1
   // Example for T is int32_t:
-  // 32 requires 6 bits to store, the shift required to divide by 32 is 5 (6 - 1)
+  // 32 requires 6 bits to store, the shift required to divide by 32 is 5
+  // (6 - 1)
   // Shift of the index is equivalent to a divide
   unsigned int element_idx = index >> shift;
   // Masked lowers bits are equivalent to remainder
@@ -53,4 +54,4 @@
 }
 
 }  // namespace softrvv
-#endif  // SOFTRVV_INTERNAL_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_INTERNAL_H_
diff --git a/softrvv/include/softrvv_vadd.h b/softrvv/include/softrvv_vadd.h
index c52169d..b7148f3 100644
--- a/softrvv/include/softrvv_vadd.h
+++ b/softrvv/include/softrvv_vadd.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VADD_H
-#define SOFTRVV_VADD_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VADD_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VADD_H_
 
 #include <stddef.h>
 
@@ -44,4 +44,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VADD_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VADD_H_
diff --git a/softrvv/include/softrvv_vand.h b/softrvv/include/softrvv_vand.h
index 30db058..eb2dda6 100644
--- a/softrvv/include/softrvv_vand.h
+++ b/softrvv/include/softrvv_vand.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VAND_H
-#define SOFTRVV_VAND_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VAND_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VAND_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -38,4 +38,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VAND_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VAND_H_
diff --git a/softrvv/include/softrvv_vdiv.h b/softrvv/include/softrvv_vdiv.h
index 326c998..46d52c3 100644
--- a/softrvv/include/softrvv_vdiv.h
+++ b/softrvv/include/softrvv_vdiv.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VDIV_H
-#define SOFTRVV_VDIV_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VDIV_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VDIV_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VDIV_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VDIV_H_
diff --git a/softrvv/include/softrvv_vfadd.h b/softrvv/include/softrvv_vfadd.h
index 4f91ff7..77bd66b 100644
--- a/softrvv/include/softrvv_vfadd.h
+++ b/softrvv/include/softrvv_vfadd.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VFADD_H
-#define SOFTRVV_VFADD_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VFADD_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VFADD_H_
 
 #include <stddef.h>
 
@@ -35,4 +35,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VFADD_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VFADD_H_
diff --git a/softrvv/include/softrvv_vfdiv.h b/softrvv/include/softrvv_vfdiv.h
index adf8b78..f92fd24 100644
--- a/softrvv/include/softrvv_vfdiv.h
+++ b/softrvv/include/softrvv_vfdiv.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VFDIV_H
-#define SOFTRVV_VFDIV_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VFDIV_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VFDIV_H_
 
 #include <stddef.h>
 
@@ -41,4 +41,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VFDIV_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VFDIV_H_
diff --git a/softrvv/include/softrvv_vfmax.h b/softrvv/include/softrvv_vfmax.h
index 1480b03..0d4b2ae 100644
--- a/softrvv/include/softrvv_vfmax.h
+++ b/softrvv/include/softrvv_vfmax.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VFMAX_H
-#define SOFTRVV_VFMAX_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VFMAX_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VFMAX_H_
 
 #include <stddef.h>
 
@@ -35,4 +35,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VFMAX_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VFMAX_H_
diff --git a/softrvv/include/softrvv_vfmin.h b/softrvv/include/softrvv_vfmin.h
index 52fb601..e0f6049 100644
--- a/softrvv/include/softrvv_vfmin.h
+++ b/softrvv/include/softrvv_vfmin.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VFMIN_H
-#define SOFTRVV_VFMIN_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VFMIN_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VFMIN_H_
 
 #include <stddef.h>
 
@@ -35,4 +35,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VFMIN_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VFMIN_H_
diff --git a/softrvv/include/softrvv_vfmul.h b/softrvv/include/softrvv_vfmul.h
index fae1bf7..706f0fb 100644
--- a/softrvv/include/softrvv_vfmul.h
+++ b/softrvv/include/softrvv_vfmul.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VFMUL_H
-#define SOFTRVV_VFMUL_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VFMUL_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VFMUL_H_
 
 #include <stddef.h>
 
@@ -35,4 +35,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VFMUL_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VFMUL_H_
diff --git a/softrvv/include/softrvv_vfsub.h b/softrvv/include/softrvv_vfsub.h
index 705bbac..038e21e 100644
--- a/softrvv/include/softrvv_vfsub.h
+++ b/softrvv/include/softrvv_vfsub.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VFSUB_H
-#define SOFTRVV_VFSUB_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VFSUB_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VFSUB_H_
 
 #include <stddef.h>
 
@@ -41,4 +41,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VFSUB_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VFSUB_H_
diff --git a/softrvv/include/softrvv_vmacc.h b/softrvv/include/softrvv_vmacc.h
index 088a270..c5fd1cb 100644
--- a/softrvv/include/softrvv_vmacc.h
+++ b/softrvv/include/softrvv_vmacc.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMACC_H
-#define SOFTRVV_VMACC_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMACC_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMACC_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -53,4 +53,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMACC_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMACC_H_
diff --git a/softrvv/include/softrvv_vmadd_vnmsub.h b/softrvv/include/softrvv_vmadd_vnmsub.h
index e415543..ea1e7c7 100644
--- a/softrvv/include/softrvv_vmadd_vnmsub.h
+++ b/softrvv/include/softrvv_vmadd_vnmsub.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMADD_VNMSUB_H
-#define SOFTRVV_VMADD_VNMSUB_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMADD_VNMSUB_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMADD_VNMSUB_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -52,4 +52,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMADD_VNMSUB_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMADD_VNMSUB_H_
diff --git a/softrvv/include/softrvv_vmax.h b/softrvv/include/softrvv_vmax.h
index 0b5b26e..e6137a6 100644
--- a/softrvv/include/softrvv_vmax.h
+++ b/softrvv/include/softrvv_vmax.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMAX_H
-#define SOFTRVV_VMAX_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMAX_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMAX_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMAX_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMAX_H_
diff --git a/softrvv/include/softrvv_vmfeq.h b/softrvv/include/softrvv_vmfeq.h
index dc11d4f..7cd170e 100644
--- a/softrvv/include/softrvv_vmfeq.h
+++ b/softrvv/include/softrvv_vmfeq.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMFEQ_H
-#define SOFTRVV_VMFEQ_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMFEQ_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMFEQ_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMFEQ_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMFEQ_H_
diff --git a/softrvv/include/softrvv_vmfge.h b/softrvv/include/softrvv_vmfge.h
index b0d1411..4a22c48 100644
--- a/softrvv/include/softrvv_vmfge.h
+++ b/softrvv/include/softrvv_vmfge.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMFGE_H
-#define SOFTRVV_VMFGE_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMFGE_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMFGE_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMFGE_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMFGE_H_
diff --git a/softrvv/include/softrvv_vmfgt.h b/softrvv/include/softrvv_vmfgt.h
index 103e250..5b882af 100644
--- a/softrvv/include/softrvv_vmfgt.h
+++ b/softrvv/include/softrvv_vmfgt.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMFGT_H
-#define SOFTRVV_VMFGT_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMFGT_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMFGT_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMFGT_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMFGT_H_
diff --git a/softrvv/include/softrvv_vmfle.h b/softrvv/include/softrvv_vmfle.h
index e9cd794..7c0d8f6 100644
--- a/softrvv/include/softrvv_vmfle.h
+++ b/softrvv/include/softrvv_vmfle.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMFLE_H
-#define SOFTRVV_VMFLE_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMFLE_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMFLE_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMFLE_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMFLE_H_
diff --git a/softrvv/include/softrvv_vmflt.h b/softrvv/include/softrvv_vmflt.h
index f5a234c..92cd844 100644
--- a/softrvv/include/softrvv_vmflt.h
+++ b/softrvv/include/softrvv_vmflt.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMFLT_H
-#define SOFTRVV_VMFLT_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMFLT_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMFLT_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMFLT_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMFLT_H_
diff --git a/softrvv/include/softrvv_vmfne.h b/softrvv/include/softrvv_vmfne.h
index 07b5fdd..9cce094 100644
--- a/softrvv/include/softrvv_vmfne.h
+++ b/softrvv/include/softrvv_vmfne.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMFNE_H
-#define SOFTRVV_VMFNE_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMFNE_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMFNE_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMFNE_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMFNE_H_
diff --git a/softrvv/include/softrvv_vmin.h b/softrvv/include/softrvv_vmin.h
index e7ce743..46d9758 100644
--- a/softrvv/include/softrvv_vmin.h
+++ b/softrvv/include/softrvv_vmin.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMIN_H
-#define SOFTRVV_VMIN_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMIN_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMIN_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMIN_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMIN_H_
diff --git a/softrvv/include/softrvv_vmseq.h b/softrvv/include/softrvv_vmseq.h
index 0f891b3..398bf0c 100644
--- a/softrvv/include/softrvv_vmseq.h
+++ b/softrvv/include/softrvv_vmseq.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMSEQ_H
-#define SOFTRVV_VMSEQ_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMSEQ_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMSEQ_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMSEQ_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMSEQ_H_
diff --git a/softrvv/include/softrvv_vmsge.h b/softrvv/include/softrvv_vmsge.h
index a6fd29d..610125d 100644
--- a/softrvv/include/softrvv_vmsge.h
+++ b/softrvv/include/softrvv_vmsge.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMSGE_H
-#define SOFTRVV_VMSGE_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMSGE_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMSGE_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMSGE_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMSGE_H_
diff --git a/softrvv/include/softrvv_vmsgt.h b/softrvv/include/softrvv_vmsgt.h
index c05cea6..7e0af78 100644
--- a/softrvv/include/softrvv_vmsgt.h
+++ b/softrvv/include/softrvv_vmsgt.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMSGT_H
-#define SOFTRVV_VMSGT_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMSGT_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMSGT_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMSGT_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMSGT_H_
diff --git a/softrvv/include/softrvv_vmsle.h b/softrvv/include/softrvv_vmsle.h
index fc66fc5..8e6bb50 100644
--- a/softrvv/include/softrvv_vmsle.h
+++ b/softrvv/include/softrvv_vmsle.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMSLE_H
-#define SOFTRVV_VMSLE_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMSLE_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMSLE_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMSLE_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMSLE_H_
diff --git a/softrvv/include/softrvv_vmslt.h b/softrvv/include/softrvv_vmslt.h
index 13e0946..11c9e06 100644
--- a/softrvv/include/softrvv_vmslt.h
+++ b/softrvv/include/softrvv_vmslt.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMSLT_H
-#define SOFTRVV_VMSLT_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMSLT_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMSLT_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMSLT_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMSLT_H_
diff --git a/softrvv/include/softrvv_vmsne.h b/softrvv/include/softrvv_vmsne.h
index 0d03a8d..d97cb61 100644
--- a/softrvv/include/softrvv_vmsne.h
+++ b/softrvv/include/softrvv_vmsne.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMSNE_H
-#define SOFTRVV_VMSNE_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMSNE_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMSNE_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMSNE_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMSNE_H_
diff --git a/softrvv/include/softrvv_vmul_vmulh.h b/softrvv/include/softrvv_vmul_vmulh.h
index 3b80e5b..1e94432 100644
--- a/softrvv/include/softrvv_vmul_vmulh.h
+++ b/softrvv/include/softrvv_vmul_vmulh.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMUL_H
-#define SOFTRVV_VMUL_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMUL_VMULH_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMUL_VMULH_H_
 
 #include <stddef.h>
 
@@ -57,4 +57,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMUL_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMUL_VMULH_H_
diff --git a/softrvv/include/softrvv_vmv_s_x.h b/softrvv/include/softrvv_vmv_s_x.h
index ce012a7..0d322ea 100644
--- a/softrvv/include/softrvv_vmv_s_x.h
+++ b/softrvv/include/softrvv_vmv_s_x.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VMV_S_X_H
-#define SOFTRVV_VMV_S_X_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VMV_S_X_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VMV_S_X_H_
 
 #include <stddef.h>
 
@@ -28,4 +28,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VMV_S_X_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VMV_S_X_H_
diff --git a/softrvv/include/softrvv_vnsra.h b/softrvv/include/softrvv_vnsra.h
index 4022a36..4ee1644 100644
--- a/softrvv/include/softrvv_vnsra.h
+++ b/softrvv/include/softrvv_vnsra.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VNSRA_H
-#define SOFTRVV_VNSRA_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VNSRA_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VNSRA_H_
 
 #include <stddef.h>
 
@@ -44,4 +44,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VNSRA_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VNSRA_H_
diff --git a/softrvv/include/softrvv_vnsrl.h b/softrvv/include/softrvv_vnsrl.h
index 4da5f67..8f769fb 100644
--- a/softrvv/include/softrvv_vnsrl.h
+++ b/softrvv/include/softrvv_vnsrl.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VNSRL_H
-#define SOFTRVV_VNSRL_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VNSRL_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VNSRL_H_
 
 #include <stddef.h>
 
@@ -49,4 +49,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VNSRL_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VNSRL_H_
diff --git a/softrvv/include/softrvv_vor.h b/softrvv/include/softrvv_vor.h
index 335684d..fa93191 100644
--- a/softrvv/include/softrvv_vor.h
+++ b/softrvv/include/softrvv_vor.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VOR_H
-#define SOFTRVV_VOR_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VOR_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VOR_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VOR_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VOR_H_
diff --git a/softrvv/include/softrvv_vredsum.h b/softrvv/include/softrvv_vredsum.h
index c814404..0be1423 100644
--- a/softrvv/include/softrvv_vredsum.h
+++ b/softrvv/include/softrvv_vredsum.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VREDSUM_H
-#define SOFTRVV_VREDSUM_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VREDSUM_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VREDSUM_H_
 
 #include <stddef.h>
 
@@ -31,4 +31,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VREDSUM_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VREDSUM_H_
diff --git a/softrvv/include/softrvv_vrem.h b/softrvv/include/softrvv_vrem.h
index e3e7e67..3f1acc4 100644
--- a/softrvv/include/softrvv_vrem.h
+++ b/softrvv/include/softrvv_vrem.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VREM_H
-#define SOFTRVV_VREM_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VREM_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VREM_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VREM_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VREM_H_
diff --git a/softrvv/include/softrvv_vsext_vzext.h b/softrvv/include/softrvv_vsext_vzext.h
index d351468..4b9604a 100644
--- a/softrvv/include/softrvv_vsext_vzext.h
+++ b/softrvv/include/softrvv_vsext_vzext.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VSEXT_VZEXT_H
-#define SOFTRVV_VSEXT_VZEXT_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VSEXT_VZEXT_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VSEXT_VZEXT_H_
 
 #include <stddef.h>
 
@@ -41,4 +41,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VSEXT_VZEXT_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VSEXT_VZEXT_H_
diff --git a/softrvv/include/softrvv_vsll.h b/softrvv/include/softrvv_vsll.h
index e13005f..fa0ba6d 100644
--- a/softrvv/include/softrvv_vsll.h
+++ b/softrvv/include/softrvv_vsll.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VSLL_H
-#define SOFTRVV_VSLL_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VSLL_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VSLL_H_
 
 #include <stddef.h>
 
@@ -47,4 +47,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VSLL_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VSLL_H_
diff --git a/softrvv/include/softrvv_vsra.h b/softrvv/include/softrvv_vsra.h
index 23ec156..0f1d59f 100644
--- a/softrvv/include/softrvv_vsra.h
+++ b/softrvv/include/softrvv_vsra.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VSRA_H
-#define SOFTRVV_VSRA_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VSRA_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VSRA_H_
 
 #include <stddef.h>
 
@@ -42,4 +42,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VSRA_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VSRA_H_
diff --git a/softrvv/include/softrvv_vsrl.h b/softrvv/include/softrvv_vsrl.h
index 6da4d7c..e83e215 100644
--- a/softrvv/include/softrvv_vsrl.h
+++ b/softrvv/include/softrvv_vsrl.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VSRL_H
-#define SOFTRVV_VSRL_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VSRL_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VSRL_H_
 
 #include <stddef.h>
 
@@ -47,4 +47,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VSRL_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VSRL_H_
diff --git a/softrvv/include/softrvv_vsub.h b/softrvv/include/softrvv_vsub.h
index 3b89f94..7f873e3 100644
--- a/softrvv/include/softrvv_vsub.h
+++ b/softrvv/include/softrvv_vsub.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VSUB_H
-#define SOFTRVV_VSUB_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VSUB_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VSUB_H_
 
 #include <stddef.h>
 
@@ -44,4 +44,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VSUB_H
\ No newline at end of file
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VSUB_H_
diff --git a/softrvv/include/softrvv_vwadd.h b/softrvv/include/softrvv_vwadd.h
index 39d2ed6..a34a91b 100644
--- a/softrvv/include/softrvv_vwadd.h
+++ b/softrvv/include/softrvv_vwadd.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VWADD_H
-#define SOFTRVV_VWADD_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VWADD_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VWADD_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VADD_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VWADD_H_
diff --git a/softrvv/include/softrvv_vwsub.h b/softrvv/include/softrvv_vwsub.h
index 3df7763..3533b6b 100644
--- a/softrvv/include/softrvv_vwsub.h
+++ b/softrvv/include/softrvv_vwsub.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VWSUB_H
-#define SOFTRVV_VWSUB_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VWSUB_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VWSUB_H_
 
 #include <stddef.h>
 
@@ -39,4 +39,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VSUB_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VWSUB_H_
diff --git a/softrvv/include/softrvv_vxor.h b/softrvv/include/softrvv_vxor.h
index c6e5b2e..bf1c931 100644
--- a/softrvv/include/softrvv_vxor.h
+++ b/softrvv/include/softrvv_vxor.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SOFTRVV_VXOR_H
-#define SOFTRVV_VXOR_H
+#ifndef SOFTRVV_INCLUDE_SOFTRVV_VXOR_H_
+#define SOFTRVV_INCLUDE_SOFTRVV_VXOR_H_
 
 #include <stddef.h>
 
@@ -37,4 +37,4 @@
 
 }  // namespace softrvv
 
-#endif  // SOFTRVV_VXOR_H
+#endif  // SOFTRVV_INCLUDE_SOFTRVV_VXOR_H_
diff --git a/softrvv/tests/softrvv_vand_test.cpp b/softrvv/tests/softrvv_vand_test.cpp
index d7b77d8..88c91aa 100644
--- a/softrvv/tests/softrvv_vand_test.cpp
+++ b/softrvv/tests/softrvv_vand_test.cpp
@@ -17,7 +17,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vand_test {
 namespace {
diff --git a/softrvv/tests/softrvv_vmacc_test.cpp b/softrvv/tests/softrvv_vmacc_test.cpp
index 4f19c40..201f5de 100644
--- a/softrvv/tests/softrvv_vmacc_test.cpp
+++ b/softrvv/tests/softrvv_vmacc_test.cpp
@@ -17,28 +17,28 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vmacc_test {
 namespace {
 
 class SoftRvvVmaccTest : public ::testing::Test {
  protected:
-  void SetUp() override { }
+  void SetUp() override {}
 };
 
 class SoftRvvVnmsacTest : public ::testing::Test {
  protected:
-  void SetUp() override { }
+  void SetUp() override {}
 };
 
 // Integer multiply-add, overwrite addend
 // vmacc.vv vd, vs1, vs2, vm    # vd[i] = +(vs1[i] * vs2[i]) + vd[i]
-uint32_t vmacvv_vs1[] = {1, 1, 128,  64,  0};
-uint32_t vmacvv_vs2[] = {0, 1,   1,   2, 32};
+uint32_t vmacvv_vs1[] = {1, 1, 128, 64, 0};
+uint32_t vmacvv_vs2[] = {0, 1, 1, 2, 32};
 const uint32_t vmacvv_kAVL = sizeof(vmacvv_vs2) / sizeof(vmacvv_vs2[0]);
-uint32_t vmacvv_vd[] =  {0, 1,   2,   4,  8};
-int32_t vmacvv_ref[] =  {0, 2, 130, 132,  8};
+uint32_t vmacvv_vd[] = {0, 1, 2, 4, 8};
+int32_t vmacvv_ref[] = {0, 2, 130, 132, 8};
 TEST_F(SoftRvvVmaccTest, VV) {
   softrvv::vmacc_vv<uint32_t>(vmacvv_vd, vmacvv_vs1, vmacvv_vs2, vmacvv_kAVL);
   ASSERT_EQ(memcmp(vmacvv_vd, vmacvv_ref, sizeof(vmacvv_vd)), 0);
@@ -47,37 +47,40 @@
 // Integer multiply-add, overwrite addend
 // vmacc.vx vd, rs1, vs2, vm    # vd[i] = +(x[rs1] * src2[i]) + vd[i]
 uint32_t vmaccvx_rs1[] = {170};
-uint32_t vmaccvx_vs2[] = {0, 1,   1,   2, 32};
+uint32_t vmaccvx_vs2[] = {0, 1, 1, 2, 32};
 const uint32_t vmaccvx_kAVL = sizeof(vmaccvx_vs2) / sizeof(vmaccvx_vs2[0]);
-uint32_t vmaccvx_vd[] =  {0, 1,   2,   4,  8};
-int32_t vmaccvx_ref[] =  {0, 171, 172, 344,  5448};
+uint32_t vmaccvx_vd[] = {0, 1, 2, 4, 8};
+int32_t vmaccvx_ref[] = {0, 171, 172, 344, 5448};
 TEST_F(SoftRvvVmaccTest, VX) {
-    softrvv::vmacc_vx<uint32_t>(vmaccvx_vd, vmaccvx_rs1, vmaccvx_vs2, vmaccvx_kAVL);
-    ASSERT_EQ(memcmp(vmaccvx_vd, vmaccvx_ref, sizeof(vmaccvx_vd)), 0);
+  softrvv::vmacc_vx<uint32_t>(vmaccvx_vd, vmaccvx_rs1, vmaccvx_vs2,
+                              vmaccvx_kAVL);
+  ASSERT_EQ(memcmp(vmaccvx_vd, vmaccvx_ref, sizeof(vmaccvx_vd)), 0);
 }
 
 // Integer multiply-sub, overwrite minuend
 // vnmsac.vv vd, vs1, vs2, vm    # vd[i] = -(vs1[i] * vs2[i]) + vd[i]
-uint32_t vnmsacvv_vs1[] = {220,  24,  1234,   150,     1386};
-uint32_t vnmsacvv_vs2[] = {  1,   2,     2,    10,     1000};
+uint32_t vnmsacvv_vs1[] = {220, 24, 1234, 150, 1386};
+uint32_t vnmsacvv_vs2[] = {1, 2, 2, 10, 1000};
 const uint32_t vnmsacvv_kAVL = sizeof(vnmsacvv_vs2) / sizeof(vnmsacvv_vs2[0]);
-uint32_t vnmsacvv_vd[] =  {  0,  10,    10,  1000,        1};
-int32_t vnmsacvv_ref[] = {-220, -38, -2458,  -500, -1385999};
+uint32_t vnmsacvv_vd[] = {0, 10, 10, 1000, 1};
+int32_t vnmsacvv_ref[] = {-220, -38, -2458, -500, -1385999};
 TEST_F(SoftRvvVnmsacTest, VV) {
-  softrvv::vnmsac_vv<uint32_t>(vnmsacvv_vd, vnmsacvv_vs1, vnmsacvv_vs2, vnmsacvv_kAVL);
+  softrvv::vnmsac_vv<uint32_t>(vnmsacvv_vd, vnmsacvv_vs1, vnmsacvv_vs2,
+                               vnmsacvv_kAVL);
   ASSERT_EQ(memcmp(vnmsacvv_vd, vnmsacvv_ref, sizeof(vnmsacvv_ref)), 0);
 }
 
 // Integer multiply-sub, overwrite minuend
 // vnmsac.vx vd, rs1, vs2, vm    # vd[i] = -(x[rs1] * vs2[i]) + vd[i]
 uint32_t vnmsacvx_rs1[] = {170};
-uint32_t vnmsacvx_vs2[] = {  1, 2, 2, 10, 1000};
+uint32_t vnmsacvx_vs2[] = {1, 2, 2, 10, 1000};
 const uint32_t vnmsacvx_kAVL = sizeof(vnmsacvx_vs2) / sizeof(vnmsacvx_vs2[0]);
 uint32_t vnmsacvx_vd[] = {170, 350, 10, 0, 0};
 int32_t vnmsacvx_ref[] = {0, 10, -330, -1700, -170000};
 TEST_F(SoftRvvVnmsacTest, VX) {
-    softrvv::vnmsac_vx<uint32_t>(vnmsacvx_vd, vnmsacvx_rs1, vnmsacvx_vs2, vnmsacvx_kAVL);
-    ASSERT_EQ(memcmp(vnmsacvx_vd, vnmsacvx_ref, sizeof(vnmsacvx_ref)), 0);
+  softrvv::vnmsac_vx<uint32_t>(vnmsacvx_vd, vnmsacvx_rs1, vnmsacvx_vs2,
+                               vnmsacvx_kAVL);
+  ASSERT_EQ(memcmp(vnmsacvx_vd, vnmsacvx_ref, sizeof(vnmsacvx_ref)), 0);
 }
 
 }  // namespace
diff --git a/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp b/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp
index b823051..3c94872 100644
--- a/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp
+++ b/softrvv/tests/softrvv_vmadd_vnmsub_test.cpp
@@ -17,69 +17,72 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vmadd_vnmsub_test {
 namespace {
 
 class SoftRvvVmaddTest : public ::testing::Test {
  protected:
-  void SetUp() override { }
+  void SetUp() override {}
 };
 
 class SoftRvvVnmsubTest : public ::testing::Test {
  protected:
-  void SetUp() override { }
+  void SetUp() override {}
 };
 
-
 // Integer multiply-add, overwrite multiplicand
 // vmadd.vv vd, vs1, vs2, vm    # vd[i] = (vs1[i] * vd[i]) + vs2[i]
-uint32_t vmaddvv_vs1[] = {1, 1, 128,   64,   0};
-uint32_t vmaddvv_vs2[] = {0, 1,   1,   2,  32};
+uint32_t vmaddvv_vs1[] = {1, 1, 128, 64, 0};
+uint32_t vmaddvv_vs2[] = {0, 1, 1, 2, 32};
 const uint32_t vmaddvv_kAVL = sizeof(vmaddvv_vs2) / sizeof(vmaddvv_vs2[0]);
-uint32_t vmaddvv_vd[] =  {0, 1,  2,   4,   8};
-int32_t vmaddvv_ref[] =  {0, 2,  257, 258,  32};
+uint32_t vmaddvv_vd[] = {0, 1, 2, 4, 8};
+int32_t vmaddvv_ref[] = {0, 2, 257, 258, 32};
 TEST_F(SoftRvvVmaddTest, VV) {
-  softrvv::vmadd_vv<uint32_t>(vmaddvv_vd, vmaddvv_vs1, vmaddvv_vs2, vmaddvv_kAVL);
+  softrvv::vmadd_vv<uint32_t>(vmaddvv_vd, vmaddvv_vs1, vmaddvv_vs2,
+                              vmaddvv_kAVL);
   ASSERT_EQ(memcmp(vmaddvv_vd, vmaddvv_ref, sizeof(vmaddvv_vd)), 0);
 }
 
 // Integer multiply-add, overwrite multiplicand
 // vmadd.vx vd, rs1, vs2, vm    # vd[i] = (x[rs1] * vd[i]) + vs2[i]
 uint32_t vmaddvx_rs1[] = {170};
-uint32_t vmaddvx_vs2[] = {0, 1,   1,   2, 32};
+uint32_t vmaddvx_vs2[] = {0, 1, 1, 2, 32};
 const uint32_t vmaddvx_kAVL = sizeof(vmaddvx_vs2) / sizeof(vmaddvx_vs2[0]);
-uint32_t vmaddvx_vd[] =  {0, 1,   2,   4,  8};
-int32_t vmaddvx_ref[] =  {0, 171,   341,   682,  1392};
+uint32_t vmaddvx_vd[] = {0, 1, 2, 4, 8};
+int32_t vmaddvx_ref[] = {0, 171, 341, 682, 1392};
 TEST_F(SoftRvvVmaddTest, VX) {
-    softrvv::vmadd_vx<uint32_t>(vmaddvx_vd, vmaddvx_rs1, vmaddvx_vs2, vmaddvx_kAVL);
-    ASSERT_EQ(memcmp(vmaddvx_vd, vmaddvx_ref, sizeof(vmaddvx_vd)), 0);
+  softrvv::vmadd_vx<uint32_t>(vmaddvx_vd, vmaddvx_rs1, vmaddvx_vs2,
+                              vmaddvx_kAVL);
+  ASSERT_EQ(memcmp(vmaddvx_vd, vmaddvx_ref, sizeof(vmaddvx_vd)), 0);
 }
 
 // Integer multiply-sub, overwrite multiplicand
 // vnmsub.vv vd, vs1, vs2, vm    # vd[i] = -(vs1[i] * vd[i]) + vs2[i]
-uint32_t vnmsubvv_vs1[] = {220,  24,  1234,   150,     1386};
-uint32_t vnmsubvv_vs2[] = {  1,   2,     2,    10,     1000};
+uint32_t vnmsubvv_vs1[] = {220, 24, 1234, 150, 1386};
+uint32_t vnmsubvv_vs2[] = {1, 2, 2, 10, 1000};
 const uint32_t vnmsubvv_kAVL = sizeof(vnmsubvv_vs2) / sizeof(vnmsubvv_vs2[0]);
-uint32_t vnmsubvv_vd[] =  {  0,  10,    10,  1000,        1};
-int32_t vnmsubvv_ref[] = {1, -238, -12338,  -149990, -386};
+uint32_t vnmsubvv_vd[] = {0, 10, 10, 1000, 1};
+int32_t vnmsubvv_ref[] = {1, -238, -12338, -149990, -386};
 TEST_F(SoftRvvVnmsubTest, VV) {
-  softrvv::vnmsub_vv<uint32_t>(vnmsubvv_vd, vnmsubvv_vs1, vnmsubvv_vs2, vnmsubvv_kAVL);
+  softrvv::vnmsub_vv<uint32_t>(vnmsubvv_vd, vnmsubvv_vs1, vnmsubvv_vs2,
+                               vnmsubvv_kAVL);
   ASSERT_EQ(memcmp(vnmsubvv_vd, vnmsubvv_ref, sizeof(vnmsubvv_ref)), 0);
 }
 
 // Integer multiply-sub, overwrite minuend
 // vnmsub.vx vd, rs1, vs2, vm    # vd[i] = -(x[rs1] * vd[i]) + vs2[i]
 uint32_t vnmsubvx_rs1[] = {170};
-uint32_t vnmsubvx_vs2[] = {  1, 2, 2, 10, 1000};
+uint32_t vnmsubvx_vs2[] = {1, 2, 2, 10, 1000};
 const uint32_t vnmsubvx_kAVL = sizeof(vnmsubvx_vs2) / sizeof(vnmsubvx_vs2[0]);
 uint32_t vnmsubvx_vd[] = {170, 350, 10, 0, 0};
 int32_t vnmsubvx_ref[] = {-28899, -59498, -1698, 10, 1000};
 TEST_F(SoftRvvVnmsubTest, VX) {
-    softrvv::vnmsub_vx<uint32_t>(vnmsubvx_vd, vnmsubvx_rs1, vnmsubvx_vs2, vnmsubvx_kAVL);
-    ASSERT_EQ(memcmp(vnmsubvx_vd, vnmsubvx_ref, sizeof(vnmsubvx_ref)), 0);
+  softrvv::vnmsub_vx<uint32_t>(vnmsubvx_vd, vnmsubvx_rs1, vnmsubvx_vs2,
+                               vnmsubvx_kAVL);
+  ASSERT_EQ(memcmp(vnmsubvx_vd, vnmsubvx_ref, sizeof(vnmsubvx_ref)), 0);
 }
 
 }  // namespace
-}  // namespace softrvv_vmacc_vnmsub_test
+}  // namespace softrvv_vmadd_vnmsub_test
diff --git a/softrvv/tests/softrvv_vmax_test.cpp b/softrvv/tests/softrvv_vmax_test.cpp
index 1fbba46..3ed8087 100644
--- a/softrvv/tests/softrvv_vmax_test.cpp
+++ b/softrvv/tests/softrvv_vmax_test.cpp
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vmax_test {
 namespace {
diff --git a/softrvv/tests/softrvv_vmaxu_test.cpp b/softrvv/tests/softrvv_vmaxu_test.cpp
index ce3dd99..e009a06 100644
--- a/softrvv/tests/softrvv_vmaxu_test.cpp
+++ b/softrvv/tests/softrvv_vmaxu_test.cpp
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vmaxu_test {
 namespace {
diff --git a/softrvv/tests/softrvv_vmin_test.cpp b/softrvv/tests/softrvv_vmin_test.cpp
index 0b7e7ba..03882d6 100644
--- a/softrvv/tests/softrvv_vmin_test.cpp
+++ b/softrvv/tests/softrvv_vmin_test.cpp
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vmin_test {
 namespace {
@@ -38,7 +38,8 @@
 
 int32_t ref_vv[] = {-1, 2, 3, 2, 1};
 
-int32_t ref_vx[3][kAVL] = {{-1, 1, 1, 1, 1}, {-1, 2, 3, 3, 3}, {-1, 2, 3, 4, 5}};
+int32_t ref_vx[3][kAVL] = {
+    {-1, 1, 1, 1, 1}, {-1, 2, 3, 3, 3}, {-1, 2, 3, 4, 5}};
 
 class SoftRvvVminTest : public ::testing::Test {
  protected:
diff --git a/softrvv/tests/softrvv_vmv_s_x_test.cpp b/softrvv/tests/softrvv_vmv_s_x_test.cpp
index 08cb7c8..8a3a81c 100644
--- a/softrvv/tests/softrvv_vmv_s_x_test.cpp
+++ b/softrvv/tests/softrvv_vmv_s_x_test.cpp
@@ -17,9 +17,9 @@
 #include <stdio.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
-namespace softrvv_vand_test {
+namespace softrvv_vmv_s_x_test {
 namespace {
 
 int8_t dest_e8[] = {-5, 3, 0};
@@ -65,4 +65,4 @@
 }
 
 }  // namespace
-}  // namespace softrvv_vand_test
+}  // namespace softrvv_vmv_s_x_test
diff --git a/softrvv/tests/softrvv_vor_test.cpp b/softrvv/tests/softrvv_vor_test.cpp
index 9758992..76b0bd7 100644
--- a/softrvv/tests/softrvv_vor_test.cpp
+++ b/softrvv/tests/softrvv_vor_test.cpp
@@ -17,7 +17,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vor_test {
 namespace {
diff --git a/softrvv/tests/softrvv_vsext_test.cpp b/softrvv/tests/softrvv_vsext_test.cpp
index a380466..5187f0b 100644
--- a/softrvv/tests/softrvv_vsext_test.cpp
+++ b/softrvv/tests/softrvv_vsext_test.cpp
@@ -17,13 +17,13 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vsext_test {
 namespace {
 
 int16_t src1[] = {-1, -2, 3, -4, 5};
-const uint32_t AVL_CONST = sizeof(src1)/sizeof(src1[0]);
+const uint32_t AVL_CONST = sizeof(src1) / sizeof(src1[0]);
 int32_t dest[AVL_CONST];
 int32_t ref_dest[] = {-1, -2, 3, -4, 5};
 
diff --git a/softrvv/tests/softrvv_vwadd_test.cpp b/softrvv/tests/softrvv_vwadd_test.cpp
index 4a2c95f..ff13403 100644
--- a/softrvv/tests/softrvv_vwadd_test.cpp
+++ b/softrvv/tests/softrvv_vwadd_test.cpp
@@ -17,15 +17,15 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
-namespace softrvv_vadd_test {
+namespace softrvv_vwadd_test {
 namespace {
 
 int16_t src1[] = {1, 2, 3, -4, 5};
 int16_t src2[] = {1, 2, 3, 4, -6};
 int16_t rs1 = 3;
-const uint32_t AVL_CONST = sizeof(src1)/sizeof(src1[0]);
+const uint32_t AVL_CONST = sizeof(src1) / sizeof(src1[0]);
 int32_t dest[AVL_CONST];
 
 int32_t ref_vv[] = {2, 4, 6, 0, -1};
diff --git a/softrvv/tests/softrvv_vwaddu_test.cpp b/softrvv/tests/softrvv_vwaddu_test.cpp
index 632b7ca..9823242 100644
--- a/softrvv/tests/softrvv_vwaddu_test.cpp
+++ b/softrvv/tests/softrvv_vwaddu_test.cpp
@@ -17,15 +17,15 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
-namespace softrvv_vaddu_test {
+namespace softrvv_vwaddu_test {
 namespace {
 
 uint16_t src1[] = {1, 2, 3, 4, 5};
 uint16_t src2[] = {1, 2, 3, 4, 5};
 uint16_t rs1 = 3;
-const uint32_t AVL_CONST = sizeof(src1)/sizeof(src1[0]);
+const uint32_t AVL_CONST = sizeof(src1) / sizeof(src1[0]);
 uint32_t dest[AVL_CONST];
 
 uint32_t ref_vv[] = {2, 4, 6, 8, 10};
diff --git a/softrvv/tests/softrvv_vwsub_test.cpp b/softrvv/tests/softrvv_vwsub_test.cpp
index c7a01ed..c5c6e05 100644
--- a/softrvv/tests/softrvv_vwsub_test.cpp
+++ b/softrvv/tests/softrvv_vwsub_test.cpp
@@ -17,7 +17,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vwsub_test {
 namespace {
@@ -25,7 +25,7 @@
 int16_t src1[] = {2, 4, -6, 8, 10};
 int16_t src2[] = {1, 2, 3, -4, 5};
 int16_t rs1 = 3;
-const uint32_t AVL_CONST = sizeof(src1)/sizeof(src1[0]);
+const uint32_t AVL_CONST = sizeof(src1) / sizeof(src1[0]);
 int32_t dest[AVL_CONST];
 
 int32_t ref_vv[] = {1, 2, -9, 12, 5};
diff --git a/softrvv/tests/softrvv_vwsubu_test.cpp b/softrvv/tests/softrvv_vwsubu_test.cpp
index dda88e3..52ca5c1 100644
--- a/softrvv/tests/softrvv_vwsubu_test.cpp
+++ b/softrvv/tests/softrvv_vwsubu_test.cpp
@@ -17,7 +17,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vwsubu_test {
 namespace {
diff --git a/softrvv/tests/softrvv_vzext_test.cpp b/softrvv/tests/softrvv_vzext_test.cpp
index f468095..7406f19 100644
--- a/softrvv/tests/softrvv_vzext_test.cpp
+++ b/softrvv/tests/softrvv_vzext_test.cpp
@@ -17,13 +17,13 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
+#include "softrvv/include/softrvv.h"
 
 namespace softrvv_vzext_test {
 namespace {
 
 uint16_t src1[] = {1, 2, 3, 4, 5};
-const uint32_t AVL_CONST = sizeof(src1)/sizeof(src1[0]);
+const uint32_t AVL_CONST = sizeof(src1) / sizeof(src1[0]);
 uint32_t dest[AVL_CONST];
 uint32_t ref_dest[] = {1, 2, 3, 4, 5};
 
diff --git a/softrvv/tests/templates/CPPLINT.cfg b/softrvv/tests/templates/CPPLINT.cfg
new file mode 100644
index 0000000..54956f5
--- /dev/null
+++ b/softrvv/tests/templates/CPPLINT.cfg
@@ -0,0 +1 @@
+exclude_files=.*\.tpl\.cpp
diff --git a/softrvv/tests/templates/base.tpl.cpp b/softrvv/tests/templates/base.tpl.cpp
index 8520f17..13a39b7 100644
--- a/softrvv/tests/templates/base.tpl.cpp
+++ b/softrvv/tests/templates/base.tpl.cpp
@@ -31,8 +31,8 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "softrvv.h"
-#include "test_v_helpers.h"
+#include "softrvv/include/softrvv.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 using namespace test_v_helpers;
 
diff --git a/softrvv/tests/vec_disable_test.cpp b/softrvv/tests/vec_disable_test.cpp
index aaaa764..f96e2a8 100644
--- a/softrvv/tests/vec_disable_test.cpp
+++ b/softrvv/tests/vec_disable_test.cpp
@@ -13,12 +13,12 @@
 // limitations under the License.
 
 #include <riscv_vector.h>
-#include <softrvv.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
+#include "softrvv/include/softrvv.h"
 
 namespace vec_disable_test {
 namespace {
diff --git a/test_v_helpers/CMakeLists.txt b/test_v_helpers/CMakeLists.txt
index 920132e..8f8318c 100644
--- a/test_v_helpers/CMakeLists.txt
+++ b/test_v_helpers/CMakeLists.txt
@@ -18,7 +18,7 @@
 add_library(test_v_helpers
 	test_v_helpers.cpp)
 
-target_include_directories(test_v_helpers PUBLIC include)
+target_include_directories(test_v_helpers PUBLIC ${CMAKE_SOURCE_DIR})
 target_link_libraries(test_v_helpers PUBLIC pw_unit_test)
 
 target_compile_options(test_v_helpers PUBLIC
diff --git a/test_v_helpers/include/test_v_helpers.h b/test_v_helpers/include/test_v_helpers.h
index ae3dd6d..2362910 100644
--- a/test_v_helpers/include/test_v_helpers.h
+++ b/test_v_helpers/include/test_v_helpers.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef TEST_V_HELPERS_H
-#define TEST_V_HELPERS_H
+#ifndef TEST_V_HELPERS_INCLUDE_TEST_V_HELPERS_H_
+#define TEST_V_HELPERS_INCLUDE_TEST_V_HELPERS_H_
 
 #include <stdint.h>
 
@@ -94,13 +94,15 @@
 
 template <typename T>
 void assert_vec_mask_eq(int avl, void *test_vector_1, void *test_vector_2) {
-  const unsigned int bw_required = std::__bit_width(sizeof(T)* 8);
+  const unsigned int bw_required = std::__bit_width(sizeof(T) * 8);
   const unsigned int shift = bw_required - 1;
   T *ptr_vec_1 = reinterpret_cast<T *>(test_vector_1);
   T *ptr_vec_2 = reinterpret_cast<T *>(test_vector_2);
   for (int idx = 0; idx < avl; idx++) {
-    unsigned int element_idx = idx >> shift;  // Eqivalent to idx / (sizeof(T) * 8)
-    unsigned int element_pos = idx & ~(element_idx << shift); // Equivalent to idx % (sizeof(T) * 8)
+    unsigned int element_idx =
+        idx >> shift;  // Eqivalent to idx / (sizeof(T) * 8)
+    unsigned int element_pos =
+        idx & ~(element_idx << shift);  // Equivalent to idx % (sizeof(T) * 8)
     T *e1 = ptr_vec_1 + element_idx;
     T *e2 = ptr_vec_2 + element_idx;
     ASSERT_EQ(*e1 & (1 << element_pos), *e2 & (1 << element_pos));
@@ -132,7 +134,7 @@
 template <typename T>
 void fill_random_vector(T *vec, int32_t avl) {
   for (int32_t i = 0; i < avl; i++) {
-    vec[i] = static_cast<T>(rand());
+    vec[i] = static_cast<T>(rand());  // NOLINT(runtime/threadsafe_fn)
   }
 }
 
@@ -145,4 +147,4 @@
 
 }  // namespace test_v_helpers
 
-#endif
+#endif  // TEST_V_HELPERS_INCLUDE_TEST_V_HELPERS_H_
diff --git a/test_v_helpers/test_v_helpers.cpp b/test_v_helpers/test_v_helpers.cpp
index 55fa9ba..3f9b8e6 100644
--- a/test_v_helpers/test_v_helpers.cpp
+++ b/test_v_helpers/test_v_helpers.cpp
@@ -12,7 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
+
 #ifndef LIBSPRINGBOK_NO_VECTOR_SUPPORT
 #include <riscv_vector.h>
 
diff --git a/tests/CPPLINT.cfg b/tests/CPPLINT.cfg
new file mode 100644
index 0000000..03c80b6
--- /dev/null
+++ b/tests/CPPLINT.cfg
@@ -0,0 +1 @@
+filter=-build/namespaces
diff --git a/tests/templates/CPPLINT.cfg b/tests/templates/CPPLINT.cfg
new file mode 100644
index 0000000..54956f5
--- /dev/null
+++ b/tests/templates/CPPLINT.cfg
@@ -0,0 +1 @@
+exclude_files=.*\.tpl\.cpp
diff --git a/tests/templates/base.tpl.cpp b/tests/templates/base.tpl.cpp
index 0b9d608..4987abd 100644
--- a/tests/templates/base.tpl.cpp
+++ b/tests/templates/base.tpl.cpp
@@ -15,7 +15,6 @@
 /* Automatically generated file */
 #include <limits.h>
 #include <riscv_vector.h>
-#include <softrvv.h>
 #include <springbok.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -24,5 +23,6 @@
 #include <tuple>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "softrvv/include/softrvv.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 ${self.body()}
diff --git a/tests/vle_vse_test.cpp b/tests/vle_vse_test.cpp
index 9ed2a0e..7db7c07 100644
--- a/tests/vle_vse_test.cpp
+++ b/tests/vle_vse_test.cpp
@@ -17,7 +17,7 @@
 #include <stddef.h>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 namespace vle_vse_test {
 namespace {
diff --git a/tests/vlnr_vsnr_test.cpp b/tests/vlnr_vsnr_test.cpp
index 1d04efc..dc6be39 100644
--- a/tests/vlnr_vsnr_test.cpp
+++ b/tests/vlnr_vsnr_test.cpp
@@ -15,7 +15,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 // Test for vl{1,2,8}re{8,16,32}.v and vs{1,2,8}r{8,16,32}.v instructions.
 namespace vlnr_vsnr_test {
diff --git a/tests/vmerge_test.cpp b/tests/vmerge_test.cpp
index 9fa4958..0df5d20 100644
--- a/tests/vmerge_test.cpp
+++ b/tests/vmerge_test.cpp
@@ -15,7 +15,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 // Test for vmerge.vim and vmerge.vvm instructions.
 namespace vmerge_test {
diff --git a/tests/vmv_s_x_test.cpp b/tests/vmv_s_x_test.cpp
index 67f8f86..68fc982 100644
--- a/tests/vmv_s_x_test.cpp
+++ b/tests/vmv_s_x_test.cpp
@@ -23,12 +23,12 @@
 #include <type_traits>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 namespace vmv_s_x_test {
 namespace {
 
-using namespace test_v_helpers;
+using namespace test_v_helpers;  // NOLINT(build/namespaces)
 
 uint8_t test_vector_1[MAXVL_BYTES];
 uint8_t reference_vector_1[MAXVL_BYTES];
@@ -134,4 +134,3 @@
 
 }  // namespace
 }  // namespace vmv_s_x_test
-
diff --git a/tests/vmv_test.cpp b/tests/vmv_test.cpp
index c4b36b5..b830071 100644
--- a/tests/vmv_test.cpp
+++ b/tests/vmv_test.cpp
@@ -21,7 +21,7 @@
 #include <tuple>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 namespace vmv_test {
 namespace {
diff --git a/tests/vsetvl_test.cpp b/tests/vsetvl_test.cpp
index a5d90b7..8ebb7bd 100644
--- a/tests/vsetvl_test.cpp
+++ b/tests/vsetvl_test.cpp
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 
 #include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
+#include "test_v_helpers/include/test_v_helpers.h"
 
 namespace vsetvl_test {
 namespace {
diff --git a/vector_load_store_tests/include/vector_load_store_tests.h b/vector_load_store_tests/include/vector_load_store_tests.h
index eb8e8e8..36e58dc 100644
--- a/vector_load_store_tests/include/vector_load_store_tests.h
+++ b/vector_load_store_tests/include/vector_load_store_tests.h
@@ -14,17 +14,18 @@
  * limitations under the License.
  */
 
-#ifndef VECTOR_TESTS_VECTOR_LOAD_STORE_TESTS_H_
-#define VECTOR_TESTS_VECTOR_LOAD_STORE_TESTS_H_
+#ifndef VECTOR_LOAD_STORE_TESTS_INCLUDE_VECTOR_LOAD_STORE_TESTS_H_
+#define VECTOR_LOAD_STORE_TESTS_INCLUDE_VECTOR_LOAD_STORE_TESTS_H_
 
-#include "test_vector.h"
-#include <string.h>
-#include <springbok.h>
 #include <assert.h>
+#include <springbok.h>
+#include <string.h>
+
+#include "vector_tests/include/test_vector.h"
 
 void test_vector_load_store_sanity_e8(void);
 void test_vector_load_store_sanity_e16(void);
 void test_vector_load_store_sanity_e32(void);
 void test_vector_load_store_sanity_e64(void);
 
-#endif
\ No newline at end of file
+#endif  // VECTOR_LOAD_STORE_TESTS_INCLUDE_VECTOR_LOAD_STORE_TESTS_H_
diff --git a/vector_load_store_tests/vector_load_store_tests.c b/vector_load_store_tests/vector_load_store_tests.c
index c4841d1..20766f4 100644
--- a/vector_load_store_tests/vector_load_store_tests.c
+++ b/vector_load_store_tests/vector_load_store_tests.c
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "vector_load_store_tests.h"
+#include "vector_load_store_tests/include/vector_load_store_tests.h"
 
 // TODO(b/194689843): Re-enable e64 and mf[2|4|8] tests.
 
@@ -38,9 +38,9 @@
 
   volatile uint8_t INP1[] = {0xff, 0x00, 0x0f, 0xf0};
   volatile uint8_t OUT1[4];
-  __asm__ volatile ("vle8.v v1, (%0)"::"r" (INP1));
-  __asm__ volatile ("vse8.v v1, (%0)"::"r" (OUT1));
-  assert(memcmp((void*)INP1,(void*)OUT1, 4 * sizeof(uint8_t)) == 0);
+  __asm__ volatile("vle8.v v1, (%0)" ::"r"(INP1));
+  __asm__ volatile("vse8.v v1, (%0)" ::"r"(OUT1));
+  assert(memcmp((void*)INP1, (void*)OUT1, 4 * sizeof(uint8_t)) == 0);
 }
 
 void test_vector_load_store_sanity_e16(void) {
@@ -54,9 +54,9 @@
 
   volatile uint16_t INP1[] = {0xff00, 0x00ff, 0x0ff0, 0xf00f};
   volatile uint16_t OUT1[4];
-  __asm__ volatile ("vle16.v v1, (%0)"::"r" (INP1));
-  __asm__ volatile ("vse16.v v1, (%0)"::"r" (OUT1));
-  assert(memcmp((void*)INP1,(void*)OUT1, 4 * sizeof(uint16_t)) == 0);
+  __asm__ volatile("vle16.v v1, (%0)" ::"r"(INP1));
+  __asm__ volatile("vse16.v v1, (%0)" ::"r"(OUT1));
+  assert(memcmp((void*)INP1, (void*)OUT1, 4 * sizeof(uint16_t)) == 0);
 }
 
 void test_vector_load_store_sanity_e32(void) {
@@ -70,9 +70,9 @@
 
   volatile uint32_t INP1[] = {0xff0000ff, 0x00ffff00, 0x0ff00ff0, 0xf00ff00f};
   volatile uint32_t OUT1[4];
-  __asm__ volatile ("vle32.v v1, (%0)"::"r" (INP1));
-  __asm__ volatile ("vse32.v v1, (%0)"::"r" (OUT1));
-  assert(memcmp((void*)INP1,(void*)OUT1, 4 * sizeof(uint32_t)) == 0);
+  __asm__ volatile("vle32.v v1, (%0)" ::"r"(INP1));
+  __asm__ volatile("vse32.v v1, (%0)" ::"r"(OUT1));
+  assert(memcmp((void*)INP1, (void*)OUT1, 4 * sizeof(uint32_t)) == 0);
 }
 
 void test_vector_load_store_sanity_e64(void) {
@@ -84,11 +84,12 @@
   LOG_INFO("vl: %u", vl);
   assert(vl == 4);
 
-  volatile uint64_t INP1[] = {0xff0000ffff0000ff, 0x00ffff0000ffff00, 0x0ff00ff00ff00ff0, 0xf00ff00ff00ff00f};
+  volatile uint64_t INP1[] = {0xff0000ffff0000ff, 0x00ffff0000ffff00,
+                              0x0ff00ff00ff00ff0, 0xf00ff00ff00ff00f};
   volatile uint64_t OUT1[4];
-  __asm__ volatile ("vle64.v v1, (%0)"::"r" (INP1));
-  __asm__ volatile ("vse64.v v1, (%0)"::"r" (OUT1));
-  assert(memcmp((void*)INP1,(void*)OUT1, 4 * sizeof(uint64_t)) == 0);
+  __asm__ volatile("vle64.v v1, (%0)" ::"r"(INP1));
+  __asm__ volatile("vse64.v v1, (%0)" ::"r"(OUT1));
+  assert(memcmp((void*)INP1, (void*)OUT1, 4 * sizeof(uint64_t)) == 0);
 }
 
 // TODO(julianmb): test mask load and mask store. vlm.v vsm.v
diff --git a/vector_matmul4_asm_test/main.cpp b/vector_matmul4_asm_test/main.cpp
index 0fe4972..38f1f15 100644
--- a/vector_matmul4_asm_test/main.cpp
+++ b/vector_matmul4_asm_test/main.cpp
@@ -19,19 +19,20 @@
 #include <cstdlib>
 #include <random>
 
-//#define PRINT_INPUTS_AND_OUTPUTS (1)
+// #define PRINT_INPUTS_AND_OUTPUTS (1)
 
 #ifndef PRINT_INPUTS_AND_OUTPUTS
 #define PRINT_INPUTS_AND_OUTPUTS (0)
 #endif
 
-extern "C" void vector_matmul4_asm(int32_t *out, const int8_t *lhs, const int8_t *rhs_t, std::size_t count);
+extern "C" void vector_matmul4_asm(int32_t *out, const int8_t *lhs,
+                                   const int8_t *rhs_t, std::size_t count);
 
 extern "C" int main(void) {
-  int8_t lhs[16*37];
-  int8_t rhs_t[16*37];
-  int32_t result[sizeof(lhs)+16];
-  int32_t golden[sizeof(lhs)+16];
+  int8_t lhs[16 * 37];
+  int8_t rhs_t[16 * 37];
+  int32_t result[sizeof(lhs) + 16];
+  int32_t golden[sizeof(lhs) + 16];
   std::default_random_engine generator;
   std::uniform_int_distribution<int8_t> distribution(INT8_MIN, INT8_MAX);
 
@@ -41,42 +42,43 @@
   }
 
   // One extra guard matrix to ensure the assembly doesn't go past the end
-  for (std::size_t i = sizeof(lhs); i < sizeof(lhs)+16; i++) {
+  for (std::size_t i = sizeof(lhs); i < sizeof(lhs) + 16; i++) {
     result[i] = 1337;
     golden[i] = 1337;
   }
 
-  vector_matmul4_asm(result, lhs, rhs_t, sizeof(lhs)/16);
+  vector_matmul4_asm(result, lhs, rhs_t, sizeof(lhs) / 16);
 
-  for (std::size_t b = 0; b < sizeof(lhs)/16; b++) {
+  for (std::size_t b = 0; b < sizeof(lhs) / 16; b++) {
     for (int j = 0; j < 4; j++) {
       for (int i = 0; i < 4; i++) {
         int32_t acc = 0;
         for (int k = 0; k < 4; k++) {
-          acc += lhs[k+j*4+b*16] * rhs_t[k+i*4+b*16];
+          acc += lhs[k + j * 4 + b * 16] * rhs_t[k + i * 4 + b * 16];
         }
-        golden[i+j*4+b*16] = acc;
+        golden[i + j * 4 + b * 16] = acc;
       }
     }
   }
 
   std::size_t errors = 0;
-  for (std::size_t b = 0; b < sizeof(result)/sizeof(int32_t)/16; b++) {
+  for (std::size_t b = 0; b < sizeof(result) / sizeof(int32_t) / 16; b++) {
     for (int j = 0; j < 4; j++) {
       for (int i = 0; i < 4; i++) {
-        errors += result[i+4*j+b*16] == golden[i+4*j+b*16]? 0 : 1;
+        errors +=
+            result[i + 4 * j + b * 16] == golden[i + 4 * j + b * 16] ? 0 : 1;
       }
     }
   }
 
   if (PRINT_INPUTS_AND_OUTPUTS) {
     printf("lhs:\n");
-    for (std::size_t b = 0; b < sizeof(lhs)/sizeof(int8_t)/16; b++) {
-      printf("b = %d:\n",b);
+    for (std::size_t b = 0; b < sizeof(lhs) / sizeof(int8_t) / 16; b++) {
+      printf("b = %d:\n", b);
       for (int j = 0; j < 4; j++) {
         printf("    ");
         for (int i = 0; i < 4; i++) {
-          printf("%5d,", (int)lhs[i+4*j+b*16]);
+          printf("%5d,", static_cast<int>(lhs[i + 4 * j + b * 16]));
         }
         printf("\n");
       }
@@ -84,12 +86,12 @@
     }
 
     printf("rhs_t:\n");
-    for (std::size_t b = 0; b < sizeof(rhs_t)/sizeof(int8_t)/16; b++) {
-      printf("b = %d:\n",b);
+    for (std::size_t b = 0; b < sizeof(rhs_t) / sizeof(int8_t) / 16; b++) {
+      printf("b = %d:\n", b);
       for (int j = 0; j < 4; j++) {
         printf("    ");
         for (int i = 0; i < 4; i++) {
-          printf("%5d,", (int)rhs_t[i+4*j+b*16]);
+          printf("%5d,", static_cast<int>(rhs_t[i + 4 * j + b * 16]));
         }
         printf("\n");
       }
@@ -97,12 +99,12 @@
     }
 
     printf("golden:\n");
-    for (std::size_t b = 0; b < sizeof(golden)/sizeof(int32_t)/16; b++) {
-      printf("b = %d:\n",b);
+    for (std::size_t b = 0; b < sizeof(golden) / sizeof(int32_t) / 16; b++) {
+      printf("b = %d:\n", b);
       for (int j = 0; j < 4; j++) {
         printf("    ");
         for (int i = 0; i < 4; i++) {
-          printf("%7d,", (int)golden[i+4*j+b*16]);
+          printf("%7d,", static_cast<int>(golden[i + 4 * j + b * 16]));
         }
         printf("\n");
       }
@@ -110,13 +112,14 @@
     }
 
     printf("\nresults:\n");
-    for (std::size_t b = 0; b < sizeof(result)/sizeof(int32_t)/16; b++) {
-      printf("b = %d:\n",b);
+    for (std::size_t b = 0; b < sizeof(result) / sizeof(int32_t) / 16; b++) {
+      printf("b = %d:\n", b);
       for (int j = 0; j < 4; j++) {
         printf("    ");
         for (int i = 0; i < 4; i++) {
-          bool same = result[i+4*j+b*16] == golden[i+4*j+b*16];
-          printf("%7d%c", (int)result[i+4*j+b*16], same? ',' : '/');
+          bool same = result[i + 4 * j + b * 16] == golden[i + 4 * j + b * 16];
+          printf("%7d%c", static_cast<int>(result[i + 4 * j + b * 16]),
+                 same ? ',' : '/');
         }
         printf("\n");
       }
@@ -126,5 +129,5 @@
     printf("\n%d errors\n", errors);
   }
 
-  return (errors > INT_MAX)? INT_MAX : (int)errors;
+  return (errors > INT_MAX) ? INT_MAX : static_cast<int>(errors);
 }
diff --git a/vector_tests/CMakeLists.txt b/vector_tests/CMakeLists.txt
index 34c708a..b365e6f 100644
--- a/vector_tests/CMakeLists.txt
+++ b/vector_tests/CMakeLists.txt
@@ -21,7 +21,7 @@
 	test_vector.c
     common_vector_test.c)
 
-target_include_directories(vector_tests PUBLIC include)
+target_include_directories(vector_tests PUBLIC ${CMAKE_SOURCE_DIR})
 
 target_link_libraries(vector_tests springbok)
 
diff --git a/vector_tests/common_vector_test.c b/vector_tests/common_vector_test.c
index 47be5a3..e1545f0 100644
--- a/vector_tests/common_vector_test.c
+++ b/vector_tests/common_vector_test.c
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "common_vector_test.h"
+#include "vector_tests/include/common_vector_test.h"
 
 size_t strlength(const char *str) {
   size_t index = 0;
diff --git a/vector_tests/include/common_vector_test.h b/vector_tests/include/common_vector_test.h
index 5af7f5d..037a69b 100644
--- a/vector_tests/include/common_vector_test.h
+++ b/vector_tests/include/common_vector_test.h
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#ifndef VECTOR_TESTS_COMMON_COMMON_VECTOR_TEST_H_
-#define VECTOR_TESTS_COMMON_COMMON_VECTOR_TEST_H_
-#include <stddef.h>
+#ifndef VECTOR_TESTS_INCLUDE_COMMON_VECTOR_TEST_H_
+#define VECTOR_TESTS_INCLUDE_COMMON_VECTOR_TEST_H_
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdint.h>
 
 size_t strlength(const char *);
 bool strequal(const char *, const char *);
 uint64_t random64(void);
 
-#endif
\ No newline at end of file
+#endif  // VECTOR_TESTS_INCLUDE_COMMON_VECTOR_TEST_H_
diff --git a/vector_tests/include/test_vector.h b/vector_tests/include/test_vector.h
index 5c53685..df680e4 100644
--- a/vector_tests/include/test_vector.h
+++ b/vector_tests/include/test_vector.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef VECTOR_TESTS_TEST_VECTOR_H_
-#define VECTOR_TESTS_TEST_VECTOR_H_
+#ifndef VECTOR_TESTS_INCLUDE_TEST_VECTOR_H_
+#define VECTOR_TESTS_INCLUDE_TEST_VECTOR_H_
 
 #include <stdbool.h>
 #include <stdint.h>
@@ -43,4 +43,4 @@
 uint32_t get_vtype_e32(uint8_t, bool, bool);
 uint32_t get_vtype_e64(uint8_t, bool, bool);
 
-#endif
+#endif  // VECTOR_TESTS_INCLUDE_TEST_VECTOR_H_
diff --git a/vector_tests/test_vector.c b/vector_tests/test_vector.c
index 3a45618..2085e13 100644
--- a/vector_tests/test_vector.c
+++ b/vector_tests/test_vector.c
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-#include "test_vector.h"
+#include "vector_tests/include/test_vector.h"
+
 #include <springbok.h>
 
 #define MSTATUS_VS 0x00000600
@@ -51,7 +52,6 @@
 }
 
 int main(void) {
-
   LOG_INFO("Hello test_vector.c");
   LOG_INFO("Built at: " __DATE__ ", " __TIME__);
 
diff --git a/vector_vadd_vsub_tests/include/vector_vadd_vsub_tests.h b/vector_vadd_vsub_tests/include/vector_vadd_vsub_tests.h
index dae488c..300df8c 100644
--- a/vector_vadd_vsub_tests/include/vector_vadd_vsub_tests.h
+++ b/vector_vadd_vsub_tests/include/vector_vadd_vsub_tests.h
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#ifndef SHODAN_SW_VECTOR_TESTS_VECTOR_VADD_VSUB_TESTS_H_
-#define SHODAN_SW_VECTOR_TESTS_VECTOR_VADD_VSUB_TESTS_H_
+#ifndef VECTOR_VADD_VSUB_TESTS_INCLUDE_VECTOR_VADD_VSUB_TESTS_H_
+#define VECTOR_VADD_VSUB_TESTS_INCLUDE_VECTOR_VADD_VSUB_TESTS_H_
 
-#include "test_vector.h"
-#include "common_vector_test.h"
+#include "vector_tests/include/common_vector_test.h"
+#include "vector_tests/include/test_vector.h"
 
 void test_vector_vadd_vv(void);
 void test_vector_vsub_vv(void);
@@ -28,4 +28,4 @@
 void test_vector_vrsub_vx(void);
 void test_vector_vrsub_vi(void);
 
-#endif
+#endif  // VECTOR_VADD_VSUB_TESTS_INCLUDE_VECTOR_VADD_VSUB_TESTS_H_
diff --git a/vector_vadd_vsub_tests/vector_vadd_vsub_tests.c b/vector_vadd_vsub_tests/vector_vadd_vsub_tests.c
index 4f4b830..cfe3d37 100644
--- a/vector_vadd_vsub_tests/vector_vadd_vsub_tests.c
+++ b/vector_vadd_vsub_tests/vector_vadd_vsub_tests.c
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#include <assert.h>
-#include <string.h>
+#include "vector_vadd_vsub_tests/include/vector_vadd_vsub_tests.h"
 
-#include "vector_vadd_vsub_tests.h"
+#include <assert.h>
 #include <springbok.h>
+#include <string.h>
 
 // TODO(b/194689843): Re-enable e64 and mf[2|4|8] tests.
 
diff --git a/vector_vset_tests/include/vector_vset_tests.h b/vector_vset_tests/include/vector_vset_tests.h
index 418ade2..fa01d68 100644
--- a/vector_vset_tests/include/vector_vset_tests.h
+++ b/vector_vset_tests/include/vector_vset_tests.h
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#ifndef VECTOR_TESTS_VECTOR_VSET_TESTS_H_
-#define VECTOR_TESTS_VECTOR_VSET_TESTS_H_
+#ifndef VECTOR_VSET_TESTS_INCLUDE_VECTOR_VSET_TESTS_H_
+#define VECTOR_VSET_TESTS_INCLUDE_VECTOR_VSET_TESTS_H_
 
-#include "test_vector.h"
-#include "common_vector_test.h"
+#include "vector_tests/include/common_vector_test.h"
+#include "vector_tests/include/test_vector.h"
 
 void test_vector_vsetvl(void);
 void test_vector_vsetvli(void);
 void test_vector_vsetivli(void);
 
-#endif
\ No newline at end of file
+#endif  // VECTOR_VSET_TESTS_INCLUDE_VECTOR_VSET_TESTS_H_
diff --git a/vector_vset_tests/vector_vset_tests.c b/vector_vset_tests/vector_vset_tests.c
index 3076874..b3f6db0 100644
--- a/vector_vset_tests/vector_vset_tests.c
+++ b/vector_vset_tests/vector_vset_tests.c
@@ -14,9 +14,10 @@
  * limitations under the License.
  */
 
+#include "vector_vset_tests/include/vector_vset_tests.h"
+
 #include <springbok.h>
 #include <string.h>
-#include "vector_vset_tests.h"
 
 // TODO(b/194689843): Re-enable e64 and mf[2|4|8] tests.
 
@@ -84,8 +85,8 @@
   volatile uint32_t avl_vol = avl;
 
   // vsetvl  rd, rs1, rs2      # rd = new vl, rs1 = AVL, rs2 = new vtype value
-  __asm__ volatile("vsetvl t0, %[AVL], %[VTYPE]" ::[AVL] "r"(avl_vol),
-                   [ VTYPE ] "r"(vtype));
+  __asm__ volatile(
+      "vsetvl t0, %[AVL], %[VTYPE]" ::[AVL] "r"(avl_vol), [VTYPE] "r"(vtype));
 
   COPY_SCALAR_REG(observed_vl);
   if (observed_vl != expected_vl) {
@@ -508,10 +509,10 @@
 
 // vsetvli rd, rs1, vtypei   # rd = new vl, rs1 = AVL, vtypei = new vtype
 // setting
-#define VSETVLI_TEST_HELPER(VTYPEI_VAR, VTYPEI_SYMBOL, AVL_VAR)      \
-  if (strequal(VTYPEI_VAR, VTYPEI_SYMBOL)) {                         \
-    __asm__ volatile(                                                \
-        "vsetvli t0, %[AVL], " VTYPEI_SYMBOL::[AVL] "r"(AVL_VAR));   \
+#define VSETVLI_TEST_HELPER(VTYPEI_VAR, VTYPEI_SYMBOL, AVL_VAR)    \
+  if (strequal(VTYPEI_VAR, VTYPEI_SYMBOL)) {                       \
+    __asm__ volatile(                                              \
+        "vsetvli t0, %[AVL], " VTYPEI_SYMBOL::[AVL] "r"(AVL_VAR)); \
   }
 
 void subtest_vsetvli(const char *vtypei, uint32_t avl, uint32_t expected_vl) {
