Skip to content

Commit

Permalink
[mlir][tosa] Update SelectOp's input names to match TOSA specification
Browse files Browse the repository at this point in the history
Updated:
- pred to input1
- on_true to input2
- on_false to input3

Signed-off-by: Jerry Ge <[email protected]>
Change-Id: Ia6b3e75f171d5d801f47b22f06d39e36dc53fc4e
  • Loading branch information
Jerry-Ge committed Feb 19, 2025
1 parent 888c099 commit fc3df8d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
8 changes: 4 additions & 4 deletions mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td
Original file line number Diff line number Diff line change
Expand Up @@ -1190,9 +1190,9 @@ def Tosa_SelectOp : Tosa_ElementwiseOp<"select"> {
}];

let arguments = (ins
Tosa_I1Tensor:$pred,
Tosa_Tensor:$on_true,
Tosa_Tensor:$on_false
Tosa_I1Tensor:$input1,
Tosa_Tensor:$input2,
Tosa_Tensor:$input3
);

let results = (outs
Expand All @@ -1202,7 +1202,7 @@ def Tosa_SelectOp : Tosa_ElementwiseOp<"select"> {
let hasFolder = 1;

let assemblyFormat = [{
operands attr-dict `:` `(` type($pred) `,` type($on_true) `,` type($on_false)
operands attr-dict `:` `(` type($input1) `,` type($input2) `,` type($input3)
`)` `->` type($output)
}];
}
Expand Down
14 changes: 7 additions & 7 deletions mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@ void ConcatOp::getCanonicalizationPatterns(RewritePatternSet &results,
}

LogicalResult SelectOp::canonicalize(SelectOp op, PatternRewriter &rewriter) {
auto notOp = op.getPred().getDefiningOp<tosa::LogicalNotOp>();
auto notOp = op.getInput1().getDefiningOp<tosa::LogicalNotOp>();
if (!notOp)
return failure();
rewriter.modifyOpInPlace(op, [&]() {
op.getOperation()->setOperands(
{notOp.getInput1(), op.getOnFalse(), op.getOnTrue()});
{notOp.getInput1(), op.getInput3(), op.getInput2()});
});
return success();
}
Expand Down Expand Up @@ -1131,18 +1131,18 @@ OpFoldResult SliceOp::fold(FoldAdaptor adaptor) {
}

OpFoldResult tosa::SelectOp::fold(FoldAdaptor adaptor) {
if (getOnTrue() == getOnFalse())
return getOnTrue();
if (getInput2() == getInput3())
return getInput2();

auto predicate =
llvm::dyn_cast_if_present<DenseIntElementsAttr>(adaptor.getPred());
llvm::dyn_cast_if_present<DenseIntElementsAttr>(adaptor.getInput1());
if (!predicate)
return {};

if (!predicate.isSplat())
return {};
return predicate.getSplatValue<APInt>().getBoolValue() ? getOnTrue()
: getOnFalse();
return predicate.getSplatValue<APInt>().getBoolValue() ? getInput2()
: getInput3();
}

OpFoldResult TileOp::fold(FoldAdaptor adaptor) {
Expand Down
6 changes: 3 additions & 3 deletions mlir/lib/Dialect/Tosa/Transforms/TosaMakeBroadcastable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ struct ConvertTosaOp<tosa::SelectOp> : public OpRewritePattern<tosa::SelectOp> {
LogicalResult matchAndRewrite(tosa::SelectOp tosaOp,
PatternRewriter &rewriter) const override {

Value input1 = tosaOp.getPred();
Value input2 = tosaOp.getOnTrue();
Value input3 = tosaOp.getOnFalse();
Value input1 = tosaOp.getInput1();
Value input2 = tosaOp.getInput2();
Value input3 = tosaOp.getInput3();
Value output = tosaOp.getResult();

auto outputType = dyn_cast<RankedTensorType>(output.getType());
Expand Down

0 comments on commit fc3df8d

Please sign in to comment.