return get_usv();
}
-sv_shape_t* state_t::get_shape(reg_t reg)
+sv_shape_t* state_t::get_shape(reg_t reg, bool pred)
{
if (prv == PRV_M || prv == PRV_S || reg == 0) {
return NULL;
}
for (int i = 0; i < 3; i++) {
- if (remap[i].regidx == reg) {
+ if (remap[i].regidx == reg && remap[i].pred == pred) {
return &shape[i];
}
}
state.remap[0].regidx = get_field(val, SV_REMAP_REGIDX0);
state.remap[1].regidx = get_field(val, SV_REMAP_REGIDX1);
state.remap[2].regidx = get_field(val, SV_REMAP_REGIDX2);
+ state.remap[0].pred = get_field(val, SV_REMAP_PRED0);
+ state.remap[1].pred = get_field(val, SV_REMAP_PRED1);
+ state.remap[2].pred = get_field(val, SV_REMAP_PRED2);
state.remap[0].shape = get_field(val, SV_REMAP_SHAPE0);
state.remap[1].shape = get_field(val, SV_REMAP_SHAPE1);
state.remap[2].shape = get_field(val, SV_REMAP_SHAPE2);