Skip to content

Commit dc57d7d

Browse files
committed
refactor MoveCtrlOutside
1 parent f0faa17 commit dc57d7d

1 file changed

Lines changed: 7 additions & 8 deletions

File tree

mlir/lib/Dialect/QCO/IR/Modifiers/PowOp.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -137,21 +137,20 @@ struct MoveCtrlOutside final : OpRewritePattern<PowOp> {
137137

138138
const auto numControls = innerCtrlOp.getNumControls();
139139
const auto numTargets = innerCtrlOp.getNumTargets();
140-
auto powTargets = op.getInputQubits();
141-
auto controls = powTargets.take_front(numControls);
142-
auto targets = powTargets.take_back(numTargets);
140+
auto inputQubits = op.getInputQubits();
141+
auto controls = inputQubits.take_front(numControls);
142+
auto targets = inputQubits.take_back(numTargets);
143+
const double exponent = op.getExponentValue();
143144

144145
rewriter.replaceOpWithNewOp<CtrlOp>(
145146
op, controls, targets,
146-
[&](ValueRange newTargetArgs) -> llvm::SmallVector<Value> {
147+
[&](ValueRange ctrlTargetArgs) -> llvm::SmallVector<Value> {
147148
return PowOp::create(
148-
rewriter, op.getLoc(), newTargetArgs,
149-
op.getExponentValue(),
149+
rewriter, op.getLoc(), ctrlTargetArgs, exponent,
150150
[&](ValueRange powArgs) -> llvm::SmallVector<Value> {
151151
IRMapping mapping;
152152
auto* innerBody = innerCtrlOp.getBody();
153-
for (size_t i = 0; i < innerCtrlOp.getNumTargets();
154-
++i) {
153+
for (size_t i = 0; i < numTargets; ++i) {
155154
mapping.map(innerBody->getArgument(i), powArgs[i]);
156155
}
157156
auto* cloned = rewriter.clone(

0 commit comments

Comments
 (0)