From 30279f29431320df52ac5a0cc2297dffb4fee75f Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 13 Apr 2008 03:28:12 +0100 Subject: [PATCH] use Mask.signExtend() --- src/edu/berkeley/fleet/ies44/InstructionEncoder.java | 3 +-- src/edu/berkeley/fleet/util/Mask.java | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java b/src/edu/berkeley/fleet/ies44/InstructionEncoder.java index 2a726ee..c533f7c 100644 --- a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java +++ b/src/edu/berkeley/fleet/ies44/InstructionEncoder.java @@ -120,8 +120,7 @@ public abstract class InstructionEncoder { else if (LITERAL_LOW_ONE.get(inst)) literal = BOT_HALF_ONE.set(TOP_HALF_LITERAL.setval(0, literal)); else if (LITERAL_HIGH_ZERO.get(inst)) literal = BOT_HALF_LITERAL.setval(0, literal); else if (LITERAL_HIGH_ONE.get(inst)) literal = TOP_HALF_ONE.set(BOT_HALF_LITERAL.setval(0, literal)); - if ((literal & (1L<<(WIDTH_WORD-1))) != 0) literal |= (-1L << WIDTH_WORD); - return new Instruction.Literal(name, dl, predicate, literal); + return new Instruction.Literal(name, dl, predicate, Mask.signExtend(literal, WIDTH_WORD)); } if (FLAGS.get(inst)) return new Instruction.SetFlags(name, dl, predicate, (int)FLAGS_A.getval(inst), (int)FLAGS_B.getval(inst)); diff --git a/src/edu/berkeley/fleet/util/Mask.java b/src/edu/berkeley/fleet/util/Mask.java index 4ed743c..6b9d7e0 100644 --- a/src/edu/berkeley/fleet/util/Mask.java +++ b/src/edu/berkeley/fleet/util/Mask.java @@ -62,4 +62,10 @@ public class Mask { this.valmaskmin = valmaskmin; } + public static long signExtend(long input, int wordWidth) { + if ((input & (1L << (wordWidth-1)))!=0) + input |= (-1L) << wordWidth; + return input; + } + } \ No newline at end of file -- 1.7.10.4