From 4a20083aee04136a9a13949ba1e393b695b155e4 Mon Sep 17 00:00:00 2001 From: Ioana Ghiban Date: Thu, 8 Aug 2024 13:14:44 +0200 Subject: [PATCH 1/2] Disable KleidiCV compare_equal in HAL --- adapters/opencv/kleidicv_hal.cpp | 4 ---- doc/opencv.md | 1 - 2 files changed, 5 deletions(-) diff --git a/adapters/opencv/kleidicv_hal.cpp b/adapters/opencv/kleidicv_hal.cpp index df03a09f5..3b3b49c7e 100644 --- a/adapters/opencv/kleidicv_hal.cpp +++ b/adapters/opencv/kleidicv_hal.cpp @@ -992,10 +992,6 @@ int compare_u8(const uchar *src1_data, size_t src1_step, const uchar *src2_data, size_t src2_step, uchar *dst_data, size_t dst_step, int width, int height, int operation) { switch (operation) { - case cv::CMP_EQ: - return convert_error( - kleidicv_compare_equal_u8(src1_data, src1_step, src2_data, src2_step, - dst_data, dst_step, width, height)); case cv::CMP_GT: return convert_error(kleidicv_compare_greater_u8( src1_data, src1_step, src2_data, src2_step, dst_data, dst_step, width, diff --git a/doc/opencv.md b/doc/opencv.md index f687d9b35..0d0b3de03 100644 --- a/doc/opencv.md +++ b/doc/opencv.md @@ -220,5 +220,4 @@ Notes on parameters: * `src1_data`, `src2_data`, `dst_data` - only support `CV_8U` depth. * `operation` - flag specifying correspondence between the arrays. Supported [OpenCV cmp types](https://docs.opencv.org/5.x/d2/de8/group__core__array.html#ga0cc47ff833d40b58ecbe1d609a53d784) are: - + `cv::CMP_EQ ` + `cv::CMP_GT` -- GitLab From 28e4c88ac7c8688da2c5a861690a521607b467af Mon Sep 17 00:00:00 2001 From: Ioana Ghiban Date: Thu, 8 Aug 2024 17:20:24 +0200 Subject: [PATCH 2/2] Limit SME backend on the compare_equal API --- kleidicv/src/arithmetics/compare_api.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/kleidicv/src/arithmetics/compare_api.cpp b/kleidicv/src/arithmetics/compare_api.cpp index 7f67fafbc..011005b5e 100644 --- a/kleidicv/src/arithmetics/compare_api.cpp +++ b/kleidicv/src/arithmetics/compare_api.cpp @@ -52,11 +52,17 @@ kleidicv_error_t compare_greater(const ScalarType *src_a, size_t src_a_stride, } // namespace kleidicv -#define KLEIDICV_DEFINE_C_API(api_name, impl_name, type) \ - KLEIDICV_MULTIVERSION_C_API( \ - api_name, &kleidicv::neon::impl_name, \ - KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::impl_name), \ - &kleidicv::sme2::impl_name) - -KLEIDICV_DEFINE_C_API(kleidicv_compare_equal_u8, compare_equal, uint8_t); -KLEIDICV_DEFINE_C_API(kleidicv_compare_greater_u8, compare_greater, uint8_t); +#define KLEIDICV_DEFINE_CMP_EQ_API(name, type) \ + KLEIDICV_MULTIVERSION_C_API( \ + name, &kleidicv::neon::compare_equal, \ + KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::compare_equal), \ + KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::compare_equal)) + +#define KLEIDICV_DEFINE_CMP_GT_API(name, type) \ + KLEIDICV_MULTIVERSION_C_API( \ + name, &kleidicv::neon::compare_greater, \ + KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::compare_greater), \ + &kleidicv::sme2::compare_greater) + +KLEIDICV_DEFINE_CMP_EQ_API(kleidicv_compare_equal_u8, uint8_t); +KLEIDICV_DEFINE_CMP_GT_API(kleidicv_compare_greater_u8, uint8_t); -- GitLab