diff --git a/src/common/transformations/src/transformations/common_optimizations/mark_precision_sensitive_divides.cpp b/src/common/transformations/src/transformations/common_optimizations/mark_precision_sensitive_divides.cpp index c57fd4db283..32e48791e58 100644 --- a/src/common/transformations/src/transformations/common_optimizations/mark_precision_sensitive_divides.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/mark_precision_sensitive_divides.cpp @@ -25,7 +25,7 @@ bool ov::pass::MarkPrecisionSensitiveDivides::run_on_model(const std::shared_ptr } auto markup_func = [](Node* node) { - if (ov::is_type(node) && node->get_output_element_type(0) == ngraph::element::f16) { + if (ov::is_type(node)) { ov::disable_divide_conversion(node->shared_from_this()); } }; diff --git a/src/tests/functional/inference_engine/transformations/common_optimizations/convert_divide.cpp b/src/tests/functional/inference_engine/transformations/common_optimizations/convert_divide.cpp index 95bb69b50d1..a96e9a2a793 100644 --- a/src/tests/functional/inference_engine/transformations/common_optimizations/convert_divide.cpp +++ b/src/tests/functional/inference_engine/transformations/common_optimizations/convert_divide.cpp @@ -212,3 +212,28 @@ TEST_F(TransformationTestsF, ConvertDivideFP16ShapeOfSubgraphNegative2) { manager.register_pass(); } } + +TEST_F(TransformationTestsF, ConvertDivideFP32ShapeOfSubgraphNegative) { + { + auto data = std::make_shared(ngraph::element::f32, ngraph::Shape{1, 3, 22, 22}); + auto gather = ngraph::op::util::node_to_get_shape_value_of_indices_from_shape_source(data, {2, 3}); + auto convert = std::make_shared(gather, ngraph::element::f32); + auto divide_constant = ngraph::opset1::Constant::create(ngraph::element::f32, ngraph::Shape{1}, {0.5}); + auto divide = std::make_shared(convert, divide_constant); + auto convert_after = std::make_shared(divide, ngraph::element::i32); + + ngraph::opset1::Interpolate::Attributes interp_attr; + interp_attr.antialias = false; + interp_attr.axes = {2, 3}; + interp_attr.mode = "nearest"; + interp_attr.pads_begin = {0, 0, 0, 0}; + interp_attr.pads_end = {0, 0, 0, 0}; + + auto interpolate = std::make_shared(data, convert_after, interp_attr); + + function = std::make_shared(ngraph::NodeVector{interpolate}, ngraph::ParameterVector{data}); + + manager.register_pass(); + manager.register_pass(); + } +}