File tree Expand file tree Collapse file tree 2 files changed +37
-0
lines changed
unittests/Dialect/OM/Evaluator Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -171,6 +171,9 @@ FailureOr<evaluator::EvaluatorValuePtr> circt::om::Evaluator::getOrCreateValue(
171171 ObjectFieldOp>([&](auto op) {
172172 return getPartiallyEvaluatedValue (op.getType (), loc);
173173 })
174+ .Case <TupleGetOp>([&](auto op) {
175+ return evaluateTupleGet (op, actualParams, loc);
176+ })
174177 .Case <ObjectOp>([&](auto op) {
175178 return getPartiallyEvaluatedValue (op.getType (), op.getLoc ());
176179 })
Original file line number Diff line number Diff line change @@ -1189,6 +1189,40 @@ TEST(EvaluatorTests, ListConcatField) {
11891189 .getValue ());
11901190}
11911191
1192+ TEST (EvaluatorTests, TupleGet) {
1193+ StringRef mod = " om.class @Tuple() -> (val: !om.string) {"
1194+ " %int = om.constant 1 : i1"
1195+ " %str = om.constant \" foo\" : !om.string"
1196+ " %tuple = om.tuple_create %int, %str : i1, !om.string"
1197+ " %val = om.tuple_get %tuple[1] : tuple<i1, !om.string>"
1198+ " om.class.fields %val : !om.string"
1199+ " }" ;
1200+
1201+ DialectRegistry registry;
1202+ registry.insert <OMDialect>();
1203+
1204+ MLIRContext context (registry);
1205+ context.getOrLoadDialect <OMDialect>();
1206+
1207+ OwningOpRef<ModuleOp> owning =
1208+ parseSourceString<ModuleOp>(mod, ParserConfig (&context));
1209+
1210+ Evaluator evaluator (owning.release ());
1211+
1212+ auto result = evaluator.instantiate (StringAttr::get (&context, " Tuple" ), {});
1213+
1214+ ASSERT_TRUE (succeeded (result));
1215+
1216+ auto fieldValue = llvm::cast<evaluator::ObjectValue>(result.value ().get ())
1217+ ->getField (" val" )
1218+ .value ();
1219+
1220+ ASSERT_EQ (" foo" , llvm::cast<evaluator::AttributeValue>(fieldValue.get ())
1221+ ->getAs <StringAttr>()
1222+ .getValue ()
1223+ .str ());
1224+ }
1225+
11921226TEST (EvaluatorTests, NestedReferenceValue) {
11931227 StringRef mod =
11941228 " om.class @Empty() {"
You can’t perform that action at this time.
0 commit comments