diff --git a/src/common/transformations/src/transformations/common_optimizations/clamp_fusion.cpp b/src/common/transformations/src/transformations/common_optimizations/clamp_fusion.cpp index 49f1a0e2cab..2c12b61443a 100644 --- a/src/common/transformations/src/transformations/common_optimizations/clamp_fusion.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/clamp_fusion.cpp @@ -48,6 +48,8 @@ ov::pass::ClampFusion::ClampFusion() { double min_value = min_const->cast_vector()[0]; double max_value = max_const->cast_vector()[0]; + if (min_value > max_value) + return false; auto clamp = register_new_node(data, min_value, max_value); diff --git a/tests/layer_tests/pytorch_tests/test_clamp.py b/tests/layer_tests/pytorch_tests/test_clamp.py index 5c860f9be65..3a4ce5c6c8d 100644 --- a/tests/layer_tests/pytorch_tests/test_clamp.py +++ b/tests/layer_tests/pytorch_tests/test_clamp.py @@ -42,7 +42,7 @@ class TestClamp(PytorchLayerTest): return aten_clamp(minimum, maximum, as_tensors, op_type), ref_net, op_name @pytest.mark.parametrize("minimum,maximum", - [(0., 1.), (-0.5, 1.5), (None, 10.), (None, -10.), (10., None), (-10., None), (100, 200)]) + [(0., 1.), (-0.5, 1.5), (None, 10.), (None, -10.), (10., None), (-10., None), (100, 200), (1.0, 0.0)]) @pytest.mark.parametrize("as_tensors", [True, False]) @pytest.mark.parametrize("op_type", ["clamp", "clamp_"]) @pytest.mark.nightly @@ -50,11 +50,6 @@ class TestClamp(PytorchLayerTest): self._test(*self.create_model(minimum, maximum, as_tensors, op_type), ie_device, precision, ir_version) - @pytest.mark.xfail(reason='OpenVINO clamp does not support min > max') - def test_clamp_min_greater(self, ie_device, precision, ir_version): - self._test(*self.create_model(1.0, 0.0), - ie_device, precision, ir_version) - class TestClampMin(PytorchLayerTest): def _prepare_input(self):