Skip to content

Commit fb32d19

Browse files
committed
missing conversion to global offsets
1 parent cf4036b commit fb32d19

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

chpsim.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3145,6 +3145,10 @@ expr_multires ChpSim::varStruct (struct chpsimderef *d)
31453145
int off = computeOffset (d) - d->offset;
31463146
int off_i = d->offset + off*sc.numInts();
31473147
int off_b = d->width + off*sc.numBools();
3148+
3149+
off_i = getGlobalOffset (off_i, 1);
3150+
off_b = getGlobalOffset (off_b, 0);
3151+
31483152
res.fillValue (_sc, off_i, off_b);
31493153
}
31503154
return res;
@@ -4082,9 +4086,10 @@ int ChpSim::_structure_assign (struct chpsimderef *d, expr_multires *v, void *ca
40824086
struct_len = 3*(ts.numInts() + ts.numBools());
40834087
for (int i=0; i < struct_len/3; i++) {
40844088
#if 0
4085-
printf ("%d (%d:w=%d) := %lu (w=%d)\n",
4089+
printf ("[%d] %d (%d:w=%d) := %lu (w=%d)\n",
4090+
i,
40864091
struct_info[3*i], struct_info[3*i+1],
4087-
struct_info[3*i+2], v->v[i].v, v->v[i].width);
4092+
struct_info[3*i+2], v->v[i].getVal(0), v->v[i].getWidth());
40884093
#endif
40894094
int off = getGlobalOffset (struct_info[3*i],
40904095
struct_info[3*i+1] == 2 ?

state.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,19 @@ void expr_multires::setAllWidths (int width)
354354
}
355355
}
356356

357+
void expr_multires::hexPrint (FILE *fp) const
358+
{
359+
fprintf (fp, "{");
360+
for (int i=0; i < nvals; i++) {
361+
v[i].hexPrint (fp);
362+
fprintf (fp, ":w%d", v[i].getWidth());
363+
if (i != nvals-1) {
364+
fprintf (fp, ", ");
365+
}
366+
}
367+
fprintf (fp, "}");
368+
}
369+
357370
void expr_multires::setField (int idx, expr_multires *val)
358371
{
359372
Assert (_d, "Hmm");

state.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ class expr_multires {
138138

139139
BigInt allbits () const;
140140

141+
void hexPrint (FILE *fp) const;
142+
141143
private:
142144
void _delete_objects () {
143145
if (nvals > 0) {

0 commit comments

Comments
 (0)