llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
26.82k stars 11k forks source link

[mlir] --canonicalize crashed with assertion failure "expected integer attribute type to equal element type". #74236

Open Anonymous15592 opened 7 months ago

Anonymous15592 commented 7 months ago

git version: e9c6f3f5e7e23b23de4eeaa182ebfcb7d2188495

system: Ubuntu 20.04.6 LTS (Focal Fossa)

reproduced with: mlir-opt --canonicalize a.mlir

a.mlir:

llvm.func @malloc(i64) -> !llvm.ptr
func.func @func2(%arg0: index, %arg1: memref<13x13xi64>, %arg2: index) {
  %cst_7 = arith.constant dense<1526248407> : vector<1xi64>
  %1 = llvm.mlir.constant(1 : index) : i64
  %101 = vector.insert %1, %cst_7 [0] : i64 into vector<1xi64>
  vector.print %101 : vector<1xi64>
  return
}

trace:

mlir-opt: /data/bin/llvm-project/mlir/lib/IR/BuiltinAttributes.cpp:961: static mlir::DenseElementsAttr mlir::DenseElementsAttr::get(mlir::ShapedType, llvm::ArrayRef<mlir::Attribute>): Assertion `intAttr.getType() == eltType && "expected integer attribute type to equal element type"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --inline a.mlir
 #0 0x0000560af72fee8f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x1640e8f)
 #1 0x0000560af72fbee4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fbb1c867420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007fbb1c35200b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007fbb1c331859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007fbb1c331729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007fbb1c342fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x0000560afa0dc621 mlir::DenseElementsAttr::get(mlir::ShapedType, llvm::ArrayRef<mlir::Attribute>) (/data/bin/llvm-project/build/bin/mlir-opt+0x441e621)
 #8 0x0000560af93c28b6 (anonymous namespace)::InsertOpConstantFolder::matchAndRewrite(mlir::vector::InsertOp, mlir::PatternRewriter&) const VectorOps.cpp:0:0
 #9 0x0000560af762a7e8 mlir::detail::OpOrInterfaceRewritePatternBase<mlir::vector::InsertOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/bin/llvm-project/build/bin/mlir-opt+0x196c7e8)
#10 0x0000560afccb3038 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/data/bin/llvm-project/build/bin/mlir-opt+0x6ff5038)
#11 0x0000560afa0281cc (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#12 0x0000560afa02c63b mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/bin/llvm-project/build/bin/mlir-opt+0x436e63b)
#13 0x0000560af9f9190a (anonymous namespace)::Canonicalizer::runOnOperation() Canonicalizer.cpp:0:0
#14 0x0000560af9f7285e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b485e)
#15 0x0000560af9f72d3a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b4d3a)
#16 0x0000560af9f73e03 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::'lambda'(mlir::OpPassManager&, mlir::Operation*)>(long, mlir::OpPassManager&, mlir::Operation*) Pass.cpp:0:0
#17 0x0000560af9fa1af3 (anonymous namespace)::InlinerPass::optimizeCallable(mlir::CallGraphNode*, llvm::StringMap<mlir::OpPassManager, llvm::MallocAllocator>&) Inliner.cpp:0:0
#18 0x0000560af9faaa26 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult ((anonymous namespace)::CallGraphSCC&)>::callback_fn<(anonymous namespace)::InlinerPass::runOnOperation()::'lambda'((anonymous namespace)::CallGraphSCC&)>(long, (anonymous namespace)::CallGraphSCC&) Inliner.cpp:0:0
#19 0x0000560af9fab813 (anonymous namespace)::InlinerPass::runOnOperation() Inliner.cpp:0:0
#20 0x0000560af9f7285e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b485e)
#21 0x0000560af9f72d3a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b4d3a)
#22 0x0000560af9f73564 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b5564)
#23 0x0000560af9f642d3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#24 0x0000560af9f657a4 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#25 0x0000560af9f65954 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#26 0x0000560afa064c44 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x43a6c44)
#27 0x0000560af9f5e1b7 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x42a01b7)
#28 0x0000560af9f65aa1 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x42a7aa1)
#29 0x0000560af9f65f06 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x42a7f06)
#30 0x0000560af723650b main (/data/bin/llvm-project/build/bin/mlir-opt+0x157850b)
#31 0x00007fbb1c333083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#32 0x0000560af72cf1ee _start (/data/bin/llvm-project/build/bin/mlir-opt+0x16111ee)
Aborted (core dumped)
llvmbot commented 7 months ago

Hi!

This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:

  1. In the comments of the issue, request for it to be assigned to you.
  2. Fix the issue locally.
  3. Run the test suite locally. Remember that the subdirectories under test/ create fine-grained testing targets, so you can e.g. use make check-clang-ast to only run Clang's AST tests.
  4. Create a Git commit.
  5. Run git clang-format HEAD~1 to format your changes.
  6. Open a pull request to the upstream repository on GitHub. Detailed instructions can be found in GitHub's documentation.

If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.

llvmbot commented 7 months ago

@llvm/issue-subscribers-good-first-issue

Author: anonymousMCS (anonymousMCS)

git version: e9c6f3f5e7e23b23de4eeaa182ebfcb7d2188495 system: ```Ubuntu 20.04.6 LTS (Focal Fossa)``` reproduced with: ```mlir-opt --canonicalize a.mlir``` a.mlir: ``` llvm.func @malloc(i64) -> !llvm.ptr func.func @func2(%arg0: index, %arg1: memref<13x13xi64>, %arg2: index) { %cst_7 = arith.constant dense<1526248407> : vector<1xi64> %1 = llvm.mlir.constant(1 : index) : i64 %101 = vector.insert %1, %cst_7 [0] : i64 into vector<1xi64> vector.print %101 : vector<1xi64> return } ``` trace: ``` mlir-opt: /data/bin/llvm-project/mlir/lib/IR/BuiltinAttributes.cpp:961: static mlir::DenseElementsAttr mlir::DenseElementsAttr::get(mlir::ShapedType, llvm::ArrayRef<mlir::Attribute>): Assertion `intAttr.getType() == eltType && "expected integer attribute type to equal element type"' failed. PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace. Stack dump: 0. Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --inline a.mlir #0 0x0000560af72fee8f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x1640e8f) #1 0x0000560af72fbee4 SignalHandler(int) Signals.cpp:0:0 #2 0x00007fbb1c867420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420) #3 0x00007fbb1c35200b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b) #4 0x00007fbb1c331859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859) #5 0x00007fbb1c331729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729) #6 0x00007fbb1c342fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6) #7 0x0000560afa0dc621 mlir::DenseElementsAttr::get(mlir::ShapedType, llvm::ArrayRef<mlir::Attribute>) (/data/bin/llvm-project/build/bin/mlir-opt+0x441e621) #8 0x0000560af93c28b6 (anonymous namespace)::InsertOpConstantFolder::matchAndRewrite(mlir::vector::InsertOp, mlir::PatternRewriter&) const VectorOps.cpp:0:0 #9 0x0000560af762a7e8 mlir::detail::OpOrInterfaceRewritePatternBase<mlir::vector::InsertOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/bin/llvm-project/build/bin/mlir-opt+0x196c7e8) #10 0x0000560afccb3038 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/data/bin/llvm-project/build/bin/mlir-opt+0x6ff5038) #11 0x0000560afa0281cc (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0 #12 0x0000560afa02c63b mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/bin/llvm-project/build/bin/mlir-opt+0x436e63b) #13 0x0000560af9f9190a (anonymous namespace)::Canonicalizer::runOnOperation() Canonicalizer.cpp:0:0 #14 0x0000560af9f7285e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b485e) #15 0x0000560af9f72d3a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b4d3a) #16 0x0000560af9f73e03 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::'lambda'(mlir::OpPassManager&, mlir::Operation*)>(long, mlir::OpPassManager&, mlir::Operation*) Pass.cpp:0:0 #17 0x0000560af9fa1af3 (anonymous namespace)::InlinerPass::optimizeCallable(mlir::CallGraphNode*, llvm::StringMap<mlir::OpPassManager, llvm::MallocAllocator>&) Inliner.cpp:0:0 #18 0x0000560af9faaa26 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult ((anonymous namespace)::CallGraphSCC&)>::callback_fn<(anonymous namespace)::InlinerPass::runOnOperation()::'lambda'((anonymous namespace)::CallGraphSCC&)>(long, (anonymous namespace)::CallGraphSCC&) Inliner.cpp:0:0 #19 0x0000560af9fab813 (anonymous namespace)::InlinerPass::runOnOperation() Inliner.cpp:0:0 #20 0x0000560af9f7285e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b485e) #21 0x0000560af9f72d3a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b4d3a) #22 0x0000560af9f73564 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b5564) #23 0x0000560af9f642d3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0 #24 0x0000560af9f657a4 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0 #25 0x0000560af9f65954 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0 #26 0x0000560afa064c44 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x43a6c44) #27 0x0000560af9f5e1b7 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x42a01b7) #28 0x0000560af9f65aa1 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x42a7aa1) #29 0x0000560af9f65f06 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x42a7f06) #30 0x0000560af723650b main (/data/bin/llvm-project/build/bin/mlir-opt+0x157850b) #31 0x00007fbb1c333083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083) #32 0x0000560af72cf1ee _start (/data/bin/llvm-project/build/bin/mlir-opt+0x16111ee) Aborted (core dumped) ```
debadree25 commented 7 months ago

