parent
dc15fa965b
commit
694a6ed4a1
|
|
@ -98,11 +98,9 @@ extern bool of_JOIN(vthread_t thr, vvp_code_t code);
|
|||
extern bool of_LOAD_AV(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_AVP0(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_AVX_P(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_NX(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_VEC(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_VP0(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_WR(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_X(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOAD_XP(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_LOADI_WR(vthread_t thr, vvp_code_t code);
|
||||
extern bool of_MOD(vthread_t thr, vvp_code_t code);
|
||||
|
|
|
|||
|
|
@ -141,11 +141,9 @@ const static struct opcode_table_s opcode_table[] = {
|
|||
{ "%load/av",of_LOAD_AV,3, {OA_BIT1, OA_ARR_PTR, OA_BIT2} },
|
||||
{ "%load/avp0",of_LOAD_AVP0,3, {OA_BIT1, OA_ARR_PTR, OA_BIT2} },
|
||||
{ "%load/avx.p",of_LOAD_AVX_P,3,{OA_BIT1, OA_ARR_PTR, OA_BIT2} },
|
||||
{ "%load/nx",of_LOAD_NX,3, {OA_BIT1, OA_VPI_PTR, OA_BIT2} },
|
||||
{ "%load/v", of_LOAD_VEC,3, {OA_BIT1, OA_FUNC_PTR, OA_BIT2} },
|
||||
{ "%load/vp0",of_LOAD_VP0,3,{OA_BIT1, OA_FUNC_PTR, OA_BIT2} },
|
||||
{ "%load/wr",of_LOAD_WR,2, {OA_BIT1, OA_VPI_PTR, OA_BIT2} },
|
||||
{ "%load/x", of_LOAD_X, 3, {OA_BIT1, OA_FUNC_PTR, OA_BIT2} },
|
||||
{ "%load/x.p",of_LOAD_XP, 3,{OA_BIT1, OA_FUNC_PTR, OA_BIT2} },
|
||||
{ "%loadi/wr",of_LOADI_WR,3,{OA_BIT1, OA_NUMBER, OA_BIT2} },
|
||||
{ "%mod", of_MOD, 3, {OA_BIT1, OA_BIT2, OA_NUMBER} },
|
||||
|
|
|
|||
|
|
@ -429,12 +429,6 @@ This instruction is similar to %load/av, but it loads only a single
|
|||
bit, and the <index> is the selector for the bit to use. If <index> is
|
||||
out of range, then x is loaded.
|
||||
|
||||
* %load/nx <bit>, <vpi-label>, <idx>
|
||||
|
||||
This instruction load a value from a .net object bit. Since .net
|
||||
objects don't really exist (they are only named indirection into the
|
||||
netlist) this instruction indexes into the .net list of bits.
|
||||
|
||||
* %load/v <bit>, <functor-label>, <wid>
|
||||
|
||||
This instruction loads a vector value from the given functor node into
|
||||
|
|
@ -461,7 +455,6 @@ small vector with a large immediate offset indexing an array.
|
|||
This instruction reads a real value from the vpi-like object to a word
|
||||
register.
|
||||
|
||||
* %load/x <bit>, <functor-label>, <idx>
|
||||
* %load/x.p <bit>, <functor-label>, <idx>
|
||||
|
||||
This is an indexed load. It uses the contents of the specified index
|
||||
|
|
|
|||
|
|
@ -2441,37 +2441,6 @@ bool of_LOAD_AVX_P(vthread_t thr, vvp_code_t cp)
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* %load/nx <bit>, <vpi-label>, <idx> ; Load net/indexed.
|
||||
*
|
||||
* cp->bit_idx[0] contains the <bit> value, an index into the thread
|
||||
* bit register.
|
||||
*
|
||||
* cp->bin_idx[1] is the <idx> value from the words array.
|
||||
*
|
||||
* cp->handle is the linked reference to the __vpiSignal that we are
|
||||
* to read from.
|
||||
*/
|
||||
bool of_LOAD_NX(vthread_t thr, vvp_code_t cp)
|
||||
{
|
||||
assert(cp->bit_idx[0] >= 4);
|
||||
assert(cp->bit_idx[1] < 4);
|
||||
assert(cp->handle->vpi_type->type_code == vpiNet);
|
||||
|
||||
struct __vpiSignal*sig =
|
||||
reinterpret_cast<struct __vpiSignal*>(cp->handle);
|
||||
|
||||
unsigned idx = thr->words[cp->bit_idx[1]].w_int;
|
||||
|
||||
vvp_fun_signal_vec*fun = dynamic_cast<vvp_fun_signal_vec*>(sig->node->fun);
|
||||
assert(sig != 0);
|
||||
|
||||
vvp_bit4_t val = fun->value(idx);
|
||||
thr_put_bit(thr, cp->bit_idx[0], val);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* %load/v <bit>, <label>, <wid>
|
||||
*
|
||||
* Implement the %load/v instruction. Load the vector value of the
|
||||
|
|
@ -2593,7 +2562,7 @@ bool of_LOAD_WR(vthread_t thr, vvp_code_t cp)
|
|||
*
|
||||
* <bit> is the destination thread bit and must be >= 4.
|
||||
*/
|
||||
bool of_LOAD_X(vthread_t thr, vvp_code_t cp)
|
||||
static bool of_LOAD_X(vthread_t thr, vvp_code_t cp)
|
||||
{
|
||||
// <bit> is the thread bit to load
|
||||
assert(cp->bit_idx[0] >= 4);
|
||||
|
|
|
|||
Loading…
Reference in New Issue