diff options
-rw-r--r-- | config.h.in | 3 | ||||
-rwxr-xr-x | configure | 87 | ||||
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | riscv/riscv.ac | 7 | ||||
-rw-r--r-- | spike_main/spike.cc | 3 |
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 @@ -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;}); |