@joker-eph I would try to take a stab at this issue. As I am totally new could you guide as to which areas of the code i should be looking into or any insight you may have on the issue?

Thank you!

Rajveer100 commented 6 months ago

@joker-eph Could you give a comprehensive description of the issue here that can get me going?

joker-eph commented 6 months ago

Seems like this is a mishandling in InsertOpConstantFolder, I would try to build a debug build of MLIR and run this with a debugger (or add print statement around the crash)

SahilPatidar commented 4 months ago

Hello @joker-eph,

I'm currently investigating an issue using LLDB and could benefit from your expertise to help me navigate through it.

During my investigation, I used LLDB to examine the types of intAttr and eltType: (lldb) expression intAttr.getType().dump() index (lldb) expression eltType.dump() i64 Subsequently, I noticed a discrepancy in the output of allValues[0].dump() before and after a copy operation:

(lldb) expr allValues[0].dump() 1526248407 : i64 After the copy operation:

(lldb) expr allValues[0].dump() 1 : index I believe the issue may be related to the following code segment: ` SmallVector insertedValues; if (auto denseSource = llvm::dyn_cast(sourceCst)) llvm::append_range(insertedValues, denseSource.getValues()); else insertedValues.push_back(sourceCst);

auto allValues = llvm::to_vector(denseDest.getValues()); ` Specifically, the problem might lie in the line %101 = vector.insert %1, %cst_7 [0] : i64 into vector<1xi64>.

