parent
f11c642cd6
commit
1179c6551f
|
@ -1546,7 +1546,7 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{
|
||||||
val manAggregate = input.value.mantissa @@ input.scrap
|
val manAggregate = input.value.mantissa @@ input.scrap
|
||||||
val expBase = muxDouble[UInt](input.format)(exponentF64Subnormal + 1)(exponentF32Subnormal + 1)
|
val expBase = muxDouble[UInt](input.format)(exponentF64Subnormal + 1)(exponentF32Subnormal + 1)
|
||||||
val expDif = expBase -^ input.value.exponent
|
val expDif = expBase -^ input.value.exponent
|
||||||
val expSubnormal = !expDif.msb
|
val expSubnormal = !input.value.special && !expDif.msb
|
||||||
var discardCount = (expSubnormal ? expDif.resize(log2Up(p.internalMantissaSize) bits) | U(0))
|
var discardCount = (expSubnormal ? expDif.resize(log2Up(p.internalMantissaSize) bits) | U(0))
|
||||||
if (p.withDouble) when(input.format === FpuFormat.FLOAT) {
|
if (p.withDouble) when(input.format === FpuFormat.FLOAT) {
|
||||||
discardCount \= discardCount + 29
|
discardCount \= discardCount + 29
|
||||||
|
@ -1577,10 +1577,11 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{
|
||||||
val adderMantissa = input.value.mantissa(mantissaRange) & (mantissaIncrement ? ~(exactMask.trim(1) >> 1) | input.value.mantissa(mantissaRange).maxValue)
|
val adderMantissa = input.value.mantissa(mantissaRange) & (mantissaIncrement ? ~(exactMask.trim(1) >> 1) | input.value.mantissa(mantissaRange).maxValue)
|
||||||
val adderRightOp = (mantissaIncrement ? (exactMask >> 1)| U(0)).resize(p.internalMantissaSize bits)
|
val adderRightOp = (mantissaIncrement ? (exactMask >> 1)| U(0)).resize(p.internalMantissaSize bits)
|
||||||
val adder = KeepAttribute(KeepAttribute(input.value.exponent @@ adderMantissa) + KeepAttribute(adderRightOp) + KeepAttribute(U(mantissaIncrement)))
|
val adder = KeepAttribute(KeepAttribute(input.value.exponent @@ adderMantissa) + KeepAttribute(adderRightOp) + KeepAttribute(U(mantissaIncrement)))
|
||||||
|
val masked = adder & ~((exactMask >> 1).resize(p.internalMantissaSize).resize(widthOf(adder)))
|
||||||
math.special := input.value.special
|
math.special := input.value.special
|
||||||
math.sign := input.value.sign
|
math.sign := input.value.sign
|
||||||
math.exponent := adder(p.internalMantissaSize, p.internalExponentSize bits)
|
math.exponent := masked(p.internalMantissaSize, p.internalExponentSize bits)
|
||||||
math.mantissa := adder(0, p.internalMantissaSize bits)
|
math.mantissa := masked(0, p.internalMantissaSize bits)
|
||||||
|
|
||||||
val patched = CombInit(math)
|
val patched = CombInit(math)
|
||||||
val nx,of,uf = False
|
val nx,of,uf = False
|
||||||
|
|
Loading…
Reference in New Issue