From: adam Date: Thu, 21 Aug 2008 10:29:11 +0000 (+0100) Subject: cleaner encoding of Shift instruction in Parser.java X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=e869a5136ddd9c93017e5e8dad1d7ab1eadf081c;p=fleet.git cleaner encoding of Shift instruction in Parser.java --- diff --git a/src/edu/berkeley/fleet/assembler/Parser.java b/src/edu/berkeley/fleet/assembler/Parser.java index fe59b8a..5843110 100644 --- a/src/edu/berkeley/fleet/assembler/Parser.java +++ b/src/edu/berkeley/fleet/assembler/Parser.java @@ -12,6 +12,7 @@ import static edu.berkeley.fleet.api.Instruction.*; import static edu.berkeley.fleet.api.Instruction.Set.*; import static edu.berkeley.fleet.api.Predicate.*; import edu.berkeley.fleet.two.*; +import static edu.berkeley.fleet.two.FleetTwoFleet.SHIFT; import edu.berkeley.fleet.fpga.*; import edu.berkeley.fleet.interpreter.*; import java.util.*; @@ -431,9 +432,14 @@ public class Parser { if (FleetTwoFleet.isSmallEnoughToFit(literal)) { cb.add(new Set(dock, looping, predicate, SetDest.DataLatch, (literal))); } else { - // FIXME bitwidth hardwired! - cb.add(new Shift(dock, looping, predicate, new BitVector(37).set(getField(36, 19, literal)))); - cb.add(new Shift(dock, looping, predicate, new BitVector(37).set(getField(18, 0, literal)))); + int counter = 0; + while(counter < dock.getShip().getFleet().getWordWidth()) counter += SHIFT.valmaskwidth; + while(counter > 0) { + cb.add(new Shift(dock, looping, predicate, + new BitVector(dock.getShip().getFleet().getWordWidth()) + .set(getField(counter-1, counter-SHIFT.valmaskwidth, literal)))); + counter -= SHIFT.valmaskwidth; + } } continue;