MLIRについて勉強している。うーん、どうしてもPassManagerが適用されない。
-debug
によりPassを表示させてみても、どうみてもPassが適用されない。
toy-ch3
を-debug
オプションで表示させてみると、ちゃんとPassが適用されている。
* Pattern SimplifyRedundantTranspose : 'toy.transpose -> ()' { Trying to match "SimplifyRedundantTranspose" ** Replace : 'toy.transpose'(0x60000146c090) "SimplifyRedundantTranspose" result 1 } -> success : pattern applied successfully
これはどうやって登録されているんだ?Toy-Ch3との比較を行っているがどうしてもわからない...
Args: ./bin/mysv -debug -opt --emit=mlir ../mlir/examples/mysv/test/assign_ops2.sv Load new dialect in Context builtin ImplicitTypeIDRegistry::lookupOrInsert(mlir::SubElementTypeInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::ShapedType) ImplicitTypeIDRegistry::lookupOrInsert(mlir::MemRefLayoutAttrInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::SubElementAttrInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::ElementsAttr) ImplicitTypeIDRegistry::lookupOrInsert(mlir::SymbolOpInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpAsmOpInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::RegionKindInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::CastOpInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::MemoryEffectOpInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpAsmDialectInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::AffineBinaryOpExprStorage) ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::AffineConstantExprStorage) ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::AffineDimExprStorage) ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::AffineMapStorage) ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::IntegerSetStorage) Load new dialect in Context mysv ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::ZeroOperands<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::OneRegion<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::ZeroResults<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::ZeroSuccessors<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::NoRegionArguments<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::NoTerminator<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::SingleBlock<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::OpInvariants<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::AffineScope<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::IsIsolatedFromAbove<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::SymbolTable<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::SymbolOpInterface::Trait<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpAsmOpInterface::Trait<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::RegionKindInterface::Trait<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::HasOnlyGraphRegion<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::ZeroRegions<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::OneResult<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::OneTypedResult<mlir::IntegerType>::Impl<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::MemoryEffectOpInterface::Trait<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::NOperands<2>::Impl<Empty>) ImplicitTypeIDRegistry::lookupOrInsert(mlir::SymbolUserOpInterface) ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::OpToOpPassAdaptor) getCanonicalizationPatterns ImplicitTypeIDRegistry::lookupOrInsert(mlir::detail::PreservedAnalyses::AllAnalysesType) mlir-asm-printer: Verifying operation: builtin.module module { ImplicitTypeIDRegistry::lookupOrInsert(mlir::OpTrait::IsTerminator<Empty>) %0 = "mysv.constant"() {value = 3 : si64} : () -> i64 %1 = "mysv.constant"() {value = 4 : si64} : () -> i64 %2 = "mysv.sub"(%0, %0) : (i64, i64) -> i64 %3 = "mysv.add"(%2, %1) : (i64, i64) -> i64 %4 = "mysv.mul"(%0, %1) : (i64, i64) -> i64 }