Could you please provide me with some guidance or hints on how to further investigate and resolve this issue?

Thank you for your time and assistance.

joker-eph commented 4 months ago

%1 = llvm.mlir.constant(1 : index) : i64

is a constant where the SSA value type is i64 but the attribute is 1 : index.

The %101 = vector.insert %1, %cst_7 [0] : i64 is basically replacing the vector with the provided value, the folding op needs to return an attribute modeling this new constant. However it likely just takes the 1 : index as-is while the expected type of the produced attribue should be i64.

SahilPatidar commented 4 months ago

@joker-eph, I've been trying to locate where the actual folding operations happen in the MLIR codebase, but I've only found the starting point for folding operations:

LogicalResult result = op->fold(/*operands=*/std::nullopt, foldedOp); Could you please clarify where the folding operations are actually performed in the MLIR codebase?

joker-eph commented 4 months ago

It is in the backtrace in the original description:

 #7 0x0000560afa0dc621 mlir::DenseElementsAttr::get(mlir::ShapedType, llvm::ArrayRef<mlir::Attribute>) (/data/bin/llvm-project/build/bin/mlir-opt+0x441e621)
 #8 0x0000560af93c28b6 (anonymous namespace)::InsertOpConstantFolder::matchAndRewrite(mlir::vector::InsertOp, mlir::PatternRewriter&) const VectorOps.cpp:0:0

Alos if you use a debugger, at the time of the crash you should be able to look at the entire backtrace and connect to the source code.

SahilPatidar commented 4 months ago

@joker-eph, I'm sorry, but I'm still having trouble finding the exact location in the code:

Attribute sourceCst; if (!matchPattern(sourceValue, m_Constant(&sourceCst))) return failure();

when I inspect sourceValue using sourceValue.dump() in LLDB, it displays %1 = llvm.mlir.constant(1 : index) : i64. However, when I inspect sourceCst, it only shows 1 : index. I believe the issue may be occurring during the matchPattern call and also in foldSingleResultHook, but I'm unsure where the folding operation is happening.

SahilPatidar commented 4 months ago

could you please assign this one to me?

SahilPatidar commented 4 months ago

@joker-eph, I'm sorry, but I'm still having trouble finding the exact location in the code:

Attribute sourceCst; if (!matchPattern(sourceValue, m_Constant(&sourceCst))) return failure();

when I inspect sourceValue using sourceValue.dump() in LLDB, it displays %1 = llvm.mlir.constant(1 : index) : i64. However, when I inspect sourceCst, it only shows 1 : index. I believe the issue may be occurring during the matchPattern call and also in foldSingleResultHook, but I'm unsure where the folding operation is happening.

@joker-eph Could you please provide a hint for this?

Rajveer100 commented 2 months ago

@joker-eph

Is this the expected output after fix:

"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<ptr (i64)>, linkage = #llvm.linkage<external>, sym_name = "malloc", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (index, memref<13x13xi64>, index) -> (), sym_name = "func2"}> ({
  ^bb0(%arg0: index, %arg1: memref<13x13xi64>, %arg2: index):
    %0 = "arith.constant"() <{value = dense<0> : vector<1xi64>}> : () -> vector<1xi64>
    "vector.print"(%0) <{punctuation = #vector.punctuation<newline>}> : (vector<1xi64>) -> ()
    "func.return"() : () -> ()
  }) : () -> ()
}) : () -> ()