aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/Visitor.scala10
-rw-r--r--src/main/stanza/ir-utils.stanza5
2 files changed, 11 insertions, 4 deletions
diff --git a/src/main/scala/firrtl/Visitor.scala b/src/main/scala/firrtl/Visitor.scala
index e9bc633c..56d3bbe7 100644
--- a/src/main/scala/firrtl/Visitor.scala
+++ b/src/main/scala/firrtl/Visitor.scala
@@ -164,14 +164,20 @@ class Visitor(val fullFilename: String) extends FIRRTLBaseVisitor[AST]
val (width, value) =
if (ctx.getChildCount > 4)
(IntWidth(string2BigInt(ctx.IntLit(0).getText)), string2BigInt(ctx.IntLit(1).getText))
- else (UnknownWidth(), string2BigInt(ctx.IntLit(0).getText))
+ else {
+ val bigint = string2BigInt(ctx.IntLit(0).getText)
+ (IntWidth(BigInt(bigint.bitLength)),bigint)
+ }
UIntValue(value, width)
}
case "SInt" => {
val (width, value) =
if (ctx.getChildCount > 4)
(IntWidth(string2BigInt(ctx.IntLit(0).getText)), string2BigInt(ctx.IntLit(1).getText))
- else (UnknownWidth(), string2BigInt(ctx.IntLit(0).getText))
+ else {
+ val bigint = string2BigInt(ctx.IntLit(0).getText)
+ (IntWidth(BigInt(bigint.bitLength + 1)),bigint)
+ }
SIntValue(value, width)
}
case "validif(" => ValidIf(visitExp(ctx.exp(0)), visitExp(ctx.exp(1)), UnknownType())
diff --git a/src/main/stanza/ir-utils.stanza b/src/main/stanza/ir-utils.stanza
index 24149649..3fc8b155 100644
--- a/src/main/stanza/ir-utils.stanza
+++ b/src/main/stanza/ir-utils.stanza
@@ -395,8 +395,9 @@ defmethod print (o:OutputStream, e:Expression) :
(e:SubField) : print-all(o, [exp(e) "." name(e)])
(e:SubIndex) : print-all(o, [exp(e) "[" value(e) "]"])
(e:SubAccess) : print-all(o, [exp(e) "[" index(e) "]"])
- (e:UIntValue) : print-all(o, ["UInt(" value(e) ")"])
- (e:SIntValue) : print-all(o, ["SInt(" value(e) ")"])
+ (e:UIntValue) :
+ print-all(o, ["UInt<" width(e) ">(" value(e) ")"])
+ (e:SIntValue) : print-all(o, ["SInt<" width(e) ">(" value(e) ")"])
(e:DoPrim) :
print-all(o, [op(e) "("])
print-all(o, join(concat(args(e), consts(e)), ", "))