llvm / circt

Circuit IR Compilers and Tools
https://circt.org
Other
1.66k stars 293 forks source link

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

Open YangWiz opened 6 days ago

YangWiz commented 6 days ago

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 33c35fff11c79a3d3c0f78120c0296a700db2cfa 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 commented 5 days ago

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

YangWiz commented 3 days ago

@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 commented 2 days ago

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