Browse Source

Update behavior of 'P'

master
cancel 6 years ago
parent
commit
9062f0ea05
  1. 13
      sim.c

13
sim.c

@ -770,8 +770,8 @@ BEGIN_DUAL_PHASE_0(offset)
coords[0] = 0; // y coords[0] = 0; // y
coords[1] = 1; // x coords[1] = 1; // x
if (IS_AWAKE && DUAL_IS_ACTIVE) { if (IS_AWAKE && DUAL_IS_ACTIVE) {
coords[0] = (I32)usz_clamp(index_of(PEEK(0, -1)), 0, 16); coords[0] = (I32)index_of(PEEK(0, -1));
coords[1] = (I32)usz_clamp(index_of(PEEK(0, -2)) + 1, 1, 16); coords[1] = (I32)index_of(PEEK(0, -2)) + 1;
STORE(coords); STORE(coords);
} }
BEGIN_DUAL_PORTS BEGIN_DUAL_PORTS
@ -797,12 +797,12 @@ BEGIN_DUAL_PHASE_0(push)
I32 write_val_x[1]; I32 write_val_x[1];
write_val_x[0] = 0; write_val_x[0] = 0;
if (IS_AWAKE && DUAL_IS_ACTIVE) { if (IS_AWAKE && DUAL_IS_ACTIVE) {
Usz len = usz_clamp(index_of(PEEK(0, -1)), 1, 16); Usz len = index_of(PEEK(0, -1)) + 1;
Usz key = index_of(PEEK(0, -2)); Usz key = index_of(PEEK(0, -2));
write_val_x[0] = (I32)(key % len); write_val_x[0] = (I32)(key % len);
STORE(write_val_x); STORE(write_val_x);
for (Isz i = 0; i < write_val_x[0]; ++i) { for (Usz i = 0; i < len; ++i) {
LOCK(1, i); LOCK(1, (Isz)i);
} }
} }
BEGIN_DUAL_PORTS BEGIN_DUAL_PORTS
@ -813,7 +813,8 @@ BEGIN_DUAL_PHASE_0(push)
END_PORTS END_PORTS
END_PHASE END_PHASE
BEGIN_DUAL_PHASE_1(push) BEGIN_DUAL_PHASE_1(push)
STOP_IF_NOT_BANGED; REALIZE_DUAL;
STOP_IF_DUAL_INACTIVE;
I32 write_val_x[1]; I32 write_val_x[1];
if (!LOAD(write_val_x)) { if (!LOAD(write_val_x)) {
write_val_x[0] = 0; write_val_x[0] = 0;

Loading…
Cancel
Save