Get offsets right for non-zero and reversed part selects.
Signed-off-by: Stephen Williams <steve@icarus.com>
This commit is contained in:
parent
87e813766a
commit
9d2dd782c0
10
elab_expr.cc
10
elab_expr.cc
|
|
@ -1264,8 +1264,14 @@ NetExpr* PEIdent::elaborate_expr_net_idx_up_(Design*des, NetScope*scope,
|
|||
return ss;
|
||||
}
|
||||
|
||||
if (long offset = net->lsi())
|
||||
base = make_add_expr(base, 0-offset);
|
||||
if (net->msi() > net->lsi()) {
|
||||
if (long offset = net->lsi())
|
||||
base = make_add_expr(base, 0-offset);
|
||||
} else {
|
||||
long vwid = net->lsi() - net->msi() + 1;
|
||||
long offset = net->msi();
|
||||
base = make_sub_expr(vwid-offset-wid, base);
|
||||
}
|
||||
|
||||
NetESelect*ss = new NetESelect(net, base, wid);
|
||||
ss->set_line(*this);
|
||||
|
|
|
|||
Loading…
Reference in New Issue