From e52685f2e9270a25a53834d87893836255cddd68 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Wed, 25 Nov 2015 20:52:30 -0800 Subject: [PATCH] Fix LoadGen zero flag --- uncore/src/main/scala/amoalu.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/uncore/src/main/scala/amoalu.scala b/uncore/src/main/scala/amoalu.scala index 087e81c4..6f083e9f 100644 --- a/uncore/src/main/scala/amoalu.scala +++ b/uncore/src/main/scala/amoalu.scala @@ -40,8 +40,9 @@ class LoadGen(typ: UInt, addr: UInt, dat: UInt, zero: Bool, maxSize: Int) { for (i <- log2Up(maxSize)-1 to logMinSize by -1) { val pos = 8 << i val shifted = Mux(addr(i), res(2*pos-1,pos), res(pos-1,0)) - val zeroed = if (i > 0) shifted else Mux(zero, UInt(0), shifted) - res = Cat(Mux(t.size === UInt(i), Fill(8*maxSize-pos, signed && zeroed(pos-1)), res(8*maxSize-1,pos)), zeroed) + val doZero = Bool(i == 0) && zero + val zeroed = Mux(doZero, UInt(0), shifted) + res = Cat(Mux(t.size === UInt(i) || doZero, Fill(8*maxSize-pos, signed && zeroed(pos-1)), res(8*maxSize-1,pos)), zeroed) } res }