@@ -74,13 +74,27 @@ abstract class PanamaCIRCTOMEvaluatorValue {
7474 }
7575 def int : PanamaCIRCTOMEvaluatorValuePrimitiveInteger = intOpt.get
7676
77+ def floatOpt : Option [PanamaCIRCTOMEvaluatorValuePrimitiveFloat ] =
78+ this match {
79+ case float : PanamaCIRCTOMEvaluatorValuePrimitiveFloat => Some (float)
80+ case _ => None
81+ }
82+ def float : PanamaCIRCTOMEvaluatorValuePrimitiveFloat = floatOpt.get
83+
7784 def stringOpt : Option [PanamaCIRCTOMEvaluatorValuePrimitiveString ] =
7885 this match {
7986 case string : PanamaCIRCTOMEvaluatorValuePrimitiveString => Some (string)
8087 case _ => None
8188 }
8289 def string : PanamaCIRCTOMEvaluatorValuePrimitiveString = stringOpt.get
8390
91+ def boolOpt : Option [PanamaCIRCTOMEvaluatorValuePrimitiveBool ] =
92+ this match {
93+ case bool : PanamaCIRCTOMEvaluatorValuePrimitiveBool => Some (bool)
94+ case _ => None
95+ }
96+ def bool : PanamaCIRCTOMEvaluatorValuePrimitiveBool = boolOpt.get
97+
8498 def tupleOpt : Option [PanamaCIRCTOMEvaluatorValueTuple ] =
8599 this match {
86100 case tuple : PanamaCIRCTOMEvaluatorValueTuple => Some (tuple)
@@ -169,8 +183,12 @@ object PanamaCIRCTOMEvaluatorValuePrimitive {
169183
170184 if (circt.omAttrIsAIntegerAttr(primitive)) {
171185 new PanamaCIRCTOMEvaluatorValuePrimitiveInteger (circt, value, circt.omIntegerAttrGetInt(primitive))
186+ } else if (circt.mlirAttributeIsAFloat(primitive)) {
187+ new PanamaCIRCTOMEvaluatorValuePrimitiveFloat (circt, value, primitive)
172188 } else if (circt.mlirAttributeIsAString(primitive)) {
173189 new PanamaCIRCTOMEvaluatorValuePrimitiveString (circt, value, primitive)
190+ } else if (circt.mlirAttributeIsABool(primitive)) {
191+ new PanamaCIRCTOMEvaluatorValuePrimitiveBool (circt, value, primitive)
174192 } else {
175193 circt.mlirAttributeDump(primitive)
176194 throw new Exception (" unknown OMEvaluatorValuePrimitive attribute, dumped" )
@@ -180,7 +198,9 @@ object PanamaCIRCTOMEvaluatorValuePrimitive {
180198abstract class PanamaCIRCTOMEvaluatorValuePrimitive extends PanamaCIRCTOMEvaluatorValue {
181199 override def toString : String = this match {
182200 case v : PanamaCIRCTOMEvaluatorValuePrimitiveInteger => v.toString
201+ case v : PanamaCIRCTOMEvaluatorValuePrimitiveFloat => v.toString
183202 case v : PanamaCIRCTOMEvaluatorValuePrimitiveString => v.toString
203+ case v : PanamaCIRCTOMEvaluatorValuePrimitiveBool => v.toString
184204 }
185205}
186206
@@ -193,6 +213,15 @@ class PanamaCIRCTOMEvaluatorValuePrimitiveInteger private[chisel3] (
193213 override def toString : String = integer.toString
194214}
195215
216+ class PanamaCIRCTOMEvaluatorValuePrimitiveFloat private [chisel3] (
217+ val circt : PanamaCIRCT ,
218+ val value : OMEvaluatorValue ,
219+ val primitive : MlirAttribute )
220+ extends PanamaCIRCTOMEvaluatorValuePrimitive {
221+ val double : Double = circt.mlirFloatAttrGetValueDouble(primitive)
222+ override def toString : String = double.toString
223+ }
224+
196225class PanamaCIRCTOMEvaluatorValuePrimitiveString private [chisel3] (
197226 val circt : PanamaCIRCT ,
198227 val value : OMEvaluatorValue ,
@@ -201,6 +230,15 @@ class PanamaCIRCTOMEvaluatorValuePrimitiveString private[chisel3] (
201230 override def toString : String = circt.mlirStringAttrGetValue(primitive)
202231}
203232
233+ class PanamaCIRCTOMEvaluatorValuePrimitiveBool private [chisel3] (
234+ val circt : PanamaCIRCT ,
235+ val value : OMEvaluatorValue ,
236+ val primitive : MlirAttribute )
237+ extends PanamaCIRCTOMEvaluatorValuePrimitive {
238+ val boolean : Boolean = circt.mlirBoolAttrGetValue(primitive)
239+ override def toString : String = boolean.toString
240+ }
241+
204242class PanamaCIRCTOMEvaluatorValueObject private [chisel3] (val circt : PanamaCIRCT , val value : OMEvaluatorValue )
205243 extends PanamaCIRCTOMEvaluatorValue {
206244 def apply (name : String ): PanamaCIRCTOMEvaluatorValue = field(name)
0 commit comments