From a7a5030d9af1b504fd373e5060f66a859cb972dc Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Thu, 1 Oct 2020 19:47:12 -0700 Subject: Fix "fix" for negative literals > 32 bits Overflow of 32-bit Int would cause any negative literal value equal to -(2^(width % 32 - 1)) where width >= 32 to be incorrectly inverted --- .../scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala b/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala index 2ba28ebb..d1520eae 100644 --- a/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala +++ b/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala @@ -17,7 +17,7 @@ object FixAddingNegativeLiterals { * @param width width of the negative number * @return maximum negative number */ - def minNegValue(width: BigInt): BigInt = -(1 << (width.toInt - 1)) + def minNegValue(width: BigInt): BigInt = -(BigInt(1) << (width.toInt - 1)) /** Updates the type of the DoPrim from its arguments (e.g. if is UnknownType) * @param d input DoPrim -- cgit v1.2.3