Skip to content

Commit 570b13a

Browse files
authored
[onert] Add typecheck for Transpose (#14978)
It adds typecheck (input type = output type) for Transpose. Also, it adds 1 negative testcase. ONE-DCO-1.0-Signed-off-by: Sanggyu Lee <sg5.lee@samsung.com>
1 parent 6613e3c commit 570b13a

3 files changed

Lines changed: 27 additions & 0 deletions

File tree

runtime/onert/core/src/ir/OperationValidator.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,14 @@ void OperationValidator::visit(const operation::StridedSlice &node)
551551
OP_REQUIRES(isSameType(output_index, input_index));
552552
}
553553

554+
void OperationValidator::visit(const operation::Transpose &node)
555+
{
556+
const auto output_index{node.getOutputs().at(0)};
557+
const auto input_index{node.getInputs().at(operation::Transpose::Input::INPUT)};
558+
559+
OP_REQUIRES(isSameType(output_index, input_index));
560+
}
561+
554562
void OperationValidator::visit(const operation::TransposeConv &node)
555563
{
556564
OP_REQUIRES((node.param().padding.type == PaddingType::SAME) ||

runtime/onert/core/src/ir/OperationValidator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class OperationValidator : public OperationVisitor
7575
void visit(const operation::SquaredDifference &node) override;
7676
void visit(const operation::StatelessRandomUniform &node) override;
7777
void visit(const operation::StridedSlice &node) override;
78+
void visit(const operation::Transpose &node) override;
7879
void visit(const operation::TransposeConv &node) override;
7980
void visit(const operation::Unpack &node) override;
8081
void visit(const operation::While &node) override;

runtime/tests/nnfw_api/src/GenModelTests/one_op_tests/Transpose.test.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,21 @@ TEST_F(GenModelTest, neg_OneOp_Transpose_DuplicatedPermsVal)
140140

141141
SUCCEED();
142142
}
143+
144+
TEST_F(GenModelTest, neg_OneOp_Transpose_DifferentType)
145+
{
146+
CircleGen cgen;
147+
std::vector<int32_t> perms_data{3, 2, 1, 0};
148+
uint32_t perms_buf = cgen.addBuffer(perms_data);
149+
int perms = cgen.addTensor({{4}, circle::TensorType::TensorType_INT32, perms_buf});
150+
int in = cgen.addTensor({{1, 2, 2, 1}, circle::TensorType::TensorType_FLOAT32});
151+
int out = cgen.addTensor({{1, 2, 2, 1}, circle::TensorType::TensorType_INT32});
152+
cgen.addOperatorTranspose({{in, perms}, {out}});
153+
cgen.setInputsAndOutputs({in}, {out});
154+
155+
_context = std::make_unique<GenModelTestContext>(cgen.finish());
156+
_context->setBackends({"acl_cl", "acl_neon", "cpu"});
157+
_context->expectFailModelLoad();
158+
159+
SUCCEED();
160+
}

0 commit comments

Comments
 (0)