summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/tools.lua4
-rw-r--r--src/emu/netlist/build/makefile166
-rw-r--r--src/emu/netlist/nl_setup.c2
-rw-r--r--src/emu/netlist/plib/palloc.c3
-rw-r--r--src/emu/netlist/plib/pconfig.h29
-rw-r--r--src/emu/netlist/plib/plists.h6
-rw-r--r--src/emu/netlist/plib/pparser.h2
-rw-r--r--src/emu/netlist/plib/pstream.h20
-rw-r--r--src/emu/netlist/plib/pstring.c20
-rw-r--r--src/emu/netlist/plib/pstring.h4
-rw-r--r--src/emu/netlist/prg/nltool.c (renamed from src/tools/nltool.c)18
-rw-r--r--src/emu/netlist/prg/nlwav.c (renamed from src/tools/nlwav.c)0
-rw-r--r--src/emu/netlist/solver/nld_ms_gmres.h4
13 files changed, 213 insertions, 65 deletions
diff --git a/scripts/src/tools.lua b/scripts/src/tools.lua
index e2cb09d44d9..1df4fe55b31 100644
--- a/scripts/src/tools.lua
+++ b/scripts/src/tools.lua
@@ -615,7 +615,7 @@ includedirs {
}
files {
- MAME_DIR .. "src/tools/nltool.c",
+ MAME_DIR .. "src/emu/netlist/prg/nltool.c",
}
--------------------------------------------------
@@ -651,7 +651,7 @@ includedirs {
}
files {
- MAME_DIR .. "src/tools/nlwav.c",
+ MAME_DIR .. "src/emu/netlist/prg/nlwav.c",
}
--------------------------------------------------
diff --git a/src/emu/netlist/build/makefile b/src/emu/netlist/build/makefile
new file mode 100644
index 00000000000..162b21a0ce6
--- /dev/null
+++ b/src/emu/netlist/build/makefile
@@ -0,0 +1,166 @@
+###########################################################################
+#
+# makefile
+#
+# Core makefile for building MAME and derivatives
+#
+# Copyright (c) Nicola Salmoria and the MAME Team.
+# Visit http://mamedev.org for licensing and usage restrictions.
+#
+###########################################################################
+
+OBJ = obj
+SRC = ..
+
+#-fuse-ld=gold -Wpedantic -march=native -march=native
+
+# LTO = -flto=4 -fuse-linker-plugin -flto-partition=balanced -Wodr
+
+CDEFS = -DPSTANDALONE=1 -DPTR64=1
+#-Werror
+CFLAGS = $(LTO) -g -O3 -std=c++98 -march=native -msse4.2 -Wall -Wpedantic -Wsign-compare -Wextra -Wno-long-long -Wno-unused-parameter -Wno-unused-result -Wno-variadic-macros -I..
+LDFLAGS = $(LTO) -g -O3 -std=c++98
+#CFLAGS = $(LTO) -g -O3 -std=c++11 -Wall -Wpedantic -Wsign-compare -Wextra -Isrc
+#LDFLAGS = $(LTO) -g -O3 -std=c++11
+
+CC = @g++-5
+LD = @g++-5
+MD = @mkdir
+RM = @rm
+
+TARGETS = nltool nlwav
+
+NLOBJ = $(OBJ)
+POBJ = $(OBJ)/plib
+
+OBJDIRS = $(OBJ) \
+ $(OBJ)/analog \
+ $(OBJ)/solver \
+ $(OBJ)/devices \
+ $(OBJ)/plib \
+ $(OBJ)/devices \
+ $(OBJ)/macro \
+ $(OBJ)/tools \
+ $(OBJ)/prg \
+
+
+OBJS = $(POBJS) $(NLOBJS)
+
+POBJS := \
+ $(POBJ)/pstring.o \
+ $(POBJ)/palloc.o \
+ $(POBJ)/pparser.o \
+ $(POBJ)/pstate.o \
+ $(POBJ)/pstream.o \
+
+NLOBJS := \
+ $(NLOBJ)/nl_base.o \
+ $(NLOBJ)/nl_parser.o \
+ $(NLOBJ)/nl_setup.o \
+ $(NLOBJ)/nl_factory.o \
+ $(NLOBJ)/analog/nld_bjt.o \
+ $(NLOBJ)/analog/nld_fourterm.o \
+ $(NLOBJ)/analog/nld_switches.o \
+ $(NLOBJ)/analog/nld_twoterm.o \
+ $(NLOBJ)/analog/nld_opamps.o \
+ $(NLOBJ)/devices/nld_4020.o \
+ $(NLOBJ)/devices/nld_4066.o \
+ $(NLOBJ)/devices/nld_7400.o \
+ $(NLOBJ)/devices/nld_7402.o \
+ $(NLOBJ)/devices/nld_7404.o \
+ $(NLOBJ)/devices/nld_7408.o \
+ $(NLOBJ)/devices/nld_7410.o \
+ $(NLOBJ)/devices/nld_7411.o \
+ $(NLOBJ)/devices/nld_7420.o \
+ $(NLOBJ)/devices/nld_7425.o \
+ $(NLOBJ)/devices/nld_7427.o \
+ $(NLOBJ)/devices/nld_7430.o \
+ $(NLOBJ)/devices/nld_7432.o \
+ $(NLOBJ)/devices/nld_7437.o \
+ $(NLOBJ)/devices/nld_7448.o \
+ $(NLOBJ)/devices/nld_7450.o \
+ $(NLOBJ)/devices/nld_7474.o \
+ $(NLOBJ)/devices/nld_7483.o \
+ $(NLOBJ)/devices/nld_7486.o \
+ $(NLOBJ)/devices/nld_7490.o \
+ $(NLOBJ)/devices/nld_7493.o \
+ $(NLOBJ)/devices/nld_74107.o \
+ $(NLOBJ)/devices/nld_74123.o \
+ $(NLOBJ)/devices/nld_74153.o \
+ $(NLOBJ)/devices/nld_74175.o \
+ $(NLOBJ)/devices/nld_74192.o \
+ $(NLOBJ)/devices/nld_74193.o \
+ $(NLOBJ)/devices/nld_74279.o \
+ $(NLOBJ)/devices/nld_74ls629.o \
+ $(NLOBJ)/devices/nld_82S16.o \
+ $(NLOBJ)/devices/nld_9310.o \
+ $(NLOBJ)/devices/nld_9312.o \
+ $(NLOBJ)/devices/nld_9316.o \
+ $(NLOBJ)/devices/nld_mm5837.o \
+ $(NLOBJ)/devices/nld_ne555.o \
+ $(NLOBJ)/devices/nld_r2r_dac.o \
+ $(NLOBJ)/devices/nld_legacy.o \
+ $(NLOBJ)/devices/net_lib.o \
+ $(NLOBJ)/devices/nld_log.o \
+ $(NLOBJ)/devices/nld_system.o \
+ $(NLOBJ)/devices/nld_truthtable.o \
+ $(NLOBJ)/macro/nlm_cd4xxx.o \
+ $(NLOBJ)/macro/nlm_opamp.o \
+ $(NLOBJ)/macro/nlm_other.o \
+ $(NLOBJ)/macro/nlm_ttl74xx.o \
+ $(NLOBJ)/solver/nld_solver.o \
+ $(NLOBJ)/tools/nl_convert.o \
+
+all: maketree $(TARGETS)
+
+#-------------------------------------------------
+# clean
+#-------------------------------------------------
+
+clean:
+ $(RM) -rf $(OBJS) $(TARGETS)
+
+#-------------------------------------------------
+# nltool
+#-------------------------------------------------
+
+nltool: $(OBJ)/prg/nltool.o $(OBJS)
+ @echo Linking $@...
+ $(LD) -o $@ $(LDFLAGS) $^ $(LIBS)
+
+nlwav: $(OBJ)/prg/nlwav.o $(OBJS)
+ @echo Linking $@...
+ $(LD) -o $@ $(LDFLAGS) $^ $(LIBS)
+
+#-------------------------------------------------
+# directories
+#-------------------------------------------------
+
+$(sort $(OBJDIRS)):
+ $(MD) -p $@
+
+maketree: $(sort $(OBJDIRS))
+
+
+#-------------------------------------------------
+# generic rules
+#-------------------------------------------------
+
+$(OBJ)/%.o: $(SRC)/%.c
+ @echo Compiling $<...
+ $(CC) $(CDEFS) $(CFLAGS) -c $< -o $@
+
+$(OBJ)/%.pp: $(SRC)/%.c | $(OSPREBUILD)
+ @echo Compiling $<...
+ $(CC) $(CDEFS) $(CFLAGS) -E $< -o $@
+
+$(OBJ)/%.s: $(SRC)/%.c | $(OSPREBUILD)
+ @echo Compiling $<...
+ $(CC) $(CDEFS) $(CFLAGS) -S $< -o $@
+
+$(OBJ)/%.a:
+ @echo Archiving $@...
+ $(RM) $@
+ $(AR) $(ARFLAGS) $@ $^
+
+
diff --git a/src/emu/netlist/nl_setup.c b/src/emu/netlist/nl_setup.c
index fc74e9f3908..94cb85ced03 100644
--- a/src/emu/netlist/nl_setup.c
+++ b/src/emu/netlist/nl_setup.c
@@ -5,6 +5,8 @@
*
*/
+#include <cstdio>
+
#include "solver/nld_solver.h"
#include "plib/palloc.h"
diff --git a/src/emu/netlist/plib/palloc.c b/src/emu/netlist/plib/palloc.c
index 5746264322b..9b0ee555cbb 100644
--- a/src/emu/netlist/plib/palloc.c
+++ b/src/emu/netlist/plib/palloc.c
@@ -5,9 +5,10 @@
*
*/
+#include <cstdio>
+
#include "pconfig.h"
#include "palloc.h"
-
//============================================================
// Exceptions
//============================================================
diff --git a/src/emu/netlist/plib/pconfig.h b/src/emu/netlist/plib/pconfig.h
index 61af16a17db..cb7c7111cd2 100644
--- a/src/emu/netlist/plib/pconfig.h
+++ b/src/emu/netlist/plib/pconfig.h
@@ -63,9 +63,6 @@ typedef __int128_t INT128;
#if !(PSTANDALONE)
-//#undef ATTR_COLD
-//#define ATTR_COLD
-
/* use MAME */
#if (USE_DELEGATE_TYPE == DELEGATE_TYPE_INTERNAL)
#define PHAS_PMF_INTERNAL 1
@@ -101,10 +98,10 @@ typedef __int128_t INT128;
/* ATTR_HOT and ATTR_COLD cause performance degration in 5.1 */
//#define ATTR_HOT
//#define ATTR_COLD
-#define ATTR_HOT __attribute__((hot))
+#define ATTR_HOT __attribute__((hot))
#define ATTR_COLD __attribute__((cold))
-#define RESTRICT
+#define RESTRICT __restrict__
#define EXPECTED(x) (x)
#define UNEXPECTED(x) (x)
#define ATTR_PRINTF(x,y) __attribute__((format(printf, x, y)))
@@ -144,28 +141,6 @@ typedef int64_t INT64;
#define S64(val) val
#endif
-/* MINGW has adopted the MSVC formatting for 64-bit ints as of gcc 4.4 */
-#if (defined(__MINGW32__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))) || defined(_MSC_VER)
-#define I64FMT "I64"
-#else
-#define I64FMT "ll"
-#endif
-
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#if (PTR64)
-#define SIZETFMT "I64u"
-#else
-#define SIZETFMT "u"
-#endif
-#else
-//#define SIZETFMT "zu"
-#if (PTR64)
-#define SIZETFMT "lu"
-#else
-#define SIZETFMT "u"
-#endif
-#endif
-
#endif
/*
diff --git a/src/emu/netlist/plib/plists.h b/src/emu/netlist/plib/plists.h
index af3521bd7db..dd26cfb963b 100644
--- a/src/emu/netlist/plib/plists.h
+++ b/src/emu/netlist/plib/plists.h
@@ -566,7 +566,7 @@ public:
p = pn + onstr.len();
pn = str.find(onstr, p);
}
- if (p<str.len())
+ if (p < (int) str.len())
{
pstring t = str.substr(p);
if (!ignore_empty || t.len() != 0)
@@ -579,7 +579,7 @@ public:
pstring_list_t temp;
pstring col = "";
- int i = 0;
+ unsigned i = 0;
while (i<str.blen())
{
int p = -1;
@@ -715,6 +715,7 @@ public:
void clear()
{
+#if 0
if (0)
{
unsigned cnt = 0;
@@ -727,6 +728,7 @@ public:
else
printf("phashmap: No elements .. \n");
}
+#endif
m_values.clear();
for (unsigned i=0; i<m_hash.size(); i++)
m_hash[i] = -1;
diff --git a/src/emu/netlist/plib/pparser.h b/src/emu/netlist/plib/pparser.h
index e425af17569..34dfdbfcff3 100644
--- a/src/emu/netlist/plib/pparser.h
+++ b/src/emu/netlist/plib/pparser.h
@@ -138,7 +138,7 @@ private:
pstring m_number_chars_start;
plist_t<pstring> m_tokens;
pstring m_whitespace;
- char m_string;
+ pstring::code_t m_string;
token_id_t m_tok_comment_start;
token_id_t m_tok_comment_end;
diff --git a/src/emu/netlist/plib/pstream.h b/src/emu/netlist/plib/pstream.h
index fdf3c0687d6..af9f939cc6c 100644
--- a/src/emu/netlist/plib/pstream.h
+++ b/src/emu/netlist/plib/pstream.h
@@ -21,7 +21,7 @@
class pstream
{
- P_PREVENT_COPYING(pstream);
+ P_PREVENT_COPYING(pstream)
public:
typedef long unsigned pos_type;
@@ -93,7 +93,7 @@ private:
class pistream : public pstream
{
- P_PREVENT_COPYING(pistream);
+ P_PREVENT_COPYING(pistream)
public:
pistream(unsigned flags) : pstream(flags) {}
@@ -148,7 +148,7 @@ private:
class postream : public pstream
{
- P_PREVENT_COPYING(postream);
+ P_PREVENT_COPYING(postream)
public:
postream(unsigned flags) : pstream(flags) {}
@@ -190,7 +190,7 @@ private:
class pomemstream : public postream
{
- P_PREVENT_COPYING(pomemstream);
+ P_PREVENT_COPYING(pomemstream)
public:
pomemstream();
@@ -214,7 +214,7 @@ private:
class postringstream : public postream
{
- P_PREVENT_COPYING(postringstream );
+ P_PREVENT_COPYING(postringstream )
public:
@@ -242,7 +242,7 @@ private:
class pofilestream : public postream
{
- P_PREVENT_COPYING(pofilestream);
+ P_PREVENT_COPYING(pofilestream)
public:
pofilestream(const pstring &fname);
@@ -267,7 +267,7 @@ private:
class pifilestream : public pistream
{
- P_PREVENT_COPYING(pifilestream);
+ P_PREVENT_COPYING(pifilestream)
public:
pifilestream(const pstring &fname);
@@ -292,7 +292,7 @@ private:
class pimemstream : public pistream
{
- P_PREVENT_COPYING(pimemstream);
+ P_PREVENT_COPYING(pimemstream)
public:
pimemstream(const void *mem, const pos_type len);
@@ -317,7 +317,7 @@ private:
class pistringstream : public pimemstream
{
- P_PREVENT_COPYING(pistringstream);
+ P_PREVENT_COPYING(pistringstream)
public:
pistringstream(const pstring &str) : pimemstream(str.cstr(), str.len()), m_str(str) { }
@@ -333,7 +333,7 @@ private:
class pstream_fmt_writer_t : public pfmt_writer_t<>
{
- P_PREVENT_COPYING(pstream_fmt_writer_t);
+ P_PREVENT_COPYING(pstream_fmt_writer_t)
public:
pstream_fmt_writer_t(postream &strm) : m_strm(strm) {}
diff --git a/src/emu/netlist/plib/pstring.c b/src/emu/netlist/plib/pstring.c
index 47e1c8743e6..00f075d299d 100644
--- a/src/emu/netlist/plib/pstring.c
+++ b/src/emu/netlist/plib/pstring.c
@@ -118,7 +118,7 @@ template<typename F>
const pstring_t<F> pstring_t<F>::substr(int start, int count) const
{
pstring_t ret;
- unsigned alen = len();
+ int alen = (int) len();
if (start < 0)
start = 0;
if (start >= alen)
@@ -148,7 +148,7 @@ const pstring_t<F> pstring_t<F>::ucase() const
{
pstring_t ret = *this;
ret.pcopy(cstr(), blen());
- for (int i=0; i<ret.len(); i++)
+ for (unsigned i=0; i<ret.len(); i++)
ret.m_ptr->str()[i] = toupper((unsigned) ret.m_ptr->str()[i]);
return ret;
}
@@ -159,11 +159,11 @@ int pstring_t<F>::find_first_not_of(const pstring_t &no) const
char *t = m_ptr->str();
unsigned nolen = no.len();
unsigned tlen = len();
- for (int i=0; i < tlen; i++)
+ for (unsigned i=0; i < tlen; i++)
{
char *n = no.m_ptr->str();
bool f = true;
- for (int j=0; j < nolen; j++)
+ for (unsigned j=0; j < nolen; j++)
{
if (F::code(t) == F::code(n))
f = false;
@@ -183,11 +183,11 @@ int pstring_t<F>::find_last_not_of(const pstring_t &no) const
unsigned nolen = no.len();
unsigned tlen = len();
int last_found = -1;
- for (int i=0; i < tlen; i++)
+ for (unsigned i=0; i < tlen; i++)
{
char *n = no.m_ptr->str();
bool f = true;
- for (int j=0; j < nolen; j++)
+ for (unsigned j=0; j < nolen; j++)
{
if (F::code(t) == F::code(n))
f = false;
@@ -251,7 +251,7 @@ const pstring_t<F> pstring_t<F>::rtrim(const pstring_t &ws) const
}
template<typename F>
-const pstring_t<F> pstring_t<F>::rpad(const pstring_t &ws, const int cnt) const
+const pstring_t<F> pstring_t<F>::rpad(const pstring_t &ws, const unsigned cnt) const
{
// FIXME: pstringbuffer ret(*this);
@@ -363,7 +363,7 @@ int pstring_t<F>::find(const pstring_t &search, unsigned start) const
const char *s = search.cstr();
const unsigned startt = std::min(start, tlen);
const char *t = cstr();
- for (int i=0; i<startt; i++)
+ for (unsigned i=0; i<startt; i++)
t += F::codelen(t);
for (int i=0; i <= (int) tlen - (int) startt - (int) slen; i++)
{
@@ -392,7 +392,7 @@ int pstring_t<F>::find(const mem_t *search, unsigned start) const
const char *s = search;
const unsigned startt = std::min(start, tlen);
const char *t = cstr();
- for (int i=0; i<startt; i++)
+ for (unsigned i=0; i<startt; i++)
t += F::codelen(t);
for (int i=0; i <= (int) tlen - (int) startt - (int) slen; i++)
{
@@ -426,7 +426,7 @@ bool pstring_t<F>::endsWith(const pstring_t &arg) const
template<typename F>
bool pstring_t<F>::startsWith(const mem_t *arg) const
{
- int alen = strlen(arg);
+ unsigned alen = strlen(arg);
if (alen > blen())
return false;
else
diff --git a/src/emu/netlist/plib/pstring.h b/src/emu/netlist/plib/pstring.h
index 023e0775b5e..ecd4dd4907e 100644
--- a/src/emu/netlist/plib/pstring.h
+++ b/src/emu/netlist/plib/pstring.h
@@ -145,7 +145,7 @@ public:
const pstring_t rtrim(const pstring_t &ws = " \t\n\r") const;
const pstring_t trim(const pstring_t &ws = " \t\n\r") const { return this->ltrim(ws).rtrim(ws); }
- const pstring_t rpad(const pstring_t &ws, const int cnt) const;
+ const pstring_t rpad(const pstring_t &ws, const unsigned cnt) const;
const pstring_t ucase() const;
@@ -348,7 +348,7 @@ public:
operator pstring() const { return pstring(m_ptr); }
// concatenation operators
- pstringbuffer& operator+=(const UINT8 c) { char buf[2] = { c, 0 }; pcat(buf); return *this; }
+ pstringbuffer& operator+=(const UINT8 c) { UINT8 buf[2] = { c, 0 }; pcat((char *) buf); return *this; }
pstringbuffer& operator+=(const pstring &string) { pcat(string); return *this; }
pstringbuffer& operator+=(const char *string) { pcat(string); return *this; }
diff --git a/src/tools/nltool.c b/src/emu/netlist/prg/nltool.c
index 7ee742e307b..9568ff0bfc0 100644
--- a/src/tools/nltool.c
+++ b/src/emu/netlist/prg/nltool.c
@@ -11,9 +11,9 @@
#include <cstdio>
#ifdef PSTANDALONE
- #if (PSTANDALONE)
+#if (PSTANDALONE)
#define PSTANDALONE_PROVIDED
- #endif
+#endif
#endif
#include "plib/poptions.h"
@@ -30,7 +30,7 @@
#include <ctime>
-#define osd_ticks_t clock_t
+#define osd_ticks_t clock_t
inline osd_ticks_t osd_ticks_per_second() { return CLOCKS_PER_SEC; }
@@ -98,12 +98,12 @@ class tool_options_t : public poptions
public:
tool_options_t() :
poptions(),
- opt_ttr ("t", "time_to_run", 1.0, "time to run the emulation (seconds)", this),
+ opt_ttr ("t", "time_to_run", 1.0, "time to run the emulation (seconds)", this),
opt_name("n", "name", "", "netlist in file to run; default is first one", this),
opt_logs("l", "logs", "", "colon separated list of terminals to log", this),
opt_file("f", "file", "-", "file to process (default is stdin)", this),
opt_type("y", "type", "spice", "spice:eagle", "type of file to be converted: spice,eagle", this),
- opt_cmd ("c", "cmd", "run", "run|convert|listdevices", this),
+ opt_cmd ("c", "cmd", "run", "run|convert|listdevices", this),
opt_inp( "i", "input", "", "input file to process (default is none)", this),
opt_verb("v", "verbose", "be verbose - this produces lots of output", this),
opt_quiet("q", "quiet", "be quiet - no warnings", this),
@@ -113,7 +113,7 @@ public:
poption_double opt_ttr;
poption_str opt_name;
poption_str opt_logs;
- poption_str opt_file;
+ poption_str opt_file;
poption_str_limit opt_type;
poption_str opt_cmd;
poption_str opt_inp;
@@ -211,7 +211,7 @@ public:
{
log().debug("Creating dynamic logs ...\n");
pstring_list_t ll(m_opts ? m_opts->opt_logs() : "" , ":");
- for (int i=0; i < ll.size(); i++)
+ for (unsigned i=0; i < ll.size(); i++)
{
pstring name = "log_" + ll[i];
/*netlist_device_t *nc = */ m_setup->register_dev("LOG", name);
@@ -380,7 +380,7 @@ static void listdevices()
nt.setup().start_devices();
nt.setup().resolve_inputs();
- for (int i=0; i < list.size(); i++)
+ for (unsigned i=0; i < list.size(); i++)
{
netlist::base_factory_t *f = list.value_at(i);
pstring out = pfmt("{1} {2}(<id>")(f->classname(),"-20")(f->name());
@@ -391,7 +391,7 @@ static void listdevices()
d->start_dev();
// get the list of terminals ...
- for (int j=0; j < d->m_terminals.size(); j++)
+ for (unsigned j=0; j < d->m_terminals.size(); j++)
{
pstring inp = d->m_terminals[j];
if (inp.startsWith(d->name() + "."))
diff --git a/src/tools/nlwav.c b/src/emu/netlist/prg/nlwav.c
index 8f9c57c7ac5..8f9c57c7ac5 100644
--- a/src/tools/nlwav.c
+++ b/src/emu/netlist/prg/nlwav.c
diff --git a/src/emu/netlist/solver/nld_ms_gmres.h b/src/emu/netlist/solver/nld_ms_gmres.h
index ab6b17a08e4..5983cb1a968 100644
--- a/src/emu/netlist/solver/nld_ms_gmres.h
+++ b/src/emu/netlist/solver/nld_ms_gmres.h
@@ -190,7 +190,9 @@ ATTR_HOT inline int matrix_solver_GMRES_t<m_N, _storage_N>::vsolve_non_dynamic(c
const nl_double accuracy = this->m_params.m_accuracy;
#if 1
- int mr = std::min((int) iN-1,(int) sqrt(iN));
+ int mr = _storage_N;
+ if (_storage_N > 3 )
+ mr = (int) sqrt(iN);
mr = std::min(mr, this->m_params.m_gs_loops);
int iter = 4;
int gsl = solve_ilu_gmres(new_V, RHS, iter, mr, accuracy);