From e869a5136ddd9c93017e5e8dad1d7ab1eadf081c Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 21 Aug 2008 11:29:11 +0100 Subject: [PATCH] cleaner encoding of Shift instruction in Parser.java --- src/edu/berkeley/fleet/assembler/Parser.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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; -- 1.7.10.4