Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ExportVerilog][COMB] Crash in circt-opt: Variadic Operand Handling in ExportVerilog #7698

Open
YangWiz opened this issue Oct 13, 2024 · 3 comments

Comments

@YangWiz
Copy link

YangWiz commented Oct 13, 2024

Summary: When running circt-opt, I encountered an assertion failure in ExportVerilog.cpp related to handling of a comb::AndOp operation. The tool crashes with the following error:

Assertion `op.getNumOperands() == 2 && "prelowering should handle variadics"' failed.

The documentation didn’t mention that I should pre-lower the variadics before using the comb, so I think it's a bug. Additionally, the crash report suggests submitting a bug report:
"PLEASE submit a bug report to https://github.com/llvm/circt and include the crash backtrace."

The command I used is:

circt-opt -convert-fsm-to-sv --lower-seq-to-sv -export-verilog

CIRCT version: commit 33c35ff
OS version: Ubuntu 22.04

The crash backtrace is:

#0 0x00005a6218015508 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/yanghoo/Code/circt/llvm/llvm/lib/Support/Unix/Signals.inc:723:22
  #1 0x00005a6218015929 PrintStackTraceSignalHandler(void*) /home/yanghoo/Code/circt/llvm/llvm/lib/Support/Unix/Signals.inc:798:1
  #2 0x00005a6218012d79 llvm::sys::RunSignalHandlers() /home/yanghoo/Code/circt/llvm/llvm/lib/Support/Signals.cpp:105:20
  #3 0x00005a6218014da0 SignalHandler(int) /home/yanghoo/Code/circt/llvm/llvm/lib/Support/Unix/Signals.inc:413:1
  #4 0x0000704278442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
  #5 0x00007042784969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
  #6 0x0000704278442476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
  #7 0x00007042784287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
  #8 0x000070427842871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
  #9 0x0000704278439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #10 0x00005a621883e58b (anonymous namespace)::ExprEmitter::visitComb(circt::comb::AndOp) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:2412:22
 #11 0x00005a6218889b0d (anonymous namespace)::SubExprInfo circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::'lambda'(auto)::operator()<circt::comb::AndOp>(auto) const /home/yanghoo/Code/circt/include/circt/Dialect/Comb/CombVisitors.h:42:13
 #12 0x00005a62188896e7 llvm::TypeSwitch<mlir::Operation*, (anonymous namespace)::SubExprInfo>& llvm::TypeSwitch<mlir::Operation*, (anonymous namespace)::SubExprInfo>::Case<circt::comb::AndOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::'lambda'(auto)&>(circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::'lambda'(auto)&) /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:102:28
 #13 0x00005a621886214e Case<circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:46:40
 #14 0x00005a621886214e Case<circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #15 0x00005a621886214e Case<circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #16 0x00005a621886214e Case<circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #17 0x00005a621886214e Case<circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #18 0x00005a621886214e Case<circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #19 0x00005a621886214e Case<circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #20 0x00005a621886214e Case<circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #21 0x00005a621886214e Case<circt::comb::MulOp, circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #22 0x00005a621886214e Case<circt::comb::SubOp, circt::comb::MulOp, circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #23 0x00005a621886214e Case<circt::comb::AddOp, circt::comb::SubOp, circt::comb::MulOp, circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)> > /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #24 0x00005a621886214e circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*) /home/yanghoo/Code/circt/include/circt/Dialect/Comb/CombVisitors.h:41:53
 #25 0x00005a621883f38e (anonymous namespace)::ExprEmitter::emitSubExpr(mlir::Value, (anonymous namespace)::VerilogPrecedence, (anonymous namespace)::ExprEmitter::SubExprSignRequirement, bool, bool) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:2640:46
 #26 0x00005a6218843940 (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()::operator()() const /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:3230:5
 #27 0x00005a621887d992 void std::__invoke_impl<void, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()>(std::__invoke_other, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:61:67
 #28 0x00005a62188766bf std::__invoke_result<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()>::type std::__invoke<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()>((anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:97:36
 #29 0x00005a62188645f1 std::invoke_result<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()>::type std::invoke<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()>((anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()&&) /usr/include/c++/11/functional:98:37
 #30 0x00005a6218843a17 auto circt::pretty::TokenStream<circt::pretty::BufferingPP>::scopedBox<circt::pretty::PP, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()>(circt::pretty::PP&&, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const::'lambda'()&&, circt::pretty::Token) /home/yanghoo/Code/circt/include/circt/Support/PrettyPrinterHelpers.h:370:49
 #31 0x00005a6218843d2a (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()::operator()() const /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:3228:5
 #32 0x00005a621887d9f9 (anonymous namespace)::SubExprInfo std::__invoke_impl<(anonymous namespace)::SubExprInfo, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()>(std::__invoke_other, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:61:70
 #33 0x00005a62188767fd std::__invoke_result<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()>::type std::__invoke<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()>((anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:98:5
 #34 0x00005a62188647a1 std::invoke_result<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()>::type std::invoke<(anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()>((anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()&&) /usr/include/c++/11/functional:99:5
 #35 0x00005a6218843ffc auto circt::pretty::TokenStream<circt::pretty::BufferingPP>::scopedBox<circt::pretty::PP, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()>(circt::pretty::PP&&, (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp)::'lambda'()&&, circt::pretty::Token) /home/yanghoo/Code/circt/include/circt/Support/PrettyPrinterHelpers.h:370:23
 #36 0x00005a62188440aa (anonymous namespace)::ExprEmitter::visitComb(circt::comb::MuxOp) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:3250:1
 #37 0x00005a621888b53f (anonymous namespace)::SubExprInfo circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::'lambda'(auto)::operator()<circt::comb::MuxOp>(auto) const /home/yanghoo/Code/circt/include/circt/Dialect/Comb/CombVisitors.h:42:13
 #38 0x00005a621888b2c9 llvm::TypeSwitch<mlir::Operation*, (anonymous namespace)::SubExprInfo>& llvm::TypeSwitch<mlir::Operation*, (anonymous namespace)::SubExprInfo>::Case<circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::'lambda'(auto)&>(circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::'lambda'(auto)&) /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:102:28
 #39 0x00005a62188622c2 Case<circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #40 0x00005a62188622c2 Case<circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #41 0x00005a62188622c2 Case<circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #42 0x00005a62188622c2 Case<circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #43 0x00005a62188622c2 Case<circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #44 0x00005a62188622c2 Case<circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #45 0x00005a62188622c2 Case<circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #46 0x00005a62188622c2 Case<circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #47 0x00005a62188622c2 Case<circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #48 0x00005a62188622c2 Case<circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #49 0x00005a62188622c2 Case<circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #50 0x00005a62188622c2 Case<circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #51 0x00005a62188622c2 Case<circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #52 0x00005a62188622c2 Case<circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #53 0x00005a62188622c2 Case<circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #54 0x00005a62188622c2 Case<circt::comb::MulOp, circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #55 0x00005a62188622c2 Case<circt::comb::SubOp, circt::comb::MulOp, circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #56 0x00005a62188622c2 Case<circt::comb::AddOp, circt::comb::SubOp, circt::comb::MulOp, circt::comb::DivUOp, circt::comb::DivSOp, circt::comb::ModUOp, circt::comb::ModSOp, circt::comb::ShlOp, circt::comb::ShrUOp, circt::comb::ShrSOp, circt::comb::AndOp, circt::comb::OrOp, circt::comb::XorOp, circt::comb::ICmpOp, circt::comb::ParityOp, circt::comb::ConcatOp, circt::comb::ReplicateOp, circt::comb::ExtractOp, circt::comb::MuxOp, circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*)::<lambda(auto:21)> > /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #57 0x00005a62188622c2 circt::comb::CombinationalVisitor<(anonymous namespace)::ExprEmitter, (anonymous namespace)::SubExprInfo>::dispatchCombinationalVisitor(mlir::Operation*) /home/yanghoo/Code/circt/include/circt/Dialect/Comb/CombVisitors.h:41:53
 #58 0x00005a621883f38e (anonymous namespace)::ExprEmitter::emitSubExpr(mlir::Value, (anonymous namespace)::VerilogPrecedence, (anonymous namespace)::ExprEmitter::SubExprSignRequirement, bool, bool) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:2640:46
 #59 0x00005a621883dbe2 (anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()::operator()() const /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:2169:5
 #60 0x00005a621887cc09 void std::__invoke_impl<void, (anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()>(std::__invoke_other, (anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:61:67
 #61 0x00005a62188754c3 std::__invoke_result<(anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()>::type std::__invoke<(anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()>((anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:97:36
 #62 0x00005a6218860135 std::invoke_result<(anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()>::type std::invoke<(anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()>((anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()&&) /usr/include/c++/11/functional:98:37
 #63 0x00005a621883dca1 auto circt::pretty::TokenStream<circt::pretty::BufferingPP>::scopedBox<circt::pretty::PP, (anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()>(circt::pretty::PP&&, (anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool)::'lambda'()&&, circt::pretty::Token) /home/yanghoo/Code/circt/include/circt/Support/PrettyPrinterHelpers.h:370:49
 #64 0x00005a621883dd96 (anonymous namespace)::ExprEmitter::emitExpression(mlir::Value, (anonymous namespace)::VerilogPrecedence, bool) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:2173:17
 #65 0x00005a6218847c7b (anonymous namespace)::StmtEmitter::emitExpression(mlir::Value, llvm::SmallPtrSetImpl<mlir::Operation*>&, (anonymous namespace)::VerilogPrecedence, bool) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4077:3
 #66 0x00005a621886602e llvm::LogicalResult (anonymous namespace)::StmtEmitter::emitAssignLike<circt::sv::BPAssignOp>(circt::sv::BPAssignOp, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda0'()::operator()() const /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4124:18
 #67 0x00005a621887e043 void llvm::function_ref<void ()>::callback_fn<llvm::LogicalResult (anonymous namespace)::StmtEmitter::emitAssignLike<circt::sv::BPAssignOp>(circt::sv::BPAssignOp, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda0'()>(long) /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:40
 #68 0x00005a6217f09bfc llvm::function_ref<void ()>::operator()() const /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:62
 #69 0x00005a6218847d4d (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()::operator()() const /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4109:7
 #70 0x00005a621887dfa4 void std::__invoke_impl<void, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()>(std::__invoke_other, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:61:67
 #71 0x00005a62188773b3 std::__invoke_result<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()>::type std::__invoke<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()>((anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:97:36
 #72 0x00005a6218865b79 std::invoke_result<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()>::type std::invoke<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()>((anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()&&) /usr/include/c++/11/functional:98:37
 #73 0x00005a6218847e2b auto circt::pretty::TokenStream<circt::pretty::PrettyPrinter>::scopedBox<circt::pretty::PP, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()>(circt::pretty::PP&&, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const::'lambda'()&&, circt::pretty::Token) /home/yanghoo/Code/circt/include/circt/Support/PrettyPrinterHelpers.h:370:49
 #74 0x00005a6218847f6f (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()::operator()() const /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4111:3
 #75 0x00005a621887dfc7 void std::__invoke_impl<void, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()>(std::__invoke_other, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:61:67
 #76 0x00005a621887741d std::__invoke_result<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()>::type std::__invoke<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()>((anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()&&) /usr/include/c++/11/bits/invoke.h:97:36
 #77 0x00005a6218865c09 std::invoke_result<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()>::type std::invoke<(anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()>((anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()&&) /usr/include/c++/11/functional:98:37
 #78 0x00005a6218848045 auto circt::pretty::TokenStream<circt::pretty::PrettyPrinter>::scopedBox<circt::pretty::PP, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()>(circt::pretty::PP&&, (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>)::'lambda'()&&, circt::pretty::Token) /home/yanghoo/Code/circt/include/circt/Support/PrettyPrinterHelpers.h:370:49
 #79 0x00005a621884813a (anonymous namespace)::StmtEmitter::emitAssignLike(llvm::function_ref<void ()>, llvm::function_ref<void ()>, circt::pretty::PPExtString, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4112:1
 #80 0x00005a621886621e llvm::LogicalResult (anonymous namespace)::StmtEmitter::emitAssignLike<circt::sv::BPAssignOp>(circt::sv::BPAssignOp, circt::pretty::PPExtString, std::optional<circt::pretty::PPExtString>) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4123:17
 #81 0x00005a62188483ea (anonymous namespace)::StmtEmitter::visitSV(circt::sv::BPAssignOp) /home/yanghoo/Code/circt/lib/Conversion/ExportVerilog/ExportVerilog.cpp:4161:24
 #82 0x00005a621888ce9b llvm::LogicalResult circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::'lambda'(auto)::operator()<circt::sv::BPAssignOp>(auto) const /home/yanghoo/Code/circt/include/circt/Dialect/SV/SVVisitors.h:66:24
 #83 0x00005a621888cd23 llvm::TypeSwitch<mlir::Operation*, llvm::LogicalResult>& llvm::TypeSwitch<mlir::Operation*, llvm::LogicalResult>::Case<circt::sv::BPAssignOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::'lambda'(auto)&>(circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::'lambda'(auto)&) /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:102:28
 #84 0x00005a6218870444 Case<circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:46:40
 #85 0x00005a6218870444 Case<circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #86 0x00005a6218870444 Case<circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #87 0x00005a6218870444 Case<circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #88 0x00005a6218870444 Case<circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #89 0x00005a6218870444 Case<circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #90 0x00005a6218870444 Case<circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #91 0x00005a6218870444 Case<circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #92 0x00005a6218870444 Case<circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #93 0x00005a6218870444 Case<circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #94 0x00005a6218870444 Case<circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #95 0x00005a6218870444 Case<circt::sv::XMRRefOp, circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #96 0x00005a6218870444 Case<circt::sv::XMROp, circt::sv::XMRRefOp, circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #97 0x00005a6218870444 Case<circt::sv::LocalParamOp, circt::sv::XMROp, circt::sv::XMRRefOp, circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #98 0x00005a6218870444 Case<circt::sv::LogicOp, circt::sv::LocalParamOp, circt::sv::XMROp, circt::sv::XMRRefOp, circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
 #99 0x00005a6218870444 Case<circt::sv::WireOp, circt::sv::LogicOp, circt::sv::LocalParamOp, circt::sv::XMROp, circt::sv::XMRRefOp, circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
#100 0x00005a6218870444 Case<circt::sv::RegOp, circt::sv::WireOp, circt::sv::LogicOp, circt::sv::LocalParamOp, circt::sv::XMROp, circt::sv::XMRRefOp, circt::sv::OrderedOutputOp, circt::sv::IfDefOp, circt::sv::IfDefProceduralOp, circt::sv::IfOp, circt::sv::AlwaysOp, circt::sv::AlwaysCombOp, circt::sv::AlwaysFFOp, circt::sv::InitialOp, circt::sv::CaseOp, circt::sv::AssignOp, circt::sv::BPAssignOp, circt::sv::PAssignOp, circt::sv::ForceOp, circt::sv::ReleaseOp, circt::sv::AliasOp, circt::sv::FWriteOp, circt::sv::SystemFunctionOp, circt::sv::VerbatimOp, circt::sv::FuncCallOp, circt::sv::FuncCallProceduralOp, circt::sv::ReturnOp, circt::sv::InterfaceOp, circt::sv::InterfaceSignalOp, circt::sv::InterfaceModportOp, circt::sv::InterfaceInstanceOp, circt::sv::GetModportOp, circt::sv::AssignInterfaceSignalOp, circt::sv::ReadInterfaceSignalOp, circt::sv::MacroDeclOp, circt::sv::MacroDefOp, circt::sv::FuncOp, circt::sv::FuncDPIImportOp, circt::sv::AssertOp, circt::sv::AssumeOp, circt::sv::CoverOp, circt::sv::AssertConcurrentOp, circt::sv::AssumeConcurrentOp, circt::sv::CoverConcurrentOp, circt::sv::AssertPropertyOp, circt::sv::AssumePropertyOp, circt::sv::CoverPropertyOp, circt::sv::BindOp, circt::sv::StopOp, circt::sv::FinishOp, circt::sv::ExitOp, circt::sv::FatalOp, circt::sv::ErrorOp, circt::sv::WarningOp, circt::sv::InfoOp, circt::sv::ReadMemOp, circt::sv::GenerateOp, circt::sv::GenerateCaseOp, circt::sv::ForOp, circt::sv::SampledOp, circt::sv::Visitor<(anonymous namespace)::StmtEmitter, llvm::LogicalResult>::dispatchSVVisitor(mlir::Operation*)::<lambda(auto:48)>&> /home/yanghoo/Code/circt/llvm/llvm/include/llvm/ADT/TypeSwitch.h:47:42
@uenoku
Copy link
Member

uenoku commented Oct 14, 2024

Do you mind if you could share the input MLIR file? AndOp should have been splitted into variadic ops.

@YangWiz
Copy link
Author

YangWiz commented Oct 16, 2024

@uenoku Thank you for your reply! I found that the AndOp has been split correctly, except when there is only one input, which makes the operation essentially meaningless. I have many comb.and operations in my code, and the crash report suggested that I should pre-lower the variadic operations. This leads me to believe that the comb.and variadic function doesn't work properly without accounting for the single-input condition in my code.

The code caused crash:

%fsm_output = comb.and %0 : i1

@uenoku
Copy link
Member

uenoku commented Oct 17, 2024

Ok, interesting! PrepareForEmission shouldn't crash even when there is a single operand so we'll get a fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants