aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.h.in3
-rwxr-xr-xconfigure87
-rw-r--r--configure.ac7
-rw-r--r--riscv/riscv.ac7
-rw-r--r--spike_main/spike.cc3
5 files changed, 107 insertions, 0 deletions
diff --git a/config.h.in b/config.h.in
index 137f195..e82156d 100644
--- a/config.h.in
+++ b/config.h.in
@@ -6,6 +6,9 @@
/* Default value for --isa switch */
#undef DEFAULT_ISA
+/* Default value for --vector switch */
+#undef DEFAULT_VARCH
+
/* Path to the device-tree-compiler */
#undef DTC
diff --git a/configure b/configure
index 56813ad..e211cab 100755
--- a/configure
+++ b/configure
@@ -701,6 +701,7 @@ enable_option_checking
enable_stow
enable_optional_subprojects
with_isa
+with_varch
enable_commitlog
enable_histogram
enable_dirty
@@ -1358,6 +1359,8 @@ Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-isa=RV64IMAFDC Sets the default RISC-V ISA
+ --with-varch=v128:e32:s128
+ Sets the default vector config
Some influential environment variables:
CC C compiler command
@@ -1639,6 +1642,60 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_cxx_check_header_compile
+# ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES
+# ---------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_cxx_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_type
+
# ac_fn_cxx_try_link LINENO
# -------------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
@@ -4288,6 +4345,18 @@ fi
#-------------------------------------------------------------------------
+# Checks for type
+#-------------------------------------------------------------------------
+
+ac_fn_cxx_check_type "$LINENO" "__int128_t" "ac_cv_type___int128_t" "$ac_includes_default"
+if test "x$ac_cv_type___int128_t" = xyes; then :
+
+else
+ echo "error: spike requires 128 integer suuport"; exit 1
+fi
+
+
+#-------------------------------------------------------------------------
# Default compiler flags
#-------------------------------------------------------------------------
@@ -4473,6 +4542,24 @@ _ACEOF
fi
+
+# Check whether --with-varch was given.
+if test "${with_varch+set}" = set; then :
+ withval=$with_varch;
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_VARCH "$withval"
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_VARCH "v128:e32:s128"
+_ACEOF
+
+fi
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
$as_echo_n "checking for library containing dlopen... " >&6; }
if ${ac_cv_search_dlopen+:} false; then :
diff --git a/configure.ac b/configure.ac
index 6b28bf3..cc72d64 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,6 +73,13 @@ MCPPBS_PROG_INSTALL
AC_HEADER_STDC
#-------------------------------------------------------------------------
+# Checks for type
+#-------------------------------------------------------------------------
+
+AC_CHECK_TYPE([__int128_t], [],
+ [echo "error: spike requires 128 integer suuport"; exit 1], [])
+
+#-------------------------------------------------------------------------
# Default compiler flags
#-------------------------------------------------------------------------
diff --git a/riscv/riscv.ac b/riscv/riscv.ac
index a555e5b..40cf706 100644
--- a/riscv/riscv.ac
+++ b/riscv/riscv.ac
@@ -6,6 +6,13 @@ AC_ARG_WITH(isa,
AC_DEFINE_UNQUOTED([DEFAULT_ISA], "$withval", [Default value for --isa switch]),
AC_DEFINE_UNQUOTED([DEFAULT_ISA], "RV64IMAFDC", [Default value for --isa switch]))
+AC_ARG_WITH(varch,
+ [AS_HELP_STRING([--with-varch=v128:e32:s128],
+ [Sets the default vector config])],
+ AC_DEFINE_UNQUOTED([DEFAULT_VARCH], "$withval", [Default value for --varch switch]),
+ AC_DEFINE_UNQUOTED([DEFAULT_VARCH], "v128:e32:s128", [Default value for --varch switch]))
+
+
AC_SEARCH_LIBS([dlopen], [dl dld], [], [
AC_MSG_ERROR([unable to find the dlopen() function])
])
diff --git a/spike_main/spike.cc b/spike_main/spike.cc
index c047211..5da6210 100644
--- a/spike_main/spike.cc
+++ b/spike_main/spike.cc
@@ -29,6 +29,7 @@ static void help(int exit_code = 1)
fprintf(stderr, " -h, --help Print this help message\n");
fprintf(stderr, " -H Start halted, allowing a debugger to connect\n");
fprintf(stderr, " --isa=<name> RISC-V ISA string [default %s]\n", DEFAULT_ISA);
+ fprintf(stderr, " --varch=<name> RISC-V Vector uArch string [default %s]\n", DEFAULT_VARCH);
fprintf(stderr, " --pc=<address> Override ELF entry point\n");
fprintf(stderr, " --hartids=<a,b,...> Explicitly specify hartids, default is 0,1,...\n");
fprintf(stderr, " --ic=<S>:<W>:<B> Instantiate a cache model with S sets,\n");
@@ -109,6 +110,7 @@ int main(int argc, char** argv)
bool log_cache = false;
std::function<extension_t*()> extension;
const char* isa = DEFAULT_ISA;
+ const char* varch = DEFAULT_VARCH;
uint16_t rbb_port = 0;
bool use_rbb = false;
unsigned dmi_rti = 0;
@@ -153,6 +155,7 @@ int main(int argc, char** argv)
parser.option(0, "l2", 1, [&](const char* s){l2.reset(cache_sim_t::construct(s, "L2$"));});
parser.option(0, "log-cache-miss", 0, [&](const char* s){log_cache = true;});
parser.option(0, "isa", 1, [&](const char* s){isa = s;});
+ parser.option(0, "varch", 1, [&](const char* s){varch = s;});
parser.option(0, "extension", 1, [&](const char* s){extension = find_extension(s);});
parser.option(0, "dump-dts", 0, [&](const char *s){dump_dts = true;});
parser.option(0, "disable-dtb", 0, [&](const char *s){dtb_enabled = false;});