add f64 redirection to sv_proc_t
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 27 Oct 2018 03:38:37 +0000 (04:38 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 27 Oct 2018 03:38:37 +0000 (04:38 +0100)
riscv/sv_insn_redirect.cc
riscv/sv_insn_redirect.h

index 5eb4f07f92f9195ce031b52dc410c5d43d4a869c..4db6ca614876f0b4c6ca13ab0ef355f547d13db1 100644 (file)
@@ -154,7 +154,7 @@ reg_t (sv_proc_t::READ_REG)(reg_spec_t const& spec)
     {
         ndata = data >> (shift*bitwidth); // gets element within the reg-block
         ndata &= ((1UL<<bitwidth)-1UL); // masks off the right bits
-        fprintf(stderr, "readreg %lx bitwidth %d offs %d shift %d %lx->%lx\n",
+        fprintf(stderr, "readreg %ld bitwidth %d offs %d shift %d %lx->%lx\n",
                         spec.reg, bitwidth, offs, shift, data, ndata);
     }
     return ndata;
@@ -698,3 +698,70 @@ sv_reg_t (sv_proc_t::mulhu)(sv_reg_t const& a, sv_reg_t const& b)
 }
 
 
+float64_t (sv_proc_t::f64_add)( float64_t a, float64_t b )
+{
+    return ::f64_add(a, b);
+}
+
+
+float64_t (sv_proc_t::f64_sub)( float64_t a, float64_t b )
+{
+    return ::f64_sub(a, b);
+}
+
+float64_t (sv_proc_t::f64_mul)( float64_t a, float64_t b )
+{
+    return ::f64_mul(a, b);
+}
+
+float64_t (sv_proc_t::f64_mulAdd)( float64_t a, float64_t b , float64_t c)
+{
+    return ::f64_mulAdd(a, b, c);
+}
+
+float64_t (sv_proc_t::f64_div)( float64_t a, float64_t b )
+{
+    return ::f64_div(a, b);
+}
+
+float64_t (sv_proc_t::f64_rem)( float64_t a, float64_t b )
+{
+    return ::f64_rem(a, b);
+}
+
+float64_t (sv_proc_t::f64_sqrt)( float64_t a )
+{
+    return ::f64_sqrt(a);
+}
+
+bool (sv_proc_t::f64_eq)( float64_t a, float64_t b )
+{
+    return ::f64_eq(a, b);
+}
+
+bool (sv_proc_t::f64_le)( float64_t a, float64_t b )
+{
+    return ::f64_le(a, b);
+}
+
+bool (sv_proc_t::f64_lt)( float64_t a, float64_t b )
+{
+    return ::f64_lt(a, b);
+}
+
+bool (sv_proc_t::f64_eq_signaling)( float64_t a, float64_t b )
+{
+    return ::f64_eq_signaling(a, b);
+}
+
+bool (sv_proc_t::f64_le_quiet)( float64_t a, float64_t b )
+{
+    return ::f64_le_quiet(a, b);
+}
+
+bool (sv_proc_t::f64_lt_quiet)( float64_t a, float64_t b )
+{
+    return ::f64_lt_quiet(a, b);
+}
+
+
index 11537f34711a616350357120dcff55fed657d89b..6df0e00de661be6b0792d3b792662aedc1c3d755 100644 (file)
@@ -212,6 +212,21 @@ public:
     sv_reg_t (mulhu)(sv_reg_t const& a, sv_reg_t const& b);
     sv_sreg_t (mulh)(sv_sreg_t const& a, sv_sreg_t const& b);
 
+    float64_t f64_add( float64_t, float64_t );
+    float64_t f64_sub( float64_t, float64_t );
+    float64_t f64_mul( float64_t, float64_t );
+    float64_t f64_mulAdd( float64_t, float64_t, float64_t );
+    float64_t f64_div( float64_t, float64_t );
+    float64_t f64_rem( float64_t, float64_t );
+    float64_t f64_sqrt( float64_t );
+    bool f64_eq( float64_t, float64_t );
+    bool f64_le( float64_t, float64_t );
+    bool f64_lt( float64_t, float64_t );
+    bool f64_eq_signaling( float64_t, float64_t );
+    bool f64_le_quiet( float64_t, float64_t );
+    bool f64_lt_quiet( float64_t, float64_t );
+
+
 
 #include "sv_insn_decl.h"
 };