67 auto currentGate = dyn_cast_or_null<T2>(*currentOp);
71 if (currentGate.getControls().size() != 0 ||
72 currentGate.getTargets().size() != 1)
79 auto prevGate = dyn_cast<T1>(prevOp);
81 if (prevGate.getControls().size() != 0 || prevGate.getTargets().size() != 1)
85 llvm::outs() <<
"Current Operation: ";
86 currentGate->print(llvm::outs());
88 llvm::outs() <<
"Previous Operation: ";
89 prevGate->print(llvm::outs());
92 mlir::IRRewriter rewriter(currentGate->getContext());
93 rewriter.setInsertionPointAfter(currentGate);
94 auto newGate = rewriter.create<T3>(
95 currentGate.getLoc(), currentGate.isAdj(), currentGate.getParameters(),
96 currentGate.getControls(), currentGate.getTargets());
97 rewriter.setInsertionPointAfter(newGate);
98 rewriter.create<T4>(prevGate.getLoc(), prevGate.isAdj(),
99 prevGate.getParameters(), prevGate.getControls(),
100 prevGate.getTargets());
101 rewriter.eraseOp(prevGate);
102 rewriter.eraseOp(currentGate);