Refactor store for real/string

This commit is contained in:
Cary R 2020-08-16 19:22:18 -07:00
parent aa013a0ef0
commit 505ee1a96c
1 changed files with 21 additions and 11 deletions

View File

@ -6226,16 +6226,32 @@ bool of_STORE_QOBJ_V(vthread_t thr, vvp_code_t cp)
return store_qobj<vvp_vector4_t, vvp_queue_vec4>(thr, cp, cp->bit_idx[1]); return store_qobj<vvp_vector4_t, vvp_queue_vec4>(thr, cp, cp->bit_idx[1]);
} }
bool of_STORE_REAL(vthread_t thr, vvp_code_t cp) static void vvp_send(vthread_t thr, vvp_net_ptr_t ptr, double&val)
{ {
double val = thr->pop_real(); vvp_send_real(ptr, val, thr->wt_context);
}
static void vvp_send(vthread_t thr, vvp_net_ptr_t ptr, string&val)
{
vvp_send_string(ptr, val, thr->wt_context);
}
template <typename ELEM>
static bool store(vthread_t thr, vvp_code_t cp)
{
ELEM val;
pop_value(thr, val, 0);
/* set the value into port 0 of the destination. */ /* set the value into port 0 of the destination. */
vvp_net_ptr_t ptr (cp->net, 0); vvp_net_ptr_t ptr (cp->net, 0);
vvp_send_real(ptr, val, thr->wt_context); vvp_send(thr, ptr, val);
return true; return true;
} }
bool of_STORE_REAL(vthread_t thr, vvp_code_t cp)
{
return store<double>(thr, cp);
}
/* /*
* %store/reala <var-label> <index> * %store/reala <var-label> <index>
*/ */
@ -6252,13 +6268,7 @@ bool of_STORE_REALA(vthread_t thr, vvp_code_t cp)
bool of_STORE_STR(vthread_t thr, vvp_code_t cp) bool of_STORE_STR(vthread_t thr, vvp_code_t cp)
{ {
/* set the value into port 0 of the destination. */ return store<string>(thr, cp);
vvp_net_ptr_t ptr (cp->net, 0);
string val = thr->pop_str();
vvp_send_string(ptr, val, thr->wt_context);
return true;
} }
/* /*