diff --git a/intrinsiccv/CMakeLists.txt b/intrinsiccv/CMakeLists.txt index 1bd532bf98e416a8cf185d030ab3c46953cbe75e..bf733f2605c7e8ba2975fc65069a1b1895494573 100644 --- a/intrinsiccv/CMakeLists.txt +++ b/intrinsiccv/CMakeLists.txt @@ -76,6 +76,11 @@ set(INTRINSICCV_WARNING_FLAGS "-Wold-style-cast" ) +# Work around bug in pre-release Clang 18 +if (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 18.0.0) + list(APPEND INTRINSICCV_WARNING_FLAGS "-Wno-undefined-arm-streaming") +endif() + set(INTRINSICCV_SDL_FLAGS "-include" "unsafe.h" diff --git a/intrinsiccv/include/config.h b/intrinsiccv/include/config.h index 66d82a5c5baad8df8d1ce57c371da71f0cddfa00..d0dde78b8e9a660069a2c04743ac804c05134e12 100644 --- a/intrinsiccv/include/config.h +++ b/intrinsiccv/include/config.h @@ -60,9 +60,8 @@ #undef INTRINSICCV_SVE2_128 #define INTRINSICCV_SVE2_128 0 #define INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_ATTR_SECTION(".text.sme2") -#define INTRINSICCV_LOCALLY_STREAMING __attribute__((arm_locally_streaming)) -#define INTRINSICCV_STREAMING_COMPATIBLE \ - __attribute__((arm_streaming_compatible)) +#define INTRINSICCV_LOCALLY_STREAMING __arm_locally_streaming +#define INTRINSICCV_STREAMING_COMPATIBLE __arm_streaming_compatible #else #define INTRINSICCV_LOCALLY_STREAMING #define INTRINSICCV_STREAMING_COMPATIBLE diff --git a/intrinsiccv/include/conversions/gray_to_rgb.h b/intrinsiccv/include/conversions/gray_to_rgb.h index c9c0d5ffa6e8eafd859542fec0e85ecf3cb53369..02987d2205b8929edae6ccab79f7460ca54dd8a1 100644 --- a/intrinsiccv/include/conversions/gray_to_rgb.h +++ b/intrinsiccv/include/conversions/gray_to_rgb.h @@ -31,9 +31,11 @@ void gray_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, namespace sme2 { +INTRINSICCV_LOCALLY_STREAMING void gray_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); +INTRINSICCV_LOCALLY_STREAMING void gray_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); diff --git a/intrinsiccv/include/conversions/rgb_to_rgb.h b/intrinsiccv/include/conversions/rgb_to_rgb.h index 1be7e471fabf677977f8b7088c2d61a9728c6ef1..bbb307336827f5644dc69669f8b0c74a8523c602 100644 --- a/intrinsiccv/include/conversions/rgb_to_rgb.h +++ b/intrinsiccv/include/conversions/rgb_to_rgb.h @@ -45,16 +45,27 @@ void rgba_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, namespace sme2 { +INTRINSICCV_LOCALLY_STREAMING void rgb_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); + +INTRINSICCV_LOCALLY_STREAMING void rgba_to_bgra_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); + +INTRINSICCV_LOCALLY_STREAMING void rgb_to_bgra_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); + +INTRINSICCV_LOCALLY_STREAMING void rgb_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); + +INTRINSICCV_LOCALLY_STREAMING void rgba_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); + +INTRINSICCV_LOCALLY_STREAMING void rgba_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); diff --git a/intrinsiccv/include/conversions/yuv_to_rgb.h b/intrinsiccv/include/conversions/yuv_to_rgb.h index 9348b618fe4125e247adeaae88109f3cfa1fbc33..860d8186d01a6df052d1b10898040793eba24475 100644 --- a/intrinsiccv/include/conversions/yuv_to_rgb.h +++ b/intrinsiccv/include/conversions/yuv_to_rgb.h @@ -131,21 +131,25 @@ void yuv_sp_to_bgra_u8(const uint8_t *src_y, size_t src_y_stride, } // namespace sve2 namespace sme2 { +INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_rgb_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21); +INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_rgba_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21); +INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_bgr_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21); +INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_bgra_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, diff --git a/intrinsiccv/include/filters/gaussian_blur.h b/intrinsiccv/include/filters/gaussian_blur.h index c9042b0b9e50490d6bc084c67995a323cbf54ce8..f3a03cb2e504285ec0e7bd6879e6b91412e83485 100644 --- a/intrinsiccv/include/filters/gaussian_blur.h +++ b/intrinsiccv/include/filters/gaussian_blur.h @@ -38,6 +38,7 @@ void gaussian_blur_5x5_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, namespace sme2 { +INTRINSICCV_LOCALLY_STREAMING void gaussian_blur_5x5_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, size_t channels, diff --git a/intrinsiccv/include/filters/sobel.h b/intrinsiccv/include/filters/sobel.h index 5d9b9d639526f5fb021ad878283a558b9732dee8..165f0d65797d9b86c64751b7bbe59bbc2751ce1c 100644 --- a/intrinsiccv/include/filters/sobel.h +++ b/intrinsiccv/include/filters/sobel.h @@ -5,8 +5,7 @@ #ifndef INTRINSICCV_FILTERS_SOBEL_H #define INTRINSICCV_FILTERS_SOBEL_H -#include -#include +#include "intrinsiccv.h" namespace intrinsiccv { @@ -29,9 +28,11 @@ void sobel_3x3_vertical_s16_u8(const uint8_t *src, size_t src_stride, } // namespace sve2 namespace sme2 { +INTRINSICCV_LOCALLY_STREAMING void sobel_3x3_horizontal_s16_u8(const uint8_t *src, size_t src_stride, int16_t *dst, size_t dst_stride, size_t width, size_t height, size_t channels); +INTRINSICCV_LOCALLY_STREAMING void sobel_3x3_vertical_s16_u8(const uint8_t *src, size_t src_stride, int16_t *dst, size_t dst_stride, size_t width, size_t height, size_t channels); diff --git a/intrinsiccv/include/resize/resize.h b/intrinsiccv/include/resize/resize.h index 4478c39caf777f7ce92f97191d58207b77cc17ab..e9ceb8229a5c49106c9e9783135f3559eaf52355 100644 --- a/intrinsiccv/include/resize/resize.h +++ b/intrinsiccv/include/resize/resize.h @@ -5,8 +5,7 @@ #ifndef INTRINSICCV_RESIZE_RESIZE_H #define INTRINSICCV_RESIZE_RESIZE_H -#include -#include +#include "intrinsiccv.h" namespace intrinsiccv { @@ -25,6 +24,7 @@ void resize_to_quarter_u8(const uint8_t *src, size_t src_stride, } // namespace sve2 namespace sme2 { +INTRINSICCV_LOCALLY_STREAMING void resize_to_quarter_u8(const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, uint8_t *dst, size_t dst_stride, size_t dst_width, diff --git a/intrinsiccv/include/traits.h b/intrinsiccv/include/traits.h index ce86e150a5571130c7a6027d5b6215f52702a06f..d29dd5b2b3b1cef91b879ca7927cacbfcefb8fa2 100644 --- a/intrinsiccv/include/traits.h +++ b/intrinsiccv/include/traits.h @@ -19,8 +19,8 @@ class remove_streaming_compatible; #if INTRINSICCV_TARGET_SME2 template -class remove_streaming_compatible { +class remove_streaming_compatible { public: using type = Ret (Impl::*)(Args...); }; diff --git a/intrinsiccv/src/arithmetics/absdiff_sme2.cpp b/intrinsiccv/src/arithmetics/absdiff_sme2.cpp index f63559d53d64d84eb0240e2b285036cb68e10724..d3ffc1cbfb00143e9e3fe1293c3e56184a04163f 100644 --- a/intrinsiccv/src/arithmetics/absdiff_sme2.cpp +++ b/intrinsiccv/src/arithmetics/absdiff_sme2.cpp @@ -37,7 +37,7 @@ class SaturatingAbsDiff final : public UnrollTwice { }; // end of class SaturatingAbsDiff template -void INTRINSICCV_LOCALLY_STREAMING saturating_absdiff( +INTRINSICCV_LOCALLY_STREAMING void saturating_absdiff( const T *src_a, size_t src_a_stride, const T *src_b, size_t src_b_stride, T *dst, size_t dst_stride, size_t width, size_t height) { SaturatingAbsDiff operation; diff --git a/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp b/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp index 727da37ab2dc8de1d356cb9c7632623e65f12a54..f76817e6be12031f24ad7861d794ad03d04474f4 100644 --- a/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp +++ b/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp @@ -7,7 +7,7 @@ namespace intrinsiccv::sme2 { template -void INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING +INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void add_abs_with_threshold(const T *src_a, size_t src_a_stride, const T *src_b, size_t src_b_stride, T *dst, size_t dst_stride, size_t width, size_t height, T threshold) { @@ -15,12 +15,11 @@ add_abs_with_threshold(const T *src_a, size_t src_a_stride, const T *src_b, dst_stride, width, height, threshold); } -#define INTRINSICCV_INSTANTIATE_TEMPLATE(type) \ - template void INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING \ - add_abs_with_threshold(const type *src_a, size_t src_a_stride, \ - const type *src_b, size_t src_b_stride, \ - type *dst, size_t dst_stride, size_t width, \ - size_t height, type threshold) +#define INTRINSICCV_INSTANTIATE_TEMPLATE(type) \ + template INTRINSICCV_TARGET_FN_ATTS void add_abs_with_threshold( \ + const type *src_a, size_t src_a_stride, const type *src_b, \ + size_t src_b_stride, type *dst, size_t dst_stride, size_t width, \ + size_t height, type threshold) INTRINSICCV_INSTANTIATE_TEMPLATE(int16_t); diff --git a/intrinsiccv/src/arithmetics/add_sme2.cpp b/intrinsiccv/src/arithmetics/add_sme2.cpp index b820fccf6e99187b1e0499d83d5f45b41938b729..1cab9a7750a1abf72b919a4bc6b4b662060535ed 100644 --- a/intrinsiccv/src/arithmetics/add_sme2.cpp +++ b/intrinsiccv/src/arithmetics/add_sme2.cpp @@ -23,7 +23,7 @@ class SaturatingAdd final : public UnrollTwice { }; // end of class SaturatingAdd template -void INTRINSICCV_LOCALLY_STREAMING saturating_add( +INTRINSICCV_LOCALLY_STREAMING void saturating_add( const T *src_a, size_t src_a_stride, const T *src_b, size_t src_b_stride, T *dst, size_t dst_stride, size_t width, size_t height) { SaturatingAdd operation; diff --git a/intrinsiccv/src/arithmetics/sub_sme2.cpp b/intrinsiccv/src/arithmetics/sub_sme2.cpp index 37a90fb09d7ede5b69c76b15146837957a0ae6c1..4c0b66e1cd50e1a4be78395d8463e0d5838be2e9 100644 --- a/intrinsiccv/src/arithmetics/sub_sme2.cpp +++ b/intrinsiccv/src/arithmetics/sub_sme2.cpp @@ -23,7 +23,7 @@ class SaturatingSub final : public UnrollTwice { }; // end of class SaturatingSub template -void INTRINSICCV_LOCALLY_STREAMING saturating_sub( +INTRINSICCV_LOCALLY_STREAMING void saturating_sub( const T *src_a, size_t src_a_stride, const T *src_b, size_t src_b_stride, T *dst, size_t dst_stride, size_t width, size_t height) { SaturatingSub operation; diff --git a/intrinsiccv/src/arithmetics/threshold_sme2.cpp b/intrinsiccv/src/arithmetics/threshold_sme2.cpp index 98eec449fbbf3bd07a8d6d75598b632df1b32fd8..fa3415fc7fbf9b557f3fad0bd03653df308d941f 100644 --- a/intrinsiccv/src/arithmetics/threshold_sme2.cpp +++ b/intrinsiccv/src/arithmetics/threshold_sme2.cpp @@ -7,9 +7,9 @@ namespace intrinsiccv::sme2 { template -void INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING -threshold_binary(const T *src, size_t src_stride, T *dst, size_t dst_stride, - size_t width, size_t height, T threshold, T value) { +INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void threshold_binary( + const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, + size_t height, T threshold, T value) { intrinsiccv::sve2::threshold_binary_sc(src, src_stride, dst, dst_stride, width, height, threshold, value); } diff --git a/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp b/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp index a4dc3b1352e20ea49741251af3aaec4b8b03edda..bb582092258b72aa9d60510b8a36b8c7d7800935 100644 --- a/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp +++ b/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp @@ -6,16 +6,18 @@ namespace intrinsiccv::sme2 { -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void gray_to_rgb_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void gray_to_rgb_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::gray_to_rgb_u8_sc(src, src_stride, dst, dst_stride, width, height); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void gray_to_rgba_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void gray_to_rgba_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::gray_to_rgba_u8_sc(src, src_stride, dst, dst_stride, width, height); } diff --git a/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp b/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp index 760b78659579c33a120911ebdfd4f4927a9ed32a..038da468417dd2ffa42596f27d9ed88efcd29566 100644 --- a/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp +++ b/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp @@ -6,44 +6,50 @@ namespace intrinsiccv::sme2 { -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void rgb_to_bgr_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void rgb_to_bgr_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::rgb_to_bgr_u8_sc(src, src_stride, dst, dst_stride, width, height); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void rgba_to_bgra_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void rgba_to_bgra_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::rgba_to_bgra_u8_sc(src, src_stride, dst, dst_stride, width, height); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void rgb_to_bgra_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void rgb_to_bgra_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::rgb_to_bgra_u8_sc(src, src_stride, dst, dst_stride, width, height); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void rgb_to_rgba_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void rgb_to_rgba_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::rgb_to_rgba_u8_sc(src, src_stride, dst, dst_stride, width, height); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void rgba_to_bgr_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void rgba_to_bgr_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::rgba_to_bgr_u8_sc(src, src_stride, dst, dst_stride, width, height); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void rgba_to_rgb_u8( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +INTRINSICCV_TARGET_FN_ATTS void rgba_to_rgb_u8(const uint8_t *src, + size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, + size_t height) { intrinsiccv::sve2::rgba_to_rgb_u8_sc(src, src_stride, dst, dst_stride, width, height); } diff --git a/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp b/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp index d3c37cca0c08d32b3d3ec465f8ef127aee98303c..58726638fbaecb263a364d6175df2737dc6e7e03 100644 --- a/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp +++ b/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp @@ -6,7 +6,7 @@ namespace intrinsiccv::sme2 { -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_rgb_u8( +INTRINSICCV_TARGET_FN_ATTS void yuv_sp_to_rgb_u8( const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { @@ -15,7 +15,7 @@ INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_rgb_u8( height, is_nv21); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_rgba_u8( +INTRINSICCV_TARGET_FN_ATTS void yuv_sp_to_rgba_u8( const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { @@ -24,7 +24,7 @@ INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_rgba_u8( height, is_nv21); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_bgr_u8( +INTRINSICCV_TARGET_FN_ATTS void yuv_sp_to_bgr_u8( const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { @@ -33,7 +33,7 @@ INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_bgr_u8( height, is_nv21); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void yuv_sp_to_bgra_u8( +INTRINSICCV_TARGET_FN_ATTS void yuv_sp_to_bgra_u8( const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { diff --git a/intrinsiccv/src/filters/gaussian_blur_sme2.cpp b/intrinsiccv/src/filters/gaussian_blur_sme2.cpp index f30c67aeb12ddc72dc6e181f2b5c491d632d1a9a..d9a9131e7219ef2e11aadb29a2faf471aa1a34ea 100644 --- a/intrinsiccv/src/filters/gaussian_blur_sme2.cpp +++ b/intrinsiccv/src/filters/gaussian_blur_sme2.cpp @@ -7,11 +7,11 @@ namespace intrinsiccv::sme2 { -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void -gaussian_blur_5x5_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, - size_t dst_stride, size_t width, size_t height, - size_t channels, intrinsiccv_border_type_t border_type, - const intrinsiccv_filter_params_t *params) { +INTRINSICCV_TARGET_FN_ATTS void gaussian_blur_5x5_u8( + const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, + size_t width, size_t height, size_t channels, + intrinsiccv_border_type_t border_type, + const intrinsiccv_filter_params_t *params) { sve2::discrete_gaussian_blur(src, src_stride, dst, dst_stride, width, height, channels, border_type, params); diff --git a/intrinsiccv/src/filters/sobel_sme2.cpp b/intrinsiccv/src/filters/sobel_sme2.cpp index c98d99a582892e3701ff05e0bba44a1075bf26a0..5c8d86dac69648441fb7dc9fbb875a1b80bac297 100644 --- a/intrinsiccv/src/filters/sobel_sme2.cpp +++ b/intrinsiccv/src/filters/sobel_sme2.cpp @@ -6,18 +6,16 @@ namespace intrinsiccv::sme2 { -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void -sobel_3x3_horizontal_s16_u8(const uint8_t *src, size_t src_stride, int16_t *dst, - size_t dst_stride, size_t width, size_t height, - size_t channels) { +INTRINSICCV_TARGET_FN_ATTS void sobel_3x3_horizontal_s16_u8( + const uint8_t *src, size_t src_stride, int16_t *dst, size_t dst_stride, + size_t width, size_t height, size_t channels) { intrinsiccv::sve2::sobel_3x3_horizontal_s16_u8_sc( src, src_stride, dst, dst_stride, width, height, channels); } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void -sobel_3x3_vertical_s16_u8(const uint8_t *src, size_t src_stride, int16_t *dst, - size_t dst_stride, size_t width, size_t height, - size_t channels) { +INTRINSICCV_TARGET_FN_ATTS void sobel_3x3_vertical_s16_u8( + const uint8_t *src, size_t src_stride, int16_t *dst, size_t dst_stride, + size_t width, size_t height, size_t channels) { intrinsiccv::sve2::sobel_3x3_vertical_s16_u8_sc( src, src_stride, dst, dst_stride, width, height, channels); } diff --git a/intrinsiccv/src/morphology/morphology_sme2.cpp b/intrinsiccv/src/morphology/morphology_sme2.cpp index 52eea3c20278eb9f1ce89e4af140aa675ae9b5e1..53d2e35173fa9d8d1ef0d26d2e8b5a696af9fb72 100644 --- a/intrinsiccv/src/morphology/morphology_sme2.cpp +++ b/intrinsiccv/src/morphology/morphology_sme2.cpp @@ -7,17 +7,17 @@ namespace intrinsiccv::sme2 { template -void INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING -dilate(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, - size_t height, const intrinsiccv_morphology_params_t *params) { +INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void dilate( + const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, + size_t height, const intrinsiccv_morphology_params_t *params) { intrinsiccv::sve2::dilate_sc(src, src_stride, dst, dst_stride, width, height, params); } template -void INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING -erode(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, - size_t height, const intrinsiccv_morphology_params_t *params) { +INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void erode( + const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, + size_t height, const intrinsiccv_morphology_params_t *params) { intrinsiccv::sve2::erode_sc(src, src_stride, dst, dst_stride, width, height, params); } diff --git a/intrinsiccv/src/morphology/morphology_sve2.cpp b/intrinsiccv/src/morphology/morphology_sve2.cpp index e0d6c16bf5daf6ccd1aeb5c061796679569907b2..e071f5b0b5195f85398765c6cffbcd50c18b8917 100644 --- a/intrinsiccv/src/morphology/morphology_sve2.cpp +++ b/intrinsiccv/src/morphology/morphology_sve2.cpp @@ -7,16 +7,16 @@ namespace intrinsiccv::sve2 { template -void INTRINSICCV_TARGET_FN_ATTS -dilate(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, - size_t height, const intrinsiccv_morphology_params_t *params) { +void INTRINSICCV_TARGET_FN_ATTS dilate( + const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, + size_t height, const intrinsiccv_morphology_params_t *params) { dilate_sc(src, src_stride, dst, dst_stride, width, height, params); } template -void INTRINSICCV_TARGET_FN_ATTS -erode(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, - size_t height, const intrinsiccv_morphology_params_t *params) { +void INTRINSICCV_TARGET_FN_ATTS erode( + const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, + size_t height, const intrinsiccv_morphology_params_t *params) { erode_sc(src, src_stride, dst, dst_stride, width, height, params); } diff --git a/intrinsiccv/src/resize/resize_sc.h b/intrinsiccv/src/resize/resize_sc.h index 2d70a25a08f33ddab1442084f5aa1435c8b9eac7..0f6c6c1f94303dfd1182cb9e056cbf3f8505f965 100644 --- a/intrinsiccv/src/resize/resize_sc.h +++ b/intrinsiccv/src/resize/resize_sc.h @@ -139,10 +139,10 @@ static inline void process_single_row( } } -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_STREAMING_COMPATIBLE static void -resize_to_quarter_u8_sc(const uint8_t *src, size_t src_stride, size_t src_width, - size_t src_height, uint8_t *dst, size_t dst_stride, - size_t dst_width, size_t dst_height) { +INTRINSICCV_TARGET_FN_ATTS static void resize_to_quarter_u8_sc( + const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, + uint8_t *dst, size_t dst_stride, size_t dst_width, + size_t dst_height) INTRINSICCV_STREAMING_COMPATIBLE { Rows src_rows{src, src_stride, /* channels*/ 1}; Rows dst_rows{dst, dst_stride, /* channels*/ 1}; LoopUnroll2 loop{src_height, /* Process two rows */ 2}; diff --git a/intrinsiccv/src/resize/resize_sme2.cpp b/intrinsiccv/src/resize/resize_sme2.cpp index 765ead07bb997f6152d7e69f9873a7c782c3bbb1..8ee20e12e9c6952358b623ac4bacca8c0252abc4 100644 --- a/intrinsiccv/src/resize/resize_sme2.cpp +++ b/intrinsiccv/src/resize/resize_sme2.cpp @@ -7,10 +7,9 @@ namespace intrinsiccv::sme2 { -INTRINSICCV_TARGET_FN_ATTS INTRINSICCV_LOCALLY_STREAMING void -resize_to_quarter_u8(const uint8_t *src, size_t src_stride, size_t src_width, - size_t src_height, uint8_t *dst, size_t dst_stride, - size_t dst_width, size_t dst_height) { +INTRINSICCV_TARGET_FN_ATTS void resize_to_quarter_u8( + const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, + uint8_t *dst, size_t dst_stride, size_t dst_width, size_t dst_height) { intrinsiccv::sve2::resize_to_quarter_u8_sc(src, src_stride, src_width, src_height, dst, dst_stride, dst_width, dst_height); diff --git a/test/framework/utils.h b/test/framework/utils.h index fa789e90721dffb130c80021ac58a08384ec9f44..a24f0602fdcfe151367775cc8210dd67e8521650 100644 --- a/test/framework/utils.h +++ b/test/framework/utils.h @@ -7,6 +7,7 @@ #include #include +#include #include #include #include