diff --git a/src/common/transformations/src/transformations/convert_precision.cpp b/src/common/transformations/src/transformations/convert_precision.cpp index 187eb575331..f135c2fc026 100644 --- a/src/common/transformations/src/transformations/convert_precision.cpp +++ b/src/common/transformations/src/transformations/convert_precision.cpp @@ -84,14 +84,12 @@ bool fuse_type_to_logical(const std::shared_ptr& node, const preci const auto& to = it->second; if (auto type_relaxed = std::dynamic_pointer_cast(node)) { type_relaxed->set_overridden_output_type(to); - type_relaxed->set_origin_input_type(ov::element::boolean, 0); - type_relaxed->set_origin_input_type(ov::element::boolean, 1); + for (size_t i = 0; i < node->get_input_size(); ++i) + type_relaxed->set_origin_input_type(ov::element::boolean, i); return true; } else if (auto casted = std::dynamic_pointer_cast(node)) { - auto relaxed_op = std::make_shared>( - *casted, - ov::element::TypeVector{ov::element::boolean, ov::element::boolean}, - ov::element::TypeVector{to}); + ov::element::TypeVector input_types(node->get_input_size(), ov::element::boolean); + auto relaxed_op = std::make_shared>(*casted, input_types, ov::element::TypeVector{to}); replace_node(node, relaxed_op); return true; } diff --git a/src/common/transformations/tests/utils/convert_precision.cpp b/src/common/transformations/tests/utils/convert_precision.cpp index 5226c41ae17..8f1c3d01d14 100644 --- a/src/common/transformations/tests/utils/convert_precision.cpp +++ b/src/common/transformations/tests/utils/convert_precision.cpp @@ -671,6 +671,14 @@ TEST(TransformationTests, ConvertPrecision_LogicalNot) { ASSERT_FALSE(has_type(f)); ASSERT_TRUE(has_type(f)); + + std::shared_ptr tr; + for (const auto& node : f->get_ordered_ops()) + if (auto op = std::dynamic_pointer_cast(node)) + tr = op; + ASSERT_TRUE(tr != nullptr); + ASSERT_EQ(tr->get_origin_input_type(0), element::boolean); + ASSERT_EQ(tr->get_origin_input_type(1), element::undefined); } TEST(TransformationTests, ConvertPrecision_Select) {