From c5ef391b8caa4e4eb4345f7c2456a05721987782 Mon Sep 17 00:00:00 2001 From: Mark Horvath Date: Thu, 10 Jul 2025 13:08:34 +0000 Subject: [PATCH 1/2] Rename SME2 to SME, except for filenames So far all SME2 implementations only used the SME feature set, so it makes sense to rename it to just SME and compile it for the SME extension. That way future implementations using SME2 features can be distinguished. Changes related to filenames are part of a separate commit. --- .devcontainer/coverage.sh | 2 +- .devcontainer/disassemble.sh | 10 +-- .vscode/launch.json | 2 +- .vscode/launch.json.license | 2 +- .vscode/tasks.json | 12 ++-- CHANGELOG.md | 2 + adapters/opencv/CMakeLists.txt | 4 +- doc/build.md | 4 +- doc/integration.md | 4 +- examples/extract_one_operation/CMakeLists.txt | 4 +- .../sme_gaussian_blur.cpp | 12 ++-- kleidicv/CMakeLists.txt | 38 +++++++----- .../include/kleidicv/arithmetics/rotate.h | 6 +- .../include/kleidicv/arithmetics/transpose.h | 6 +- kleidicv/include/kleidicv/config.h.in | 14 ++--- .../kleidicv/conversions/gray_to_rgb.h | 6 +- .../include/kleidicv/conversions/rgb_to_rgb.h | 6 +- .../include/kleidicv/conversions/rgb_to_yuv.h | 6 +- .../kleidicv/conversions/yuv_sp_to_rgb.h | 6 +- .../include/kleidicv/conversions/yuv_to_rgb.h | 4 +- kleidicv/include/kleidicv/dispatch.h | 62 +++++++++---------- .../kleidicv/filters/blur_and_downsample.h | 6 +- .../include/kleidicv/filters/gaussian_blur.h | 6 +- .../include/kleidicv/filters/median_blur.h | 4 +- kleidicv/include/kleidicv/filters/scharr.h | 6 +- .../filters/separable_filter_15x15_sc.h | 4 +- .../filters/separable_filter_21x21_sc.h | 2 +- .../filters/separable_filter_3x3_sc.h | 4 +- .../filters/separable_filter_5x5_sc.h | 4 +- .../filters/separable_filter_7x7_sc.h | 4 +- kleidicv/include/kleidicv/filters/sobel.h | 6 +- .../include/kleidicv/morphology/workspace.h | 4 +- kleidicv/include/kleidicv/resize/resize.h | 6 +- .../include/kleidicv/resize/resize_linear.h | 6 +- kleidicv/include/kleidicv/sve2.h | 2 +- kleidicv/include/kleidicv/traits.h | 4 +- kleidicv/include/kleidicv/types.h | 14 ++--- kleidicv/src/analysis/min_max_api.cpp | 8 +-- kleidicv/src/analysis/min_max_sme2.cpp | 6 +- kleidicv/src/arithmetics/absdiff_api.cpp | 8 +-- kleidicv/src/arithmetics/absdiff_sme2.cpp | 6 +- .../add_abs_with_threshold_api.cpp | 8 +-- .../add_abs_with_threshold_sme2.cpp | 6 +- kleidicv/src/arithmetics/add_api.cpp | 8 +-- kleidicv/src/arithmetics/add_sme2.cpp | 6 +- kleidicv/src/arithmetics/compare_api.cpp | 10 +-- kleidicv/src/arithmetics/compare_sme2.cpp | 6 +- kleidicv/src/arithmetics/exp_api.cpp | 8 +-- kleidicv/src/arithmetics/exp_sme2.cpp | 6 +- kleidicv/src/arithmetics/in_range_api.cpp | 8 +-- kleidicv/src/arithmetics/in_range_sme2.cpp | 6 +- kleidicv/src/arithmetics/multiply_api.cpp | 6 +- kleidicv/src/arithmetics/scale_api.cpp | 8 +-- kleidicv/src/arithmetics/scale_sme2.cpp | 6 +- kleidicv/src/arithmetics/sub_api.cpp | 8 +-- kleidicv/src/arithmetics/sub_sme2.cpp | 6 +- kleidicv/src/arithmetics/sum_api.cpp | 8 +-- kleidicv/src/arithmetics/sum_sme2.cpp | 6 +- kleidicv/src/arithmetics/threshold_api.cpp | 8 +-- kleidicv/src/arithmetics/threshold_sme2.cpp | 6 +- kleidicv/src/conversions/float_conv_api.cpp | 19 +++--- kleidicv/src/conversions/float_conv_sme2.cpp | 6 +- kleidicv/src/conversions/gray_to_rgb_api.cpp | 4 +- kleidicv/src/conversions/gray_to_rgb_sme2.cpp | 6 +- kleidicv/src/conversions/rgb_to_rgb_api.cpp | 4 +- kleidicv/src/conversions/rgb_to_rgb_sme2.cpp | 6 +- kleidicv/src/conversions/rgb_to_yuv_api.cpp | 4 +- kleidicv/src/conversions/rgb_to_yuv_sme2.cpp | 6 +- .../src/conversions/yuv_sp_to_rgb_api.cpp | 4 +- .../src/conversions/yuv_sp_to_rgb_sme2.cpp | 6 +- kleidicv/src/conversions/yuv_to_rgb_api.cpp | 2 +- kleidicv/src/conversions/yuv_to_rgb_sme2.cpp | 4 +- .../src/filters/blur_and_downsample_api.cpp | 4 +- .../src/filters/blur_and_downsample_sme2.cpp | 6 +- kleidicv/src/filters/gaussian_blur_api.cpp | 2 +- kleidicv/src/filters/gaussian_blur_fixed_sc.h | 4 +- .../src/filters/gaussian_blur_fixed_sme2.cpp | 4 +- kleidicv/src/filters/median_blur_api.cpp | 2 +- .../median_blur_sorting_network_sme2.cpp | 4 +- kleidicv/src/filters/scharr_api.cpp | 4 +- kleidicv/src/filters/scharr_sme2.cpp | 6 +- .../src/filters/separable_filter_2d_api.cpp | 8 +-- .../src/filters/separable_filter_2d_sme2.cpp | 6 +- kleidicv/src/filters/sobel_api.cpp | 4 +- kleidicv/src/filters/sobel_sme2.cpp | 6 +- kleidicv/src/logical/bitwise_and_api.cpp | 8 +-- kleidicv/src/logical/bitwise_and_sme2.cpp | 6 +- kleidicv/src/morphology/morphology_api.cpp | 8 +-- kleidicv/src/morphology/morphology_sme2.cpp | 6 +- kleidicv/src/resize/resize_api.cpp | 4 +- kleidicv/src/resize/resize_linear_api.cpp | 4 +- kleidicv/src/resize/resize_linear_sme2.cpp | 6 +- kleidicv/src/resize/resize_sme2.cpp | 6 +- scripts/benchmark/build.sh | 6 +- scripts/ci-opencv.sh | 2 +- scripts/ci.sh | 10 +-- scripts/run_opencv_conformity_checks.sh | 4 +- 97 files changed, 327 insertions(+), 330 deletions(-) diff --git a/.devcontainer/coverage.sh b/.devcontainer/coverage.sh index 41274dc28..746c3fd11 100755 --- a/.devcontainer/coverage.sh +++ b/.devcontainer/coverage.sh @@ -12,7 +12,7 @@ BUILD_ID="${BUILD_ID}" \ COVERAGE="ON" \ CMAKE_CXX_FLAGS="--target=aarch64-linux-gnu" \ CMAKE_EXE_LINKER_FLAGS="--rtlib=compiler-rt -static -fuse-ld=lld" \ -EXTRA_CMAKE_ARGS="-DKLEIDICV_ENABLE_SME2=ON -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF" \ +EXTRA_CMAKE_ARGS="-DKLEIDICV_ENABLE_SME=ON -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF" \ ./scripts/build.sh kleidicv-test # Clean any coverage results from previous runs diff --git a/.devcontainer/disassemble.sh b/.devcontainer/disassemble.sh index 4173251c7..64575a2a1 100755 --- a/.devcontainer/disassemble.sh +++ b/.devcontainer/disassemble.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +# SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates # # SPDX-License-Identifier: Apache-2.0 @@ -10,8 +10,8 @@ FILE_PATH="$1" echo "Active file: ${FILE_PATH}" -if [[ ! "${FILE_PATH}" =~ ^kleidicv/src/.*/.*[_neon|_sve2|_sme2].cpp$ ]]; then - echo "Wrong source file! Please open a .cpp file from the 'kleidicv/src' directory ending '_neon', '_sve2' or '_sme2'!" +if [[ ! "${FILE_PATH}" =~ ^kleidicv/src/.*/.*[_neon|_sve2|_sme].cpp$ ]]; then + echo "Wrong source file! Please open a .cpp file from the 'kleidicv/src' directory ending '_neon', '_sve2' or '_sme'!" exit 0 fi @@ -19,8 +19,8 @@ if [[ "${FILE_PATH}" =~ _neon.cpp$ ]]; then SIMD_BUILD_DIRECTORY=kleidicv_neon.dir elif [[ "${FILE_PATH}" =~ _sve2.cpp$ ]]; then SIMD_BUILD_DIRECTORY=kleidicv_sve2.dir -elif [[ "${FILE_PATH}" =~ _sme2.cpp$ ]]; then - SIMD_BUILD_DIRECTORY=kleidicv_sme2.dir +elif [[ "${FILE_PATH}" =~ _sme.cpp$ ]]; then + SIMD_BUILD_DIRECTORY=kleidicv_sme.dir else echo "Unexpected filename!" exit 1 diff --git a/.vscode/launch.json b/.vscode/launch.json index 9a52dfd91..ab26a3c21 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -62,7 +62,7 @@ "preLaunchTask": "Build KleidiCV for debug", }, { - "name": "SME2 API tests", + "name": "SME API tests", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/kleidicv-debug/test/api/kleidicv-api-test", diff --git a/.vscode/launch.json.license b/.vscode/launch.json.license index 468a89751..3a94c3ffa 100644 --- a/.vscode/launch.json.license +++ b/.vscode/launch.json.license @@ -1,3 +1,3 @@ -SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates SPDX-License-Identifier: Apache-2.0 diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 7fad36f64..6ddbdd491 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -14,7 +14,7 @@ "env": { "CMAKE_CXX_FLAGS": "--target=aarch64-linux-gnu", "CMAKE_EXE_LINKER_FLAGS": "--rtlib=compiler-rt -static -fuse-ld=lld", - "EXTRA_CMAKE_ARGS": "-DKLEIDICV_ENABLE_SME2=ON -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=1" + "EXTRA_CMAKE_ARGS": "-DKLEIDICV_ENABLE_SME=ON -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=1" } }, "group": { @@ -36,7 +36,7 @@ "CMAKE_BUILD_TYPE": "Debug", "CMAKE_CXX_FLAGS": "--target=aarch64-linux-gnu", "CMAKE_EXE_LINKER_FLAGS": "--rtlib=compiler-rt -static -fuse-ld=lld", - "EXTRA_CMAKE_ARGS": "-DKLEIDICV_ENABLE_SME2=ON -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF" + "EXTRA_CMAKE_ARGS": "-DKLEIDICV_ENABLE_SME=ON -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF" } }, "group": { @@ -56,7 +56,7 @@ "env": { "BUILD_ID": "kleidicv-gcc", "CMAKE_EXE_LINKER_FLAGS": "-static", - "EXTRA_CMAKE_ARGS": "-DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF", + "EXTRA_CMAKE_ARGS": "-DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF", "CC": "aarch64-linux-gnu-gcc", "CXX": "aarch64-linux-gnu-g++" } @@ -78,7 +78,7 @@ "BUILD_ID": "kleidicv-benchmark", "CMAKE_CXX_FLAGS": "--target=aarch64-linux-gnu", "CMAKE_EXE_LINKER_FLAGS": "--rtlib=compiler-rt -static -fuse-ld=lld", - "EXTRA_CMAKE_ARGS": "-DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64 -DKLEIDICV_ENABLE_SME2=ON -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_BENCHMARK=ON" + "EXTRA_CMAKE_ARGS": "-DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64 -DKLEIDICV_ENABLE_SME=ON -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF -DKLEIDICV_BENCHMARK=ON" } }, "group": { @@ -163,7 +163,7 @@ } }, { - "label": "SME2 API tests", + "label": "SME API tests", "type": "process", "command": "qemu-aarch64", "args": [ @@ -185,7 +185,7 @@ "NEON API tests", "SVE2 API tests, 128 bits", "SVE2 API tests, 2048 bits", - "SME2 API tests" + "SME API tests" ], "group": { "kind": "test" diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b9d9bd91..ef38c3c79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ This changelog aims to follow the guiding principles of ### Changed - Performance of Gaussian Blur is greatly improved in return for some accuracy. (Except for binomial variants up to 7x7 kernel size.) +- Separate SME only implementations from ones using SME2 and add the build options + `KLEIDICV_ENABLE_SME` and `KLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS`. ## 0.5.0 - 2025-06-10 diff --git a/adapters/opencv/CMakeLists.txt b/adapters/opencv/CMakeLists.txt index bc0089074..816cb0e0a 100644 --- a/adapters/opencv/CMakeLists.txt +++ b/adapters/opencv/CMakeLists.txt @@ -55,8 +55,8 @@ if(NOT BUILD_SHARED_LIBS) COMPONENT dev ) endif() - if(KLEIDICV_ENABLE_SME2) - ocv_install_target(kleidicv_sme2 + if(KLEIDICV_ENABLE_SME) + ocv_install_target(kleidicv_sme EXPORT OpenCVModules ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} diff --git a/doc/build.md b/doc/build.md index d30905157..69915d144 100644 --- a/doc/build.md +++ b/doc/build.md @@ -221,7 +221,7 @@ cmake --build build-kleidicv-linux --parallel In addition to the standard CMake settings, KleidiCV behaviour can be modified at build time via the following CMake options: - `KLEIDICV_BENCHMARK` - Enable building KleidiCV benchmarks. The benchmarks use Google Benchmark which will be downloaded automatically. Off by default. -- `KLEIDICV_ENABLE_SME2` - Enable Scalable Matrix Extension 2 and Streaming Scalable Vector Extension code paths. Off by default while the [ACLE SME specification is in beta](https://github.com/ARM-software/acle/blob/main/main/acle.md#sme-language-extensions-and-intrinsics). - - `KLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS` - Limit Scalable Matrix Extension 2 code paths to cases where it is expected to provide a benefit over other code paths. On by default. Has no effect if `KLEIDICV_ENABLE_SME2` is off. +- `KLEIDICV_ENABLE_SME` - Enable Scalable Matrix Extension and Streaming Scalable Vector Extension code paths. Off by default while the [ACLE SME specification is in beta](https://github.com/ARM-software/acle/blob/main/main/acle.md#sme-language-extensions-and-intrinsics). + - `KLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS` - Limit Scalable Matrix Extension code paths to cases where it is expected to provide a benefit over other code paths. On by default. Has no effect if `KLEIDICV_ENABLE_SME` is off. - `KLEIDICV_ENABLE_SVE2` - Enable Scalable Vector Extension 2 code paths. This is on by default for some popular compilers known to support SVE2 but otherwise off by default. - `KLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS` - Limit Scalable Vector Extension 2 code paths to cases where it is expected to provide a benefit over other code paths. On by default. Has no effect if `KLEIDICV_ENABLE_SVE2` is off. diff --git a/doc/integration.md b/doc/integration.md index ef7726967..0fb3c2ba0 100644 --- a/doc/integration.md +++ b/doc/integration.md @@ -29,7 +29,7 @@ to demonstrate the usage of the created shared library. Generally, in KleidiCV one operation is implemented by one C++ source file, so the example library uses one `.cpp` file, -`kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp` from the KleidiCV source +`kleidicv/src/filters/gaussian_blur_fixed_sme.cpp` from the KleidiCV source tree, and all the included header files. `examples/extract_one_operation/sme_gaussian_blur.cpp` is needed to glue the example library's public API with the implementation. The example library's @@ -47,7 +47,7 @@ cmake -S kleidicv/examples/extract_one_operation \ ``` If make was used as the generator for CMake -`build/extract/CMakeFiles/sme_gaussian_blur.dir/path/to/kleidicv/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp.o.d` +`build/extract/CMakeFiles/sme_gaussian_blur.dir/path/to/kleidicv/kleidicv/src/filters/gaussian_blur_fixed_sme.cpp.o.d` contains which header files were used from KleidiCV. (But it also contains used system headers.) To try the example just run: diff --git a/examples/extract_one_operation/CMakeLists.txt b/examples/extract_one_operation/CMakeLists.txt index 82d739b84..b5270e762 100644 --- a/examples/extract_one_operation/CMakeLists.txt +++ b/examples/extract_one_operation/CMakeLists.txt @@ -30,8 +30,8 @@ target_include_directories( target_compile_options(sme_gaussian_blur PRIVATE "-march=armv9-a+sme" - "-DKLEIDICV_TARGET_SME2=1" - "-DKLEIDICV_TARGET_NAMESPACE=kleidicv::sme2" + "-DKLEIDICV_TARGET_SME=1" + "-DKLEIDICV_TARGET_NAMESPACE=kleidicv::sme" "-DKLEIDICV_TARGET_FN_ATTRS=" ) diff --git a/examples/extract_one_operation/sme_gaussian_blur.cpp b/examples/extract_one_operation/sme_gaussian_blur.cpp index eded1b6a0..794a11c17 100644 --- a/examples/extract_one_operation/sme_gaussian_blur.cpp +++ b/examples/extract_one_operation/sme_gaussian_blur.cpp @@ -27,9 +27,9 @@ static kleidicv_error_t filter_context_create( // As we cannot predict the intermediate size based on the parameters given, // just use the largest possible size out of all available operations. constexpr size_t intermediate_size = sizeof(uint32_t); - auto workspace = kleidicv::sme2::SeparableFilterWorkspace::create( - kleidicv::sme2::Rectangle{max_image_width, max_image_height}, - max_channels, intermediate_size); + auto workspace = kleidicv::sme::SeparableFilterWorkspace::create( + kleidicv::sme::Rectangle{max_image_width, max_image_height}, max_channels, + intermediate_size); if (!workspace) { *context = nullptr; return KLEIDICV_ERROR_ALLOCATION; @@ -47,8 +47,8 @@ static kleidicv_error_t filter_context_release( // Deliberately create and immediately destroy a unique_ptr to delete the // workspace. // NOLINTBEGIN(bugprone-unused-raii) - kleidicv::sme2::SeparableFilterWorkspace::Pointer{ - reinterpret_cast(context)}; + kleidicv::sme::SeparableFilterWorkspace::Pointer{ + reinterpret_cast(context)}; // NOLINTEND(bugprone-unused-raii) return KLEIDICV_OK; } @@ -85,7 +85,7 @@ kleidicv_error_t sme_gaussian_blur_u8(const uint8_t *src, size_t src_stride, return create_err; } - kleidicv_error_t blur_err = kleidicv::sme2::gaussian_blur_fixed_stripe_u8( + kleidicv_error_t blur_err = kleidicv::sme::gaussian_blur_fixed_stripe_u8( src, src_stride, dst, dst_stride, width, height, 0, height, channels, kernel_width, kernel_height, sigma_x, sigma_y, *fixed_border_type, context); diff --git a/kleidicv/CMakeLists.txt b/kleidicv/CMakeLists.txt index ab4430290..9fd839bed 100644 --- a/kleidicv/CMakeLists.txt +++ b/kleidicv/CMakeLists.txt @@ -24,14 +24,20 @@ endif() option(KLEIDICV_ENABLE_SVE2 "Enable SVE2 code paths" ${KLEIDICV_ENABLE_SVE2_DEFAULT}) -# KleidiCV's SME2 support is known to be compatible with Clang 19.1 but +# KleidiCV's SME support is known to be compatible with Clang 19.1 but # it is disabled by default while the ACLE SME specification is in beta. # https://github.com/ARM-software/acle/blob/main/main/acle.md#sme-language-extensions-and-intrinsics +# If SME2 is enabled than SME is also enabled by default. option(KLEIDICV_ENABLE_SME2 "Enable SME2 code paths" OFF) +if(KLEIDICV_ENABLE_SME2) + option(KLEIDICV_ENABLE_SME "Enable SME code paths" ON) +else() + option(KLEIDICV_ENABLE_SME "Enable SME code paths" OFF) +endif() option( - KLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS - "Limits SME2 code paths to selected algorithms. Has no effect if KLEIDICV_ENABLE_SME2 is false." + KLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS + "Limits SME code paths to selected algorithms. Has no effect if KLEIDICV_ENABLE_SME is false." ON ) option( @@ -64,8 +70,8 @@ else() set(KLEIDICV_NEON_USE_CONTINUOUS_MULTIVEC_LS OFF) endif() -if(KLEIDICV_ENABLE_SME2 AND NOT KLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS) - set(KLEIDICV_ALWAYS_ENABLE_SME2 ON) +if(KLEIDICV_ENABLE_SME AND NOT KLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS) + set(KLEIDICV_ALWAYS_ENABLE_SME ON) endif() if(KLEIDICV_ENABLE_SVE2 AND NOT KLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS) @@ -89,7 +95,7 @@ file(GLOB KLEIDICV_SVE2_SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sve2.cpp" ) -file(GLOB KLEIDICV_SME2_SOURCES +file(GLOB KLEIDICV_SME_SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/*_sme2.cpp" "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sme2.cpp" ) @@ -171,14 +177,14 @@ if(KLEIDICV_ENABLE_SVE2) ) endif() -if(KLEIDICV_ENABLE_SME2) - add_library(kleidicv_sme2 OBJECT ${KLEIDICV_SME2_SOURCES}) - target_include_directories(kleidicv_sme2 PRIVATE ${KLEIDICV_INCLUDE_DIRS}) - set_target_properties(kleidicv_sme2 PROPERTIES CXX_STANDARD 17) - target_compile_options(kleidicv_sme2 PRIVATE +if(KLEIDICV_ENABLE_SME) + add_library(kleidicv_sme OBJECT ${KLEIDICV_SME_SOURCES}) + target_include_directories(kleidicv_sme PRIVATE ${KLEIDICV_INCLUDE_DIRS}) + set_target_properties(kleidicv_sme PROPERTIES CXX_STANDARD 17) + target_compile_options(kleidicv_sme PRIVATE ${KLEIDICV_CXX_FLAGS} - "-march=armv9-a+sve2+sme2" - "-DKLEIDICV_TARGET_SME2=1" + "-march=armv9-a+sve2+sme" + "-DKLEIDICV_TARGET_SME=1" ) endif() @@ -193,7 +199,7 @@ if(KLEIDICV_ENABLE_SVE2) target_link_libraries(kleidicv PRIVATE kleidicv_sve2) endif() -if(KLEIDICV_ENABLE_SME2) - target_compile_definitions(kleidicv PRIVATE KLEIDICV_HAVE_SME2) - target_link_libraries(kleidicv PRIVATE kleidicv_sme2) +if(KLEIDICV_ENABLE_SME) + target_compile_definitions(kleidicv PRIVATE KLEIDICV_HAVE_SME) + target_link_libraries(kleidicv PRIVATE kleidicv_sme) endif() diff --git a/kleidicv/include/kleidicv/arithmetics/rotate.h b/kleidicv/include/kleidicv/arithmetics/rotate.h index 5b7fd35db..f12813cf7 100644 --- a/kleidicv/include/kleidicv/arithmetics/rotate.h +++ b/kleidicv/include/kleidicv/arithmetics/rotate.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -39,10 +39,6 @@ kleidicv_error_t rotate(const void *src, size_t src_stride, size_t width, size_t element_size); } // namespace neon -namespace sve2 {} // namespace sve2 - -namespace sme2 {} // namespace sme2 - } // namespace kleidicv #endif // KLEIDICV_ARITHMETICS_ROTATE_H diff --git a/kleidicv/include/kleidicv/arithmetics/transpose.h b/kleidicv/include/kleidicv/arithmetics/transpose.h index 6cea5f9c1..31d886f22 100644 --- a/kleidicv/include/kleidicv/arithmetics/transpose.h +++ b/kleidicv/include/kleidicv/arithmetics/transpose.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -18,10 +18,6 @@ kleidicv_error_t transpose(const void *src, size_t src_stride, void *dst, size_t element_size); } // namespace neon -namespace sve2 {} // namespace sve2 - -namespace sme2 {} // namespace sme2 - } // namespace kleidicv #endif // KLEIDICV_ARITHMETICS_TRANSPOSE_H diff --git a/kleidicv/include/kleidicv/config.h.in b/kleidicv/include/kleidicv/config.h.in index 2460c116e..ec5f14cc8 100644 --- a/kleidicv/include/kleidicv/config.h.in +++ b/kleidicv/include/kleidicv/config.h.in @@ -7,7 +7,7 @@ // Main configuration switches. -#cmakedefine01 KLEIDICV_ALWAYS_ENABLE_SME2 +#cmakedefine01 KLEIDICV_ALWAYS_ENABLE_SME #cmakedefine01 KLEIDICV_ALWAYS_ENABLE_SVE2 @@ -35,9 +35,9 @@ #define KLEIDICV_TARGET_SVE2 0 #endif -// Set to '1' if compiling SME2 code paths, otherwise it is set to '0'. -#ifndef KLEIDICV_TARGET_SME2 -#define KLEIDICV_TARGET_SME2 0 +// Set to '1' if compiling SME code paths, otherwise it is set to '0'. +#ifndef KLEIDICV_TARGET_SME +#define KLEIDICV_TARGET_SME 0 #endif // Derived configuration switches and macros below. @@ -56,12 +56,12 @@ #define KLEIDICV_TARGET_NAMESPACE kleidicv::sve2 #endif -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME #undef KLEIDICV_ASSUME_128BIT_SVE2 #define KLEIDICV_ASSUME_128BIT_SVE2 0 -#define KLEIDICV_TARGET_FN_ATTRS KLEIDICV_ATTR_SECTION(".text.sme2") +#define KLEIDICV_TARGET_FN_ATTRS KLEIDICV_ATTR_SECTION(".text.sme") #undef KLEIDICV_TARGET_NAMESPACE -#define KLEIDICV_TARGET_NAMESPACE kleidicv::sme2 +#define KLEIDICV_TARGET_NAMESPACE kleidicv::sme #define KLEIDICV_LOCALLY_STREAMING __arm_locally_streaming #define KLEIDICV_STREAMING_COMPATIBLE __arm_streaming_compatible #else diff --git a/kleidicv/include/kleidicv/conversions/gray_to_rgb.h b/kleidicv/include/kleidicv/conversions/gray_to_rgb.h index e66897957..568e85e64 100644 --- a/kleidicv/include/kleidicv/conversions/gray_to_rgb.h +++ b/kleidicv/include/kleidicv/conversions/gray_to_rgb.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -33,7 +33,7 @@ kleidicv_error_t gray_to_rgba_u8(const uint8_t *src, size_t src_stride, } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t gray_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, @@ -43,7 +43,7 @@ kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/conversions/rgb_to_rgb.h b/kleidicv/include/kleidicv/conversions/rgb_to_rgb.h index 48f3cebb8..cae8ac2a0 100644 --- a/kleidicv/include/kleidicv/conversions/rgb_to_rgb.h +++ b/kleidicv/include/kleidicv/conversions/rgb_to_rgb.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -55,7 +55,7 @@ kleidicv_error_t rgba_to_rgb_u8(const uint8_t *src, size_t src_stride, } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t rgb_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, @@ -81,7 +81,7 @@ kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/conversions/rgb_to_yuv.h b/kleidicv/include/kleidicv/conversions/rgb_to_yuv.h index 85ae8d1ae..08c12fe39 100644 --- a/kleidicv/include/kleidicv/conversions/rgb_to_yuv.h +++ b/kleidicv/include/kleidicv/conversions/rgb_to_yuv.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -77,7 +77,7 @@ kleidicv_error_t rgba_to_yuv_u8(const uint8_t *src, size_t src_stride, size_t height); } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t bgr_to_yuv_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, @@ -94,7 +94,7 @@ kleidicv_error_t bgra_to_yuv_u8(const uint8_t *src, size_t src_stride, kleidicv_error_t rgba_to_yuv_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/conversions/yuv_sp_to_rgb.h b/kleidicv/include/kleidicv/conversions/yuv_sp_to_rgb.h index 16c8aa55b..f9dda4952 100644 --- a/kleidicv/include/kleidicv/conversions/yuv_sp_to_rgb.h +++ b/kleidicv/include/kleidicv/conversions/yuv_sp_to_rgb.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -130,7 +130,7 @@ kleidicv_error_t yuv_sp_to_bgra_u8(const uint8_t *src_y, size_t src_y_stride, size_t width, size_t height, bool is_nv21); } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t 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, @@ -150,7 +150,7 @@ kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/conversions/yuv_to_rgb.h b/kleidicv/include/kleidicv/conversions/yuv_to_rgb.h index 70e6c8fae..9283be01c 100644 --- a/kleidicv/include/kleidicv/conversions/yuv_to_rgb.h +++ b/kleidicv/include/kleidicv/conversions/yuv_to_rgb.h @@ -99,7 +99,7 @@ kleidicv_error_t yuv_to_rgba_u8(const uint8_t *src, size_t src_stride, } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t yuv_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); @@ -116,7 +116,7 @@ kleidicv_error_t yuv_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/dispatch.h b/kleidicv/include/kleidicv/dispatch.h index a7400e66d..923781d58 100644 --- a/kleidicv/include/kleidicv/dispatch.h +++ b/kleidicv/include/kleidicv/dispatch.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -7,7 +7,7 @@ #include "kleidicv/config.h" -#if defined(KLEIDICV_HAVE_SVE2) || defined(KLEIDICV_HAVE_SME2) +#if defined(KLEIDICV_HAVE_SVE2) || defined(KLEIDICV_HAVE_SME) #include #include @@ -40,52 +40,50 @@ static inline bool hwcaps_has_sve2(HwCaps hwcaps) { #define KLEIDICV_SVE2_RESOLVE(x) #endif // KLEIDICV_HAVE_SVE2 -#ifdef KLEIDICV_HAVE_SME2 -static inline bool hwcaps_has_sme2(HwCaps hwcaps) { - // Actually checks for SME, not SME2, but this will be changed to check for - // SME2 in future. +#ifdef KLEIDICV_HAVE_SME +static inline bool hwcaps_has_sme(HwCaps hwcaps) { const int kSMEBit = 23; return hwcaps.hwcap2 & (1UL << kSMEBit); } -#define KLEIDICV_SME2_RESOLVE(sme2_impl) \ - if (!std::is_null_pointer_v && \ - KLEIDICV_TARGET_NAMESPACE::hwcaps_has_sme2(hwcaps)) { \ - return sme2_impl; \ +#define KLEIDICV_SME_RESOLVE(sme_impl) \ + if (!std::is_null_pointer_v && \ + KLEIDICV_TARGET_NAMESPACE::hwcaps_has_sme(hwcaps)) { \ + return sme_impl; \ } #else -#define KLEIDICV_SME2_RESOLVE(x) -#endif // KLEIDICV_HAVE_SME2 +#define KLEIDICV_SME_RESOLVE(x) +#endif // KLEIDICV_HAVE_SME } // namespace KLEIDICV_TARGET_NAMESPACE -#define KLEIDICV_MULTIVERSION_C_API(api_name, neon_impl, sve2_impl, sme2_impl) \ - static decltype(neon_impl) api_name##_resolver() { \ - [[maybe_unused]] KLEIDICV_TARGET_NAMESPACE::HwCaps hwcaps = \ - KLEIDICV_TARGET_NAMESPACE::get_hwcaps(); \ - KLEIDICV_SME2_RESOLVE(sme2_impl); \ - KLEIDICV_SVE2_RESOLVE(sve2_impl); \ - return neon_impl; \ - } \ - extern "C" { \ - decltype(neon_impl) api_name = api_name##_resolver(); \ +#define KLEIDICV_MULTIVERSION_C_API(api_name, neon_impl, sve2_impl, sme_impl) \ + static decltype(neon_impl) api_name##_resolver() { \ + [[maybe_unused]] KLEIDICV_TARGET_NAMESPACE::HwCaps hwcaps = \ + KLEIDICV_TARGET_NAMESPACE::get_hwcaps(); \ + KLEIDICV_SME_RESOLVE(sme_impl); \ + KLEIDICV_SVE2_RESOLVE(sve2_impl); \ + return neon_impl; \ + } \ + extern "C" { \ + decltype(neon_impl) api_name = api_name##_resolver(); \ } -#else // KLEIDICV_HAVE_SVE2 || KLEIDICV_HAVE_SME2 +#else // KLEIDICV_HAVE_SVE2 || KLEIDICV_HAVE_SME -#define KLEIDICV_MULTIVERSION_C_API(api_name, neon_impl, sve2_impl, sme2_impl) \ - \ - extern "C" { \ - decltype(neon_impl) api_name = neon_impl; \ +#define KLEIDICV_MULTIVERSION_C_API(api_name, neon_impl, sve2_impl, sme_impl) \ + \ + extern "C" { \ + decltype(neon_impl) api_name = neon_impl; \ } -#endif // KLEIDICV_HAVE_SVE2 || KLEIDICV_HAVE_SME2 +#endif // KLEIDICV_HAVE_SVE2 || KLEIDICV_HAVE_SME -#if KLEIDICV_ALWAYS_ENABLE_SME2 -#define KLEIDICV_SME2_IMPL_IF(func) func +#if KLEIDICV_ALWAYS_ENABLE_SME +#define KLEIDICV_SME_IMPL_IF(func) func #else -#define KLEIDICV_SME2_IMPL_IF(func) nullptr -#endif // KLEIDICV_ALWAYS_ENABLE_SME2 +#define KLEIDICV_SME_IMPL_IF(func) nullptr +#endif // KLEIDICV_ALWAYS_ENABLE_SME #if KLEIDICV_ALWAYS_ENABLE_SVE2 #define KLEIDICV_SVE2_IMPL_IF(func) func diff --git a/kleidicv/include/kleidicv/filters/blur_and_downsample.h b/kleidicv/include/kleidicv/filters/blur_and_downsample.h index 474e2c402..ff5919e2a 100644 --- a/kleidicv/include/kleidicv/filters/blur_and_downsample.h +++ b/kleidicv/include/kleidicv/filters/blur_and_downsample.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -51,7 +51,7 @@ kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8( } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8( const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, @@ -59,7 +59,7 @@ kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8( size_t channels, FixedBorderType fixed_border_type, kleidicv_filter_context_t *context); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/filters/gaussian_blur.h b/kleidicv/include/kleidicv/filters/gaussian_blur.h index c3c071040..e801fd8d1 100644 --- a/kleidicv/include/kleidicv/filters/gaussian_blur.h +++ b/kleidicv/include/kleidicv/filters/gaussian_blur.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -136,7 +136,7 @@ kleidicv_error_t gaussian_blur_fixed_stripe_u8( } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t gaussian_blur_fixed_stripe_u8( const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, @@ -144,7 +144,7 @@ kleidicv_error_t gaussian_blur_fixed_stripe_u8( size_t kernel_width, size_t kernel_height, float sigma_x, float sigma_y, FixedBorderType border_type, kleidicv_filter_context_t *context); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/filters/median_blur.h b/kleidicv/include/kleidicv/filters/median_blur.h index 8fbaf2c36..1990aaf43 100644 --- a/kleidicv/include/kleidicv/filters/median_blur.h +++ b/kleidicv/include/kleidicv/filters/median_blur.h @@ -135,7 +135,7 @@ kleidicv_error_t median_blur_sorting_network_stripe( } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t median_blur_sorting_network_stripe( @@ -143,7 +143,7 @@ kleidicv_error_t median_blur_sorting_network_stripe( size_t height, size_t y_begin, size_t y_end, size_t channels, size_t kernel_width, size_t kernel_height, FixedBorderType border_type); -} // namespace sme2 +} // namespace sme template inline kleidicv_error_t check_ptrs_strides_imagesizes(const T *src, diff --git a/kleidicv/include/kleidicv/filters/scharr.h b/kleidicv/include/kleidicv/filters/scharr.h index e6bde054c..a4fe5944c 100644 --- a/kleidicv/include/kleidicv/filters/scharr.h +++ b/kleidicv/include/kleidicv/filters/scharr.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -44,13 +44,13 @@ kleidicv_error_t kleidicv_scharr_interleaved_stripe_s16_u8( size_t y_end); } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t kleidicv_scharr_interleaved_stripe_s16_u8( const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, size_t src_channels, int16_t *dst, size_t dst_stride, size_t y_begin, size_t y_end); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/filters/separable_filter_15x15_sc.h b/kleidicv/include/kleidicv/filters/separable_filter_15x15_sc.h index 9427d8043..1ff29d18a 100644 --- a/kleidicv/include/kleidicv/filters/separable_filter_15x15_sc.h +++ b/kleidicv/include/kleidicv/filters/separable_filter_15x15_sc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -8,7 +8,7 @@ #include "kleidicv/sve2.h" #include "kleidicv/workspace/border_15x15.h" -// It is used by SVE2 and SME2, the actual namespace will reflect it. +// It is used by SVE2 and SME, the actual namespace will reflect it. namespace KLEIDICV_TARGET_NAMESPACE { // Template for drivers of separable NxM filters. diff --git a/kleidicv/include/kleidicv/filters/separable_filter_21x21_sc.h b/kleidicv/include/kleidicv/filters/separable_filter_21x21_sc.h index f164ea561..73708ef70 100644 --- a/kleidicv/include/kleidicv/filters/separable_filter_21x21_sc.h +++ b/kleidicv/include/kleidicv/filters/separable_filter_21x21_sc.h @@ -8,7 +8,7 @@ #include "kleidicv/sve2.h" #include "kleidicv/workspace/border_21x21.h" -// It is used by SVE2 and SME2, the actual namespace will reflect it. +// It is used by SVE2 and SME, the actual namespace will reflect it. namespace KLEIDICV_TARGET_NAMESPACE { // Template for drivers of separable NxM filters. diff --git a/kleidicv/include/kleidicv/filters/separable_filter_3x3_sc.h b/kleidicv/include/kleidicv/filters/separable_filter_3x3_sc.h index 1b43ea2a4..31005a941 100644 --- a/kleidicv/include/kleidicv/filters/separable_filter_3x3_sc.h +++ b/kleidicv/include/kleidicv/filters/separable_filter_3x3_sc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -8,7 +8,7 @@ #include "kleidicv/sve2.h" #include "kleidicv/workspace/border_3x3.h" -// It is used by SVE2 and SME2, the actual namespace will reflect it. +// It is used by SVE2 and SME, the actual namespace will reflect it. namespace KLEIDICV_TARGET_NAMESPACE { // Template for drivers of separable NxM filters. diff --git a/kleidicv/include/kleidicv/filters/separable_filter_5x5_sc.h b/kleidicv/include/kleidicv/filters/separable_filter_5x5_sc.h index 8e03d2ef9..ff0b719ee 100644 --- a/kleidicv/include/kleidicv/filters/separable_filter_5x5_sc.h +++ b/kleidicv/include/kleidicv/filters/separable_filter_5x5_sc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -8,7 +8,7 @@ #include "kleidicv/sve2.h" #include "kleidicv/workspace/border_5x5.h" -// It is used by SVE2 and SME2, the actual namespace will reflect it. +// It is used by SVE2 and SME, the actual namespace will reflect it. namespace KLEIDICV_TARGET_NAMESPACE { // Template for drivers of separable NxM filters. diff --git a/kleidicv/include/kleidicv/filters/separable_filter_7x7_sc.h b/kleidicv/include/kleidicv/filters/separable_filter_7x7_sc.h index 0f9ffcac7..05fb376a9 100644 --- a/kleidicv/include/kleidicv/filters/separable_filter_7x7_sc.h +++ b/kleidicv/include/kleidicv/filters/separable_filter_7x7_sc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -8,7 +8,7 @@ #include "kleidicv/sve2.h" #include "kleidicv/workspace/border_7x7.h" -// It is used by SVE2 and SME2, the actual namespace will reflect it. +// It is used by SVE2 and SME, the actual namespace will reflect it. namespace KLEIDICV_TARGET_NAMESPACE { // Template for drivers of separable NxM filters. diff --git a/kleidicv/include/kleidicv/filters/sobel.h b/kleidicv/include/kleidicv/filters/sobel.h index 473d41f98..86f8aa36f 100644 --- a/kleidicv/include/kleidicv/filters/sobel.h +++ b/kleidicv/include/kleidicv/filters/sobel.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -49,14 +49,14 @@ kleidicv_error_t sobel_3x3_vertical_stripe_s16_u8( size_t width, size_t height, size_t y_begin, size_t y_end, size_t channels); } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t sobel_3x3_horizontal_stripe_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 y_begin, size_t y_end, size_t channels); kleidicv_error_t sobel_3x3_vertical_stripe_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 y_begin, size_t y_end, size_t channels); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/morphology/workspace.h b/kleidicv/include/kleidicv/morphology/workspace.h index 55529750a..47682842f 100644 --- a/kleidicv/include/kleidicv/morphology/workspace.h +++ b/kleidicv/include/kleidicv/morphology/workspace.h @@ -14,7 +14,7 @@ #include "kleidicv/kleidicv.h" #include "kleidicv/types.h" -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME #include #endif @@ -62,7 +62,7 @@ class MorphologyWorkspace final { constexpr void operator()(Rows src_rows, Rows dst_rows, size_t length) const KLEIDICV_STREAMING_COMPATIBLE { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memcpy(static_cast(&dst_rows[0]), static_cast(&src_rows[0]), length * sizeof(T) * dst_rows.channels()); diff --git a/kleidicv/include/kleidicv/resize/resize.h b/kleidicv/include/kleidicv/resize/resize.h index 4fa23350f..5495427d6 100644 --- a/kleidicv/include/kleidicv/resize/resize.h +++ b/kleidicv/include/kleidicv/resize/resize.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -23,12 +23,12 @@ kleidicv_error_t resize_to_quarter_u8(const uint8_t *src, size_t src_stride, size_t dst_width, size_t dst_height); } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/resize/resize_linear.h b/kleidicv/include/kleidicv/resize/resize_linear.h index 6246ad87b..1e19c3b5a 100644 --- a/kleidicv/include/kleidicv/resize/resize_linear.h +++ b/kleidicv/include/kleidicv/resize/resize_linear.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -67,7 +67,7 @@ kleidicv_error_t resize_linear_stripe_f32(const float *src, size_t src_stride, size_t dst_width, size_t dst_height); } // namespace sve2 -namespace sme2 { +namespace sme { kleidicv_error_t resize_linear_stripe_u8(const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, size_t y_begin, size_t y_end, @@ -78,7 +78,7 @@ kleidicv_error_t resize_linear_stripe_f32(const float *src, size_t src_stride, size_t y_begin, size_t y_end, float *dst, size_t dst_stride, size_t dst_width, size_t dst_height); -} // namespace sme2 +} // namespace sme } // namespace kleidicv diff --git a/kleidicv/include/kleidicv/sve2.h b/kleidicv/include/kleidicv/sve2.h index 33fd117a4..e3fe8c69f 100644 --- a/kleidicv/include/kleidicv/sve2.h +++ b/kleidicv/include/kleidicv/sve2.h @@ -12,7 +12,7 @@ #include "kleidicv/operations.h" #include "kleidicv/utils.h" -// It is used by SVE2 and SME2, the actual namespace will reflect it. +// It is used by SVE2 and SME, the actual namespace will reflect it. namespace KLEIDICV_TARGET_NAMESPACE { // Context associated with SVE operations. diff --git a/kleidicv/include/kleidicv/traits.h b/kleidicv/include/kleidicv/traits.h index 749a0fd4f..28740d91e 100644 --- a/kleidicv/include/kleidicv/traits.h +++ b/kleidicv/include/kleidicv/traits.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -17,7 +17,7 @@ class Monostate {}; template class remove_streaming_compatible; -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME template class remove_streaming_compatible { diff --git a/kleidicv/include/kleidicv/types.h b/kleidicv/include/kleidicv/types.h index 98ea4151d..678eaa924 100644 --- a/kleidicv/include/kleidicv/types.h +++ b/kleidicv/include/kleidicv/types.h @@ -13,7 +13,7 @@ #include "kleidicv/ctypes.h" #include "kleidicv/utils.h" -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME #include #endif @@ -528,7 +528,7 @@ class CopyRows final { public: void process_row(size_t length, Columns src, Columns dst) KLEIDICV_STREAMING_COMPATIBLE { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memmove(static_cast(&dst[0]), static_cast(&src[0]), length * sizeof(T) * dst.channels()); @@ -553,7 +553,7 @@ class CopyNonOverlappingRows final { public: void process_row(size_t length, Columns src, Columns dst) KLEIDICV_STREAMING_COMPATIBLE { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memcpy(static_cast(&dst[0]), static_cast(&src[0]), length * sizeof(T) * dst.channels()); @@ -580,7 +580,7 @@ void make_zero_border_border(Rectangle rect, Rows rows, Margin margin) { if (margin.left()) { size_t margin_width_in_bytes = margin.left() * sizeof(T) * rows.channels(); for (size_t index = 0; index < rect.height(); ++index) { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memset(&rows.at(index)[0], 0, margin_width_in_bytes); #else std::memset(&rows.at(index)[0], 0, margin_width_in_bytes); @@ -592,7 +592,7 @@ void make_zero_border_border(Rectangle rect, Rows rows, Margin margin) { size_t top_width = rect.width() - margin.left() - margin.right(); size_t top_width_in_bytes = top_width * sizeof(T) * rows.channels(); for (size_t index = 0; index < margin.top(); ++index) { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memset(&rows.at(index, margin.left())[0], 0, top_width_in_bytes); #else std::memset(&rows.at(index, margin.left())[0], 0, top_width_in_bytes); @@ -603,7 +603,7 @@ void make_zero_border_border(Rectangle rect, Rows rows, Margin margin) { if (margin.right()) { size_t margin_width_in_bytes = margin.right() * sizeof(T) * rows.channels(); for (size_t index = 0; index < rect.height(); ++index) { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memset(&rows.at(index, rect.width() - margin.right())[0], 0, margin_width_in_bytes); #else @@ -618,7 +618,7 @@ void make_zero_border_border(Rectangle rect, Rows rows, Margin margin) { size_t bottom_width_in_bytes = bottom_width * sizeof(T) * rows.channels(); for (size_t index = rect.height() - margin.bottom(); index < rect.height(); ++index) { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memset(&rows.at(index, margin.left())[0], 0, bottom_width_in_bytes); #else diff --git a/kleidicv/src/analysis/min_max_api.cpp b/kleidicv/src/analysis/min_max_api.cpp index ad7c0c908..0e4e0d708 100644 --- a/kleidicv/src/analysis/min_max_api.cpp +++ b/kleidicv/src/analysis/min_max_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -28,12 +28,12 @@ kleidicv_error_t min_max(const T *src, size_t src_stride, size_t width, size_t height, T *min_value, T *max_value); } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t min_max(const T *src, size_t src_stride, size_t width, size_t height, T *min_value, T *max_value); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -41,7 +41,7 @@ kleidicv_error_t min_max(const T *src, size_t src_stride, size_t width, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::min_max, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::min_max), \ - &kleidicv::sme2::min_max) + &kleidicv::sme::min_max) KLEIDICV_DEFINE_MINMAX_API(kleidicv_min_max_u8, uint8_t); KLEIDICV_DEFINE_MINMAX_API(kleidicv_min_max_s8, int8_t); diff --git a/kleidicv/src/analysis/min_max_sme2.cpp b/kleidicv/src/analysis/min_max_sme2.cpp index 7c119a12c..fbbc225f9 100644 --- a/kleidicv/src/analysis/min_max_sme2.cpp +++ b/kleidicv/src/analysis/min_max_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "min_max_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -25,4 +25,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(uint16_t); KLEIDICV_INSTANTIATE_TEMPLATE(int32_t); KLEIDICV_INSTANTIATE_TEMPLATE(float); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/absdiff_api.cpp b/kleidicv/src/arithmetics/absdiff_api.cpp index 28da57a1e..e9dc56202 100644 --- a/kleidicv/src/arithmetics/absdiff_api.cpp +++ b/kleidicv/src/arithmetics/absdiff_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -28,14 +28,14 @@ kleidicv_error_t saturating_absdiff(const T *src_a, size_t src_a_stride, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -43,7 +43,7 @@ kleidicv_error_t saturating_absdiff(const T *src_a, size_t src_a_stride, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::saturating_absdiff, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::saturating_absdiff), \ - KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::saturating_absdiff)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::saturating_absdiff)) KLEIDICV_DEFINE_C_API(kleidicv_saturating_absdiff_u8, uint8_t); KLEIDICV_DEFINE_C_API(kleidicv_saturating_absdiff_s8, int8_t); diff --git a/kleidicv/src/arithmetics/absdiff_sme2.cpp b/kleidicv/src/arithmetics/absdiff_sme2.cpp index 9bf7c2184..ae4473535 100644 --- a/kleidicv/src/arithmetics/absdiff_sme2.cpp +++ b/kleidicv/src/arithmetics/absdiff_sme2.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "kleidicv/kleidicv.h" #include "kleidicv/sve2.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template ::value, bool> = true> @@ -66,4 +66,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(uint16_t); KLEIDICV_INSTANTIATE_TEMPLATE(int16_t); KLEIDICV_INSTANTIATE_TEMPLATE(int32_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/add_abs_with_threshold_api.cpp b/kleidicv/src/arithmetics/add_abs_with_threshold_api.cpp index 363941177..daf138f38 100644 --- a/kleidicv/src/arithmetics/add_abs_with_threshold_api.cpp +++ b/kleidicv/src/arithmetics/add_abs_with_threshold_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -24,13 +24,13 @@ kleidicv_error_t saturating_add_abs_with_threshold( T *dst, size_t dst_stride, size_t width, size_t height, T threshold); } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t saturating_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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -39,6 +39,6 @@ kleidicv_error_t saturating_add_abs_with_threshold( name, &kleidicv::neon::saturating_add_abs_with_threshold, \ KLEIDICV_SVE2_IMPL_IF( \ &kleidicv::sve2::saturating_add_abs_with_threshold), \ - &kleidicv::sme2::saturating_add_abs_with_threshold) + &kleidicv::sme::saturating_add_abs_with_threshold) KLEIDICV_DEFINE_C_API(kleidicv_saturating_add_abs_with_threshold_s16, int16_t); diff --git a/kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp b/kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp index 4013a5a51..85978f10c 100644 --- a/kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp +++ b/kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "add_abs_with_threshold_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -26,4 +26,4 @@ saturating_add_abs_with_threshold(const T *src_a, size_t src_a_stride, KLEIDICV_INSTANTIATE_TEMPLATE(int16_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/add_api.cpp b/kleidicv/src/arithmetics/add_api.cpp index b55b0fe92..744af872a 100644 --- a/kleidicv/src/arithmetics/add_api.cpp +++ b/kleidicv/src/arithmetics/add_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -26,13 +26,13 @@ kleidicv_error_t saturating_add(const T *src_a, size_t src_a_stride, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -40,7 +40,7 @@ kleidicv_error_t saturating_add(const T *src_a, size_t src_a_stride, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::saturating_add, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::saturating_add), \ - KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::saturating_add)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::saturating_add)) KLEIDICV_DEFINE_C_API(kleidicv_saturating_add_s8, int8_t); KLEIDICV_DEFINE_C_API(kleidicv_saturating_add_u8, uint8_t); diff --git a/kleidicv/src/arithmetics/add_sme2.cpp b/kleidicv/src/arithmetics/add_sme2.cpp index 7f21ffa7d..4022248c1 100644 --- a/kleidicv/src/arithmetics/add_sme2.cpp +++ b/kleidicv/src/arithmetics/add_sme2.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -7,7 +7,7 @@ #include "kleidicv/kleidicv.h" #include "kleidicv/sve2.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template class SaturatingAdd final : public UnrollTwice { @@ -55,4 +55,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(uint32_t); KLEIDICV_INSTANTIATE_TEMPLATE(int64_t); KLEIDICV_INSTANTIATE_TEMPLATE(uint64_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/compare_api.cpp b/kleidicv/src/arithmetics/compare_api.cpp index 10daeb475..497d06f06 100644 --- a/kleidicv/src/arithmetics/compare_api.cpp +++ b/kleidicv/src/arithmetics/compare_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -36,7 +36,7 @@ kleidicv_error_t compare_greater(const ScalarType *src_a, size_t src_a_stride, size_t width, size_t height); } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t compare_equal(const ScalarType *src_a, size_t src_a_stride, const ScalarType *src_b, size_t src_b_stride, @@ -48,7 +48,7 @@ kleidicv_error_t compare_greater(const ScalarType *src_a, size_t src_a_stride, const ScalarType *src_b, size_t src_b_stride, ScalarType *dst, size_t dst_stride, size_t width, size_t height); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -56,13 +56,13 @@ kleidicv_error_t compare_greater(const ScalarType *src_a, size_t src_a_stride, 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)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::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_IMPL_IF(&kleidicv::sme2::compare_greater)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::compare_greater)) KLEIDICV_DEFINE_CMP_EQ_API(kleidicv_compare_equal_u8, uint8_t); KLEIDICV_DEFINE_CMP_GT_API(kleidicv_compare_greater_u8, uint8_t); diff --git a/kleidicv/src/arithmetics/compare_sme2.cpp b/kleidicv/src/arithmetics/compare_sme2.cpp index 407e2206b..30e38b289 100644 --- a/kleidicv/src/arithmetics/compare_sme2.cpp +++ b/kleidicv/src/arithmetics/compare_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "compare_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING kleidicv_error_t @@ -33,4 +33,4 @@ compare_greater(const ScalarType *src_a, size_t src_a_stride, KLEIDICV_INSTANTIATE_TEMPLATE(compare_equal, uint8_t); KLEIDICV_INSTANTIATE_TEMPLATE(compare_greater, uint8_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/exp_api.cpp b/kleidicv/src/arithmetics/exp_api.cpp index d557b0994..2f5ffc5e4 100644 --- a/kleidicv/src/arithmetics/exp_api.cpp +++ b/kleidicv/src/arithmetics/exp_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -24,19 +24,19 @@ kleidicv_error_t exp(const T* src, size_t src_stride, T* dst, size_t dst_stride, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t exp(const T* src, size_t src_stride, T* dst, size_t dst_stride, size_t width, size_t height); -} // namespace sme2 +} // namespace sme } // namespace kleidicv #define KLEIDICV_DEFINE_C_API(name, type) \ KLEIDICV_MULTIVERSION_C_API(name, &kleidicv::neon::exp, \ &kleidicv::sve2::exp, \ - &kleidicv::sme2::exp) + &kleidicv::sme::exp) KLEIDICV_DEFINE_C_API(kleidicv_exp_f32, float); diff --git a/kleidicv/src/arithmetics/exp_sme2.cpp b/kleidicv/src/arithmetics/exp_sme2.cpp index 2f2b44dcb..18cf8235d 100644 --- a/kleidicv/src/arithmetics/exp_sme2.cpp +++ b/kleidicv/src/arithmetics/exp_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "exp_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -21,4 +21,4 @@ exp(const T* src, size_t src_stride, T* dst, size_t dst_stride, size_t width, KLEIDICV_INSTANTIATE_TEMPLATE(float); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/in_range_api.cpp b/kleidicv/src/arithmetics/in_range_api.cpp index 13c7fcded..db70c4288 100644 --- a/kleidicv/src/arithmetics/in_range_api.cpp +++ b/kleidicv/src/arithmetics/in_range_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -21,12 +21,12 @@ kleidicv_error_t in_range(const T *src, size_t src_stride, uint8_t *dst, T lower_bound, T upper_bound); } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t in_range(const T *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, T lower_bound, T upper_bound); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -34,7 +34,7 @@ kleidicv_error_t in_range(const T *src, size_t src_stride, uint8_t *dst, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::in_range, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::in_range), \ - KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::in_range)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::in_range)) KLEIDICV_DEFINE_C_API(kleidicv_in_range_u8, uint8_t); KLEIDICV_DEFINE_C_API(kleidicv_in_range_f32, float); diff --git a/kleidicv/src/arithmetics/in_range_sme2.cpp b/kleidicv/src/arithmetics/in_range_sme2.cpp index bbcf9e87a..22e6ad5d9 100644 --- a/kleidicv/src/arithmetics/in_range_sme2.cpp +++ b/kleidicv/src/arithmetics/in_range_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "in_range_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -22,4 +22,4 @@ in_range(const T *src, size_t src_stride, uint8_t *dst, size_t dst_stride, KLEIDICV_INSTANTIATE_TEMPLATE(uint8_t); KLEIDICV_INSTANTIATE_TEMPLATE(float); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/multiply_api.cpp b/kleidicv/src/arithmetics/multiply_api.cpp index 560e6e20f..3b48a1fe4 100644 --- a/kleidicv/src/arithmetics/multiply_api.cpp +++ b/kleidicv/src/arithmetics/multiply_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -28,7 +28,7 @@ kleidicv_error_t saturating_multiply(const T *src_a, size_t src_a_stride, } // namespace sve2 -// namespace sme2 { +// namespace sme { // template // kleidicv_error_t saturating_multiply(const T *src_a, size_t src_a_stride, @@ -36,7 +36,7 @@ kleidicv_error_t saturating_multiply(const T *src_a, size_t src_a_stride, // size_t src_b_stride, T *dst, size_t dst_stride, // size_t width, size_t height, double scale); -// } // namespace sme2 +// } // namespace sme } // namespace kleidicv diff --git a/kleidicv/src/arithmetics/scale_api.cpp b/kleidicv/src/arithmetics/scale_api.cpp index 31003a3a1..643aca5ce 100644 --- a/kleidicv/src/arithmetics/scale_api.cpp +++ b/kleidicv/src/arithmetics/scale_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -25,13 +25,13 @@ kleidicv_error_t scale(const T *src, size_t src_stride, T *dst, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t scale(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, size_t height, float scale, float shift); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -40,4 +40,4 @@ KLEIDICV_MULTIVERSION_C_API(kleidicv_scale_u8, &kleidicv::neon::scale, KLEIDICV_MULTIVERSION_C_API( kleidicv_scale_f32, &kleidicv::neon::scale, KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::scale), - KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::scale)); + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::scale)); diff --git a/kleidicv/src/arithmetics/scale_sme2.cpp b/kleidicv/src/arithmetics/scale_sme2.cpp index 8c1b68228..1edc395a9 100644 --- a/kleidicv/src/arithmetics/scale_sme2.cpp +++ b/kleidicv/src/arithmetics/scale_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "scale_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -21,4 +21,4 @@ scale(const T* src, size_t src_stride, T* dst, size_t dst_stride, size_t width, KLEIDICV_INSTANTIATE_TEMPLATE(float); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/sub_api.cpp b/kleidicv/src/arithmetics/sub_api.cpp index 2d302b10c..77dfb7b79 100644 --- a/kleidicv/src/arithmetics/sub_api.cpp +++ b/kleidicv/src/arithmetics/sub_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -25,13 +25,13 @@ kleidicv_error_t saturating_sub(const T *src_a, size_t src_a_stride, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -39,7 +39,7 @@ kleidicv_error_t saturating_sub(const T *src_a, size_t src_a_stride, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::saturating_sub, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::saturating_sub), \ - KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::saturating_sub)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::saturating_sub)) KLEIDICV_DEFINE_C_API(kleidicv_saturating_sub_s8, int8_t); KLEIDICV_DEFINE_C_API(kleidicv_saturating_sub_u8, uint8_t); diff --git a/kleidicv/src/arithmetics/sub_sme2.cpp b/kleidicv/src/arithmetics/sub_sme2.cpp index 1fe21043d..0bd22f3e9 100644 --- a/kleidicv/src/arithmetics/sub_sme2.cpp +++ b/kleidicv/src/arithmetics/sub_sme2.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -7,7 +7,7 @@ #include "kleidicv/kleidicv.h" #include "kleidicv/sve2.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template class SaturatingSub final : public UnrollTwice { @@ -55,4 +55,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(uint32_t); KLEIDICV_INSTANTIATE_TEMPLATE(int64_t); KLEIDICV_INSTANTIATE_TEMPLATE(uint64_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/sum_api.cpp b/kleidicv/src/arithmetics/sum_api.cpp index a24cb8021..e1590dd87 100644 --- a/kleidicv/src/arithmetics/sum_api.cpp +++ b/kleidicv/src/arithmetics/sum_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -23,17 +23,17 @@ kleidicv_error_t sum(const T *src, size_t src_stride, size_t width, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t sum(const T *src, size_t src_stride, size_t width, size_t height, T *sum); -} // namespace sme2 +} // namespace sme } // namespace kleidicv KLEIDICV_MULTIVERSION_C_API( kleidicv_sum_f32, (&kleidicv::neon::sum), KLEIDICV_SVE2_IMPL_IF((&kleidicv::sve2::sum)), - (&kleidicv::sme2::sum)); + (&kleidicv::sme::sum)); diff --git a/kleidicv/src/arithmetics/sum_sme2.cpp b/kleidicv/src/arithmetics/sum_sme2.cpp index 9a6b5d217..2f2126a52 100644 --- a/kleidicv/src/arithmetics/sum_sme2.cpp +++ b/kleidicv/src/arithmetics/sum_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "sum_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -19,4 +19,4 @@ sum(const T *src, size_t src_stride, size_t width, size_t height, T *sum) { KLEIDICV_INSTANTIATE_TEMPLATE(float, double); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/arithmetics/threshold_api.cpp b/kleidicv/src/arithmetics/threshold_api.cpp index b9d43ab67..86cfe1088 100644 --- a/kleidicv/src/arithmetics/threshold_api.cpp +++ b/kleidicv/src/arithmetics/threshold_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -21,12 +21,12 @@ kleidicv_error_t threshold_binary(const T *src, size_t src_stride, T *dst, size_t height, T threshold, T value); } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t 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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -34,6 +34,6 @@ kleidicv_error_t threshold_binary(const T *src, size_t src_stride, T *dst, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::threshold_binary, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::threshold_binary), \ - &kleidicv::sme2::threshold_binary) + &kleidicv::sme::threshold_binary) KLEIDICV_DEFINE_C_API(kleidicv_threshold_binary_u8, uint8_t); diff --git a/kleidicv/src/arithmetics/threshold_sme2.cpp b/kleidicv/src/arithmetics/threshold_sme2.cpp index cdd1ee125..f69fa8d00 100644 --- a/kleidicv/src/arithmetics/threshold_sme2.cpp +++ b/kleidicv/src/arithmetics/threshold_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "threshold_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -21,4 +21,4 @@ threshold_binary(const T *src, size_t src_stride, T *dst, size_t dst_stride, KLEIDICV_INSTANTIATE_TEMPLATE(uint8_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/conversions/float_conv_api.cpp b/kleidicv/src/conversions/float_conv_api.cpp index c80538775..f9c3a68ab 100644 --- a/kleidicv/src/conversions/float_conv_api.cpp +++ b/kleidicv/src/conversions/float_conv_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -18,32 +18,31 @@ kleidicv_error_t float_conversion(const InputType* src, size_t src_stride, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t float_conversion(const InputType* src, size_t src_stride, OutputType* dst, size_t dst_stride, size_t width, size_t height); -} // namespace sme2 +} // namespace sme } // namespace kleidicv KLEIDICV_MULTIVERSION_C_API( kleidicv_f32_to_s8, &kleidicv::neon::f32_to_s8, KLEIDICV_SVE2_IMPL_IF((&kleidicv::sve2::float_conversion)), - (&kleidicv::sme2::float_conversion)); + (&kleidicv::sme::float_conversion)); KLEIDICV_MULTIVERSION_C_API( kleidicv_f32_to_u8, &kleidicv::neon::f32_to_u8, KLEIDICV_SVE2_IMPL_IF((&kleidicv::sve2::float_conversion)), - (&kleidicv::sme2::float_conversion)); + (&kleidicv::sme::float_conversion)); KLEIDICV_MULTIVERSION_C_API(kleidicv_s8_to_f32, &kleidicv::neon::s8_to_f32, (&kleidicv::sve2::float_conversion), - (&kleidicv::sme2::float_conversion)); + (&kleidicv::sme::float_conversion)); -KLEIDICV_MULTIVERSION_C_API( - kleidicv_u8_to_f32, &kleidicv::neon::u8_to_f32, - (&kleidicv::sve2::float_conversion), - (&kleidicv::sme2::float_conversion)); +KLEIDICV_MULTIVERSION_C_API(kleidicv_u8_to_f32, &kleidicv::neon::u8_to_f32, + (&kleidicv::sve2::float_conversion), + (&kleidicv::sme::float_conversion)); diff --git a/kleidicv/src/conversions/float_conv_sme2.cpp b/kleidicv/src/conversions/float_conv_sme2.cpp index 49832008a..294f3dd88 100644 --- a/kleidicv/src/conversions/float_conv_sme2.cpp +++ b/kleidicv/src/conversions/float_conv_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "float_conv_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -25,4 +25,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(float, uint8_t); KLEIDICV_INSTANTIATE_TEMPLATE(int8_t, float); KLEIDICV_INSTANTIATE_TEMPLATE(uint8_t, float); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/conversions/gray_to_rgb_api.cpp b/kleidicv/src/conversions/gray_to_rgb_api.cpp index 6d40ef5a4..080ea4e22 100644 --- a/kleidicv/src/conversions/gray_to_rgb_api.cpp +++ b/kleidicv/src/conversions/gray_to_rgb_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -10,7 +10,7 @@ KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::partialname, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::partialname), \ - &kleidicv::sme2::partialname) + &kleidicv::sme::partialname) KLEIDICV_DEFINE_C_API(kleidicv_gray_to_rgb_u8, gray_to_rgb_u8); KLEIDICV_DEFINE_C_API(kleidicv_gray_to_rgba_u8, gray_to_rgba_u8); diff --git a/kleidicv/src/conversions/gray_to_rgb_sme2.cpp b/kleidicv/src/conversions/gray_to_rgb_sme2.cpp index 8a889a8d2..42a8ea8c0 100644 --- a/kleidicv/src/conversions/gray_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/gray_to_rgb_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "gray_to_rgb_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t gray_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, @@ -18,4 +18,4 @@ gray_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, return gray_to_rgba_u8_sc(src, src_stride, dst, dst_stride, width, height); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/conversions/rgb_to_rgb_api.cpp b/kleidicv/src/conversions/rgb_to_rgb_api.cpp index 8d13939ce..82631e916 100644 --- a/kleidicv/src/conversions/rgb_to_rgb_api.cpp +++ b/kleidicv/src/conversions/rgb_to_rgb_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -11,7 +11,7 @@ KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::partialname, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::partialname), \ - &kleidicv::sme2::partialname) + &kleidicv::sme::partialname) KLEIDICV_DEFINE_C_API(kleidicv_rgb_to_bgr_u8, rgb_to_bgr_u8); KLEIDICV_DEFINE_C_API(kleidicv_rgba_to_bgra_u8, rgba_to_bgra_u8); diff --git a/kleidicv/src/conversions/rgb_to_rgb_sme2.cpp b/kleidicv/src/conversions/rgb_to_rgb_sme2.cpp index 3dd0f8db2..8d82d358f 100644 --- a/kleidicv/src/conversions/rgb_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/rgb_to_rgb_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "rgb_to_rgb_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t rgb_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, @@ -42,4 +42,4 @@ rgba_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, return rgba_to_rgb_u8_sc(src, src_stride, dst, dst_stride, width, height); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/conversions/rgb_to_yuv_api.cpp b/kleidicv/src/conversions/rgb_to_yuv_api.cpp index 4a05684c0..e7704560c 100644 --- a/kleidicv/src/conversions/rgb_to_yuv_api.cpp +++ b/kleidicv/src/conversions/rgb_to_yuv_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -10,7 +10,7 @@ KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::partialname, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::partialname), \ - &kleidicv::sme2::partialname) + &kleidicv::sme::partialname) KLEIDICV_DEFINE_C_API(kleidicv_rgb_to_yuv_u8, rgb_to_yuv_u8); KLEIDICV_DEFINE_C_API(kleidicv_bgr_to_yuv_u8, bgr_to_yuv_u8); diff --git a/kleidicv/src/conversions/rgb_to_yuv_sme2.cpp b/kleidicv/src/conversions/rgb_to_yuv_sme2.cpp index 3a143893a..8464b7fca 100644 --- a/kleidicv/src/conversions/rgb_to_yuv_sme2.cpp +++ b/kleidicv/src/conversions/rgb_to_yuv_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "rgb_to_yuv_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t rgb_to_yuv_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, @@ -30,4 +30,4 @@ bgra_to_yuv_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, return bgra_to_yuv_u8_sc(src, src_stride, dst, dst_stride, width, height); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/conversions/yuv_sp_to_rgb_api.cpp b/kleidicv/src/conversions/yuv_sp_to_rgb_api.cpp index e02bf1c03..013473940 100644 --- a/kleidicv/src/conversions/yuv_sp_to_rgb_api.cpp +++ b/kleidicv/src/conversions/yuv_sp_to_rgb_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -9,7 +9,7 @@ #define KLEIDICV_DEFINE_C_API(name, partialname) \ KLEIDICV_MULTIVERSION_C_API(name, &kleidicv::neon::partialname, \ &kleidicv::sve2::partialname, \ - &kleidicv::sme2::partialname) + &kleidicv::sme::partialname) KLEIDICV_DEFINE_C_API(kleidicv_yuv_sp_to_rgb_u8, yuv_sp_to_rgb_u8); KLEIDICV_DEFINE_C_API(kleidicv_yuv_sp_to_bgr_u8, yuv_sp_to_bgr_u8); diff --git a/kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp b/kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp index b74324767..5237801d9 100644 --- a/kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "yuv_sp_to_rgb_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t yuv_sp_to_rgb_u8(const uint8_t *src_y, size_t src_y_stride, @@ -40,4 +40,4 @@ yuv_sp_to_bgra_u8(const uint8_t *src_y, size_t src_y_stride, dst_stride, width, height, is_nv21); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/conversions/yuv_to_rgb_api.cpp b/kleidicv/src/conversions/yuv_to_rgb_api.cpp index 7cb0c33e2..1997b9fef 100644 --- a/kleidicv/src/conversions/yuv_to_rgb_api.cpp +++ b/kleidicv/src/conversions/yuv_to_rgb_api.cpp @@ -10,7 +10,7 @@ KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::partialname, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::partialname), \ - &kleidicv::sme2::partialname) + &kleidicv::sme::partialname) KLEIDICV_DEFINE_C_API(kleidicv_yuv_to_rgb_u8, yuv_to_rgb_u8); KLEIDICV_DEFINE_C_API(kleidicv_yuv_to_bgr_u8, yuv_to_bgr_u8); diff --git a/kleidicv/src/conversions/yuv_to_rgb_sme2.cpp b/kleidicv/src/conversions/yuv_to_rgb_sme2.cpp index 82b52ca8b..f193912ea 100644 --- a/kleidicv/src/conversions/yuv_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/yuv_to_rgb_sme2.cpp @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 #include "yuv_to_rgb_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t yuv_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, @@ -29,4 +29,4 @@ yuv_to_bgra_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, return yuv_to_bgra_u8_sc(src, src_stride, dst, dst_stride, width, height); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/filters/blur_and_downsample_api.cpp b/kleidicv/src/filters/blur_and_downsample_api.cpp index f03e76c66..54be86c03 100644 --- a/kleidicv/src/filters/blur_and_downsample_api.cpp +++ b/kleidicv/src/filters/blur_and_downsample_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -10,7 +10,7 @@ KLEIDICV_MULTIVERSION_C_API( kleidicv_blur_and_downsample_stripe_u8, &kleidicv::neon::kleidicv_blur_and_downsample_stripe_u8, &kleidicv::sve2::kleidicv_blur_and_downsample_stripe_u8, - &kleidicv::sme2::kleidicv_blur_and_downsample_stripe_u8); + &kleidicv::sme::kleidicv_blur_and_downsample_stripe_u8); extern "C" { diff --git a/kleidicv/src/filters/blur_and_downsample_sme2.cpp b/kleidicv/src/filters/blur_and_downsample_sme2.cpp index a62eef808..38c8b13cb 100644 --- a/kleidicv/src/filters/blur_and_downsample_sme2.cpp +++ b/kleidicv/src/filters/blur_and_downsample_sme2.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "blur_and_downsample_sc.h" #include "kleidicv/filters/blur_and_downsample.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8(const uint8_t *src, size_t src_stride, @@ -20,4 +20,4 @@ kleidicv_blur_and_downsample_stripe_u8(const uint8_t *src, size_t src_stride, channels, fixed_border_type, context); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/filters/gaussian_blur_api.cpp b/kleidicv/src/filters/gaussian_blur_api.cpp index 3a75f5c2e..921e4d4f7 100644 --- a/kleidicv/src/filters/gaussian_blur_api.cpp +++ b/kleidicv/src/filters/gaussian_blur_api.cpp @@ -10,7 +10,7 @@ KLEIDICV_MULTIVERSION_C_API( kleidicv_gaussian_blur_fixed_stripe_u8, &kleidicv::neon::gaussian_blur_fixed_stripe_u8, KLEIDICV_SVE2_IMPL_IF(kleidicv::sve2::gaussian_blur_fixed_stripe_u8), - &kleidicv::sme2::gaussian_blur_fixed_stripe_u8); + &kleidicv::sme::gaussian_blur_fixed_stripe_u8); KLEIDICV_MULTIVERSION_C_API(kleidicv_gaussian_blur_arbitrary_stripe_u8, &kleidicv::neon::gaussian_blur_arbitrary_stripe_u8, diff --git a/kleidicv/src/filters/gaussian_blur_fixed_sc.h b/kleidicv/src/filters/gaussian_blur_fixed_sc.h index 9420b9ad8..a50741a7c 100644 --- a/kleidicv/src/filters/gaussian_blur_fixed_sc.h +++ b/kleidicv/src/filters/gaussian_blur_fixed_sc.h @@ -17,7 +17,7 @@ #include "kleidicv/filters/sigma.h" #include "kleidicv/workspace/separable.h" -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME #include #endif @@ -364,7 +364,7 @@ static kleidicv_error_t gaussian_blur_fixed_kernel_size( border_type, filter); } else { for (size_t row = y_begin; row < y_end; ++row) { -#if KLEIDICV_TARGET_SME2 +#if KLEIDICV_TARGET_SME __arm_sc_memcpy( static_cast(&dst_rows.at(row)[0]), static_cast(&src_rows.at(row)[0]), diff --git a/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp b/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp index 3dfeb8020..e61442417 100644 --- a/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp +++ b/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp @@ -4,7 +4,7 @@ #include "gaussian_blur_fixed_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t gaussian_blur_fixed_stripe_u8(const uint8_t *src, size_t src_stride, @@ -19,4 +19,4 @@ gaussian_blur_fixed_stripe_u8(const uint8_t *src, size_t src_stride, kernel_width, kernel_height, sigma_x, sigma_y, border_type, context); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/filters/median_blur_api.cpp b/kleidicv/src/filters/median_blur_api.cpp index 2a5e20ac1..470673d5b 100644 --- a/kleidicv/src/filters/median_blur_api.cpp +++ b/kleidicv/src/filters/median_blur_api.cpp @@ -11,7 +11,7 @@ name, &kleidicv::neon::median_blur_sorting_network_stripe, \ KLEIDICV_SVE2_IMPL_IF( \ kleidicv::sve2::median_blur_sorting_network_stripe), \ - &kleidicv::sme2::median_blur_sorting_network_stripe) + &kleidicv::sme::median_blur_sorting_network_stripe) KLEIDICV_DEFINE_C_API(kleidicv_median_blur_sorting_network_stripe_s8, int8_t); diff --git a/kleidicv/src/filters/median_blur_sorting_network_sme2.cpp b/kleidicv/src/filters/median_blur_sorting_network_sme2.cpp index 893e870aa..730c10604 100644 --- a/kleidicv/src/filters/median_blur_sorting_network_sme2.cpp +++ b/kleidicv/src/filters/median_blur_sorting_network_sme2.cpp @@ -5,7 +5,7 @@ #include "kleidicv/filters/median_blur.h" #include "median_blur_sorting_network_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -36,4 +36,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(int32_t); KLEIDICV_INSTANTIATE_TEMPLATE(uint32_t); KLEIDICV_INSTANTIATE_TEMPLATE(float); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/filters/scharr_api.cpp b/kleidicv/src/filters/scharr_api.cpp index b6a06bfef..63f15829b 100644 --- a/kleidicv/src/filters/scharr_api.cpp +++ b/kleidicv/src/filters/scharr_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -11,7 +11,7 @@ KLEIDICV_MULTIVERSION_C_API( &kleidicv::neon::kleidicv_scharr_interleaved_stripe_s16_u8, KLEIDICV_SVE2_IMPL_IF( &kleidicv::sve2::kleidicv_scharr_interleaved_stripe_s16_u8), - &kleidicv::sme2::kleidicv_scharr_interleaved_stripe_s16_u8); + &kleidicv::sme::kleidicv_scharr_interleaved_stripe_s16_u8); extern "C" { diff --git a/kleidicv/src/filters/scharr_sme2.cpp b/kleidicv/src/filters/scharr_sme2.cpp index be51c94ed..db0832636 100644 --- a/kleidicv/src/filters/scharr_sme2.cpp +++ b/kleidicv/src/filters/scharr_sme2.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "kleidicv/filters/scharr.h" #include "scharr_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t kleidicv_scharr_interleaved_stripe_s16_u8(const uint8_t *src, size_t src_stride, @@ -18,4 +18,4 @@ kleidicv_scharr_interleaved_stripe_s16_u8(const uint8_t *src, size_t src_stride, y_begin, y_end); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/filters/separable_filter_2d_api.cpp b/kleidicv/src/filters/separable_filter_2d_api.cpp index 79f0edeb7..ab74b25f9 100644 --- a/kleidicv/src/filters/separable_filter_2d_api.cpp +++ b/kleidicv/src/filters/separable_filter_2d_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -33,7 +33,7 @@ kleidicv_error_t separable_filter_2d_stripe( } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t separable_filter_2d_stripe( @@ -43,7 +43,7 @@ kleidicv_error_t separable_filter_2d_stripe( size_t kernel_height, FixedBorderType border_type, kleidicv_filter_context_t *context); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -51,7 +51,7 @@ kleidicv_error_t separable_filter_2d_stripe( KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::separable_filter_2d_stripe, \ KLEIDICV_SVE2_IMPL_IF(kleidicv::sve2::separable_filter_2d_stripe), \ - &kleidicv::sme2::separable_filter_2d_stripe) + &kleidicv::sme::separable_filter_2d_stripe) KLEIDICV_DEFINE_C_API(kleidicv_separable_filter_2d_stripe_u8, uint8_t); KLEIDICV_DEFINE_C_API(kleidicv_separable_filter_2d_stripe_u16, uint16_t); diff --git a/kleidicv/src/filters/separable_filter_2d_sme2.cpp b/kleidicv/src/filters/separable_filter_2d_sme2.cpp index 8ba832ff5..3160a21ae 100644 --- a/kleidicv/src/filters/separable_filter_2d_sme2.cpp +++ b/kleidicv/src/filters/separable_filter_2d_sme2.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "kleidicv/filters/separable_filter_2d.h" #include "separable_filter_2d_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -34,4 +34,4 @@ KLEIDICV_INSTANTIATE_TEMPLATE(uint8_t); KLEIDICV_INSTANTIATE_TEMPLATE(uint16_t); KLEIDICV_INSTANTIATE_TEMPLATE(int16_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/filters/sobel_api.cpp b/kleidicv/src/filters/sobel_api.cpp index 4953a54bc..b96b62d7f 100644 --- a/kleidicv/src/filters/sobel_api.cpp +++ b/kleidicv/src/filters/sobel_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -10,7 +10,7 @@ KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::partialname, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::partialname), \ - &kleidicv::sme2::partialname) + &kleidicv::sme::partialname) KLEIDICV_DEFINE_C_API(kleidicv_sobel_3x3_horizontal_stripe_s16_u8, sobel_3x3_horizontal_stripe_s16_u8); diff --git a/kleidicv/src/filters/sobel_sme2.cpp b/kleidicv/src/filters/sobel_sme2.cpp index f44af14ee..539d204da 100644 --- a/kleidicv/src/filters/sobel_sme2.cpp +++ b/kleidicv/src/filters/sobel_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "sobel_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t sobel_3x3_horizontal_stripe_s16_u8(const uint8_t *src, size_t src_stride, @@ -26,4 +26,4 @@ sobel_3x3_vertical_stripe_s16_u8(const uint8_t *src, size_t src_stride, channels); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/logical/bitwise_and_api.cpp b/kleidicv/src/logical/bitwise_and_api.cpp index c4f744f88..a5ef3147e 100644 --- a/kleidicv/src/logical/bitwise_and_api.cpp +++ b/kleidicv/src/logical/bitwise_and_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -26,13 +26,13 @@ kleidicv_error_t bitwise_and(const T *src_a, size_t src_a_stride, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t bitwise_and(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); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -40,6 +40,6 @@ kleidicv_error_t bitwise_and(const T *src_a, size_t src_a_stride, KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::bitwise_and, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::bitwise_and), \ - KLEIDICV_SME2_IMPL_IF(&kleidicv::sme2::bitwise_and)) + KLEIDICV_SME_IMPL_IF(&kleidicv::sme::bitwise_and)) KLEIDICV_DEFINE_C_API(kleidicv_bitwise_and, uint8_t); diff --git a/kleidicv/src/logical/bitwise_and_sme2.cpp b/kleidicv/src/logical/bitwise_and_sme2.cpp index b380babe9..5c079a643 100644 --- a/kleidicv/src/logical/bitwise_and_sme2.cpp +++ b/kleidicv/src/logical/bitwise_and_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "bitwise_and_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING kleidicv_error_t bitwise_and( @@ -22,4 +22,4 @@ KLEIDICV_LOCALLY_STREAMING kleidicv_error_t bitwise_and( KLEIDICV_INSTANTIATE_TEMPLATE(uint8_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/morphology/morphology_api.cpp b/kleidicv/src/morphology/morphology_api.cpp index 71607bbb3..f1e9dca80 100644 --- a/kleidicv/src/morphology/morphology_api.cpp +++ b/kleidicv/src/morphology/morphology_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -36,7 +36,7 @@ kleidicv_error_t erode(const T *src, size_t src_stride, T *dst, } // namespace sve2 -namespace sme2 { +namespace sme { template kleidicv_error_t dilate(const T *src, size_t src_stride, T *dst, @@ -48,7 +48,7 @@ kleidicv_error_t erode(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, size_t height, kleidicv_morphology_context_t *context); -} // namespace sme2 +} // namespace sme } // namespace kleidicv @@ -112,7 +112,7 @@ kleidicv_error_t kleidicv_morphology_release( KLEIDICV_MULTIVERSION_C_API( \ name, &kleidicv::neon::tname, \ KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::tname), \ - &kleidicv::sme2::tname) + &kleidicv::sme::tname) KLEIDICV_DEFINE_C_API(kleidicv_dilate_u8, dilate, uint8_t); KLEIDICV_DEFINE_C_API(kleidicv_erode_u8, erode, uint8_t); diff --git a/kleidicv/src/morphology/morphology_sme2.cpp b/kleidicv/src/morphology/morphology_sme2.cpp index 26c3214b4..2f47d437b 100644 --- a/kleidicv/src/morphology/morphology_sme2.cpp +++ b/kleidicv/src/morphology/morphology_sme2.cpp @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "morphology_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { template KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t @@ -30,4 +30,4 @@ erode(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, KLEIDICV_INSTANTIATE_TEMPLATE(dilate, uint8_t); KLEIDICV_INSTANTIATE_TEMPLATE(erode, uint8_t); -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/resize/resize_api.cpp b/kleidicv/src/resize/resize_api.cpp index d30cd2536..dd744aa0a 100644 --- a/kleidicv/src/resize/resize_api.cpp +++ b/kleidicv/src/resize/resize_api.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 @@ -9,4 +9,4 @@ KLEIDICV_MULTIVERSION_C_API( kleidicv_resize_to_quarter_u8, &kleidicv::neon::resize_to_quarter_u8, KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::resize_to_quarter_u8), - &kleidicv::sme2::resize_to_quarter_u8); + &kleidicv::sme::resize_to_quarter_u8); diff --git a/kleidicv/src/resize/resize_linear_api.cpp b/kleidicv/src/resize/resize_linear_api.cpp index 838d053ae..2e48849f8 100644 --- a/kleidicv/src/resize/resize_linear_api.cpp +++ b/kleidicv/src/resize/resize_linear_api.cpp @@ -9,13 +9,13 @@ KLEIDICV_MULTIVERSION_C_API( kleidicv_resize_linear_stripe_u8, &kleidicv::neon::resize_linear_stripe_u8, KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::resize_linear_stripe_u8), - &kleidicv::sme2::resize_linear_stripe_u8); + &kleidicv::sme::resize_linear_stripe_u8); KLEIDICV_MULTIVERSION_C_API( kleidicv_resize_linear_stripe_f32, &kleidicv::neon::resize_linear_stripe_f32, KLEIDICV_SVE2_IMPL_IF(&kleidicv::sve2::resize_linear_stripe_f32), - &kleidicv::sme2::resize_linear_stripe_f32); + &kleidicv::sme::resize_linear_stripe_f32); extern "C" { diff --git a/kleidicv/src/resize/resize_linear_sme2.cpp b/kleidicv/src/resize/resize_linear_sme2.cpp index a308ea2cb..9d138481c 100644 --- a/kleidicv/src/resize/resize_linear_sme2.cpp +++ b/kleidicv/src/resize/resize_linear_sme2.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "kleidicv/resize/resize_linear.h" #include "resize_linear_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t resize_linear_stripe_u8(const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, size_t y_begin, size_t y_end, @@ -26,4 +26,4 @@ resize_linear_stripe_f32(const float *src, size_t src_stride, size_t src_width, dst_height); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/kleidicv/src/resize/resize_sme2.cpp b/kleidicv/src/resize/resize_sme2.cpp index 490ccb69a..f6122b282 100644 --- a/kleidicv/src/resize/resize_sme2.cpp +++ b/kleidicv/src/resize/resize_sme2.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2023 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: 2023 - 2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 #include "kleidicv/resize/resize.h" #include "resize_sc.h" -namespace kleidicv::sme2 { +namespace kleidicv::sme { KLEIDICV_LOCALLY_STREAMING KLEIDICV_TARGET_FN_ATTRS kleidicv_error_t resize_to_quarter_u8(const uint8_t *src, size_t src_stride, size_t src_width, @@ -15,4 +15,4 @@ resize_to_quarter_u8(const uint8_t *src, size_t src_stride, size_t src_width, dst_stride, dst_width, dst_height); } -} // namespace kleidicv::sme2 +} // namespace kleidicv::sme diff --git a/scripts/benchmark/build.sh b/scripts/benchmark/build.sh index 237ad1374..b52722358 100755 --- a/scripts/benchmark/build.sh +++ b/scripts/benchmark/build.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +# SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates # # SPDX-License-Identifier: Apache-2.0 @@ -65,7 +65,7 @@ export EXTRA_CMAKE_ARGS="\ ${COMMON_EXTRA_CMAKE_ARGS:-} \ -DWITH_KLEIDICV=ON \ -DKLEIDICV_SOURCE_PATH=${KLEIDICV_SOURCE_PATH} \ - -DKLEIDICV_ENABLE_SME2=ON \ + -DKLEIDICV_ENABLE_SME=ON \ ${KLEIDICV_EXTRA_CMAKE_OPTIONS:-} \ " @@ -83,7 +83,7 @@ export EXTRA_CMAKE_ARGS="\ ${COMMON_EXTRA_CMAKE_ARGS:-} \ -DWITH_KLEIDICV=ON \ -DKLEIDICV_SOURCE_PATH=${KLEIDICV_SOURCE_PATH} \ - -DKLEIDICV_ENABLE_SME2=ON \ + -DKLEIDICV_ENABLE_SME=ON \ ${CUSTOM_CMAKE_OPTIONS} \ " diff --git a/scripts/ci-opencv.sh b/scripts/ci-opencv.sh index bad3718a1..a30fb8965 100755 --- a/scripts/ci-opencv.sh +++ b/scripts/ci-opencv.sh @@ -28,7 +28,7 @@ EXTRA_CMAKE_ARGS="\ -DBUILD_SHARED_LIBS=OFF \ -DWITH_KLEIDICV=ON \ -DKLEIDICV_SOURCE_PATH=$(pwd) \ - -DKLEIDICV_ENABLE_SME2=ON \ + -DKLEIDICV_ENABLE_SME=ON \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DCV_TRACE=OFF \ diff --git a/scripts/ci.sh b/scripts/ci.sh index 357c5160f..704d9618d 100755 --- a/scripts/ci.sh +++ b/scripts/ci.sh @@ -43,8 +43,8 @@ cmake -S . -B build/ci/clang -G Ninja \ -DCMAKE_CXX_CLANG_TIDY=clang-tidy-20 \ -DCMAKE_CXX_FLAGS="--target=aarch64-linux-gnu --coverage" \ -DCMAKE_EXE_LINKER_FLAGS="--rtlib=compiler-rt -static -fuse-ld=lld --coverage" \ - -DKLEIDICV_ENABLE_SME2=ON \ - -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF \ + -DKLEIDICV_ENABLE_SME=ON \ + -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF \ -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF \ -DKLEIDICV_CHECK_BANNED_FUNCTIONS=ON @@ -89,7 +89,7 @@ if [[ $(dpkg --print-architecture) = arm64 ]]; then cmake -S . -B build/ci/sanitize -G Ninja \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ - -DKLEIDICV_ENABLE_SME2=OFF \ + -DKLEIDICV_ENABLE_SME=OFF \ -DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -fno-sanitize-recover=all -Wno-pass-failed" ninja -C build/ci/sanitize kleidicv-api-test build/ci/sanitize/test/api/kleidicv-api-test @@ -105,8 +105,8 @@ cmake -S . -B build/ci/build-benchmark -G Ninja \ -DCMAKE_SYSTEM_NAME=Linux \ -DCMAKE_SYSTEM_PROCESSOR=aarch64 \ -DKLEIDICV_BENCHMARK=ON \ - -DKLEIDICV_ENABLE_SME2=ON \ - -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF \ + -DKLEIDICV_ENABLE_SME=ON \ + -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF \ -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF \ -DKLEIDICV_NEON_USE_CONTINUOUS_MULTIVEC_LS=OFF ninja -C build/ci/build-benchmark kleidicv-benchmark diff --git a/scripts/run_opencv_conformity_checks.sh b/scripts/run_opencv_conformity_checks.sh index 659a6c447..a3ec54b59 100755 --- a/scripts/run_opencv_conformity_checks.sh +++ b/scripts/run_opencv_conformity_checks.sh @@ -83,9 +83,9 @@ cmake "${common_cmake_args[@]}" \ -B "${OPENCV_KLEIDICV_PATH}" \ -DWITH_KLEIDICV=ON \ -DKLEIDICV_SOURCE_PATH="${KLEIDICV_SOURCE_PATH}" \ - -DKLEIDICV_ENABLE_SME2=ON \ + -DKLEIDICV_ENABLE_SME=ON \ -DKLEIDICV_LIMIT_SVE2_TO_SELECTED_ALGORITHMS=OFF \ - -DKLEIDICV_LIMIT_SME2_TO_SELECTED_ALGORITHMS=OFF \ + -DKLEIDICV_LIMIT_SME_TO_SELECTED_ALGORITHMS=OFF \ -DKLEIDICV_ENABLE_ALL_OPENCV_HAL=ON ninja -C "${OPENCV_KLEIDICV_PATH}" manager -- GitLab From 351011462238ca4f86780b3bedb5234181be1815 Mon Sep 17 00:00:00 2001 From: Mark Horvath Date: Thu, 10 Jul 2025 13:41:15 +0000 Subject: [PATCH 2/2] Rename all *sme2.cpp files to *sme.cpp --- examples/extract_one_operation/CMakeLists.txt | 2 +- kleidicv/CMakeLists.txt | 4 ++-- kleidicv/src/analysis/{min_max_sme2.cpp => min_max_sme.cpp} | 0 .../src/arithmetics/{absdiff_sme2.cpp => absdiff_sme.cpp} | 0 ...with_threshold_sme2.cpp => add_abs_with_threshold_sme.cpp} | 0 kleidicv/src/arithmetics/{add_sme2.cpp => add_sme.cpp} | 0 .../src/arithmetics/{compare_sme2.cpp => compare_sme.cpp} | 0 kleidicv/src/arithmetics/{exp_sme2.cpp => exp_sme.cpp} | 0 .../src/arithmetics/{in_range_sme2.cpp => in_range_sme.cpp} | 0 kleidicv/src/arithmetics/{scale_sme2.cpp => scale_sme.cpp} | 0 kleidicv/src/arithmetics/{sub_sme2.cpp => sub_sme.cpp} | 0 kleidicv/src/arithmetics/{sum_sme2.cpp => sum_sme.cpp} | 0 .../src/arithmetics/{threshold_sme2.cpp => threshold_sme.cpp} | 0 .../conversions/{float_conv_sme2.cpp => float_conv_sme.cpp} | 0 .../conversions/{gray_to_rgb_sme2.cpp => gray_to_rgb_sme.cpp} | 0 .../conversions/{rgb_to_rgb_sme2.cpp => rgb_to_rgb_sme.cpp} | 0 .../conversions/{rgb_to_yuv_sme2.cpp => rgb_to_yuv_sme.cpp} | 0 .../{yuv_sp_to_rgb_sme2.cpp => yuv_sp_to_rgb_sme.cpp} | 0 .../conversions/{yuv_to_rgb_sme2.cpp => yuv_to_rgb_sme.cpp} | 0 ...ur_and_downsample_sme2.cpp => blur_and_downsample_sme.cpp} | 0 ...ussian_blur_fixed_sme2.cpp => gaussian_blur_fixed_sme.cpp} | 0 ...g_network_sme2.cpp => median_blur_sorting_network_sme.cpp} | 0 kleidicv/src/filters/{scharr_sme2.cpp => scharr_sme.cpp} | 0 ...parable_filter_2d_sme2.cpp => separable_filter_2d_sme.cpp} | 0 kleidicv/src/filters/{sobel_sme2.cpp => sobel_sme.cpp} | 0 .../src/logical/{bitwise_and_sme2.cpp => bitwise_and_sme.cpp} | 0 .../morphology/{morphology_sme2.cpp => morphology_sme.cpp} | 0 .../resize/{resize_linear_sme2.cpp => resize_linear_sme.cpp} | 0 kleidicv/src/resize/{resize_sme2.cpp => resize_sme.cpp} | 0 29 files changed, 3 insertions(+), 3 deletions(-) rename kleidicv/src/analysis/{min_max_sme2.cpp => min_max_sme.cpp} (100%) rename kleidicv/src/arithmetics/{absdiff_sme2.cpp => absdiff_sme.cpp} (100%) rename kleidicv/src/arithmetics/{add_abs_with_threshold_sme2.cpp => add_abs_with_threshold_sme.cpp} (100%) rename kleidicv/src/arithmetics/{add_sme2.cpp => add_sme.cpp} (100%) rename kleidicv/src/arithmetics/{compare_sme2.cpp => compare_sme.cpp} (100%) rename kleidicv/src/arithmetics/{exp_sme2.cpp => exp_sme.cpp} (100%) rename kleidicv/src/arithmetics/{in_range_sme2.cpp => in_range_sme.cpp} (100%) rename kleidicv/src/arithmetics/{scale_sme2.cpp => scale_sme.cpp} (100%) rename kleidicv/src/arithmetics/{sub_sme2.cpp => sub_sme.cpp} (100%) rename kleidicv/src/arithmetics/{sum_sme2.cpp => sum_sme.cpp} (100%) rename kleidicv/src/arithmetics/{threshold_sme2.cpp => threshold_sme.cpp} (100%) rename kleidicv/src/conversions/{float_conv_sme2.cpp => float_conv_sme.cpp} (100%) rename kleidicv/src/conversions/{gray_to_rgb_sme2.cpp => gray_to_rgb_sme.cpp} (100%) rename kleidicv/src/conversions/{rgb_to_rgb_sme2.cpp => rgb_to_rgb_sme.cpp} (100%) rename kleidicv/src/conversions/{rgb_to_yuv_sme2.cpp => rgb_to_yuv_sme.cpp} (100%) rename kleidicv/src/conversions/{yuv_sp_to_rgb_sme2.cpp => yuv_sp_to_rgb_sme.cpp} (100%) rename kleidicv/src/conversions/{yuv_to_rgb_sme2.cpp => yuv_to_rgb_sme.cpp} (100%) rename kleidicv/src/filters/{blur_and_downsample_sme2.cpp => blur_and_downsample_sme.cpp} (100%) rename kleidicv/src/filters/{gaussian_blur_fixed_sme2.cpp => gaussian_blur_fixed_sme.cpp} (100%) rename kleidicv/src/filters/{median_blur_sorting_network_sme2.cpp => median_blur_sorting_network_sme.cpp} (100%) rename kleidicv/src/filters/{scharr_sme2.cpp => scharr_sme.cpp} (100%) rename kleidicv/src/filters/{separable_filter_2d_sme2.cpp => separable_filter_2d_sme.cpp} (100%) rename kleidicv/src/filters/{sobel_sme2.cpp => sobel_sme.cpp} (100%) rename kleidicv/src/logical/{bitwise_and_sme2.cpp => bitwise_and_sme.cpp} (100%) rename kleidicv/src/morphology/{morphology_sme2.cpp => morphology_sme.cpp} (100%) rename kleidicv/src/resize/{resize_linear_sme2.cpp => resize_linear_sme.cpp} (100%) rename kleidicv/src/resize/{resize_sme2.cpp => resize_sme.cpp} (100%) diff --git a/examples/extract_one_operation/CMakeLists.txt b/examples/extract_one_operation/CMakeLists.txt index b5270e762..f48c6477a 100644 --- a/examples/extract_one_operation/CMakeLists.txt +++ b/examples/extract_one_operation/CMakeLists.txt @@ -11,7 +11,7 @@ add_library( sme_gaussian_blur SHARED sme_gaussian_blur.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/../../kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../kleidicv/src/filters/gaussian_blur_fixed_sme.cpp ) set_target_properties( diff --git a/kleidicv/CMakeLists.txt b/kleidicv/CMakeLists.txt index 9fd839bed..525102853 100644 --- a/kleidicv/CMakeLists.txt +++ b/kleidicv/CMakeLists.txt @@ -96,8 +96,8 @@ file(GLOB KLEIDICV_SVE2_SOURCES ) file(GLOB KLEIDICV_SME_SOURCES - "${CMAKE_CURRENT_LIST_DIR}/src/*_sme2.cpp" - "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sme2.cpp" + "${CMAKE_CURRENT_LIST_DIR}/src/*_sme.cpp" + "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sme.cpp" ) set(KLEIDICV_INCLUDE_DIRS diff --git a/kleidicv/src/analysis/min_max_sme2.cpp b/kleidicv/src/analysis/min_max_sme.cpp similarity index 100% rename from kleidicv/src/analysis/min_max_sme2.cpp rename to kleidicv/src/analysis/min_max_sme.cpp diff --git a/kleidicv/src/arithmetics/absdiff_sme2.cpp b/kleidicv/src/arithmetics/absdiff_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/absdiff_sme2.cpp rename to kleidicv/src/arithmetics/absdiff_sme.cpp diff --git a/kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp b/kleidicv/src/arithmetics/add_abs_with_threshold_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp rename to kleidicv/src/arithmetics/add_abs_with_threshold_sme.cpp diff --git a/kleidicv/src/arithmetics/add_sme2.cpp b/kleidicv/src/arithmetics/add_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/add_sme2.cpp rename to kleidicv/src/arithmetics/add_sme.cpp diff --git a/kleidicv/src/arithmetics/compare_sme2.cpp b/kleidicv/src/arithmetics/compare_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/compare_sme2.cpp rename to kleidicv/src/arithmetics/compare_sme.cpp diff --git a/kleidicv/src/arithmetics/exp_sme2.cpp b/kleidicv/src/arithmetics/exp_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/exp_sme2.cpp rename to kleidicv/src/arithmetics/exp_sme.cpp diff --git a/kleidicv/src/arithmetics/in_range_sme2.cpp b/kleidicv/src/arithmetics/in_range_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/in_range_sme2.cpp rename to kleidicv/src/arithmetics/in_range_sme.cpp diff --git a/kleidicv/src/arithmetics/scale_sme2.cpp b/kleidicv/src/arithmetics/scale_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/scale_sme2.cpp rename to kleidicv/src/arithmetics/scale_sme.cpp diff --git a/kleidicv/src/arithmetics/sub_sme2.cpp b/kleidicv/src/arithmetics/sub_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/sub_sme2.cpp rename to kleidicv/src/arithmetics/sub_sme.cpp diff --git a/kleidicv/src/arithmetics/sum_sme2.cpp b/kleidicv/src/arithmetics/sum_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/sum_sme2.cpp rename to kleidicv/src/arithmetics/sum_sme.cpp diff --git a/kleidicv/src/arithmetics/threshold_sme2.cpp b/kleidicv/src/arithmetics/threshold_sme.cpp similarity index 100% rename from kleidicv/src/arithmetics/threshold_sme2.cpp rename to kleidicv/src/arithmetics/threshold_sme.cpp diff --git a/kleidicv/src/conversions/float_conv_sme2.cpp b/kleidicv/src/conversions/float_conv_sme.cpp similarity index 100% rename from kleidicv/src/conversions/float_conv_sme2.cpp rename to kleidicv/src/conversions/float_conv_sme.cpp diff --git a/kleidicv/src/conversions/gray_to_rgb_sme2.cpp b/kleidicv/src/conversions/gray_to_rgb_sme.cpp similarity index 100% rename from kleidicv/src/conversions/gray_to_rgb_sme2.cpp rename to kleidicv/src/conversions/gray_to_rgb_sme.cpp diff --git a/kleidicv/src/conversions/rgb_to_rgb_sme2.cpp b/kleidicv/src/conversions/rgb_to_rgb_sme.cpp similarity index 100% rename from kleidicv/src/conversions/rgb_to_rgb_sme2.cpp rename to kleidicv/src/conversions/rgb_to_rgb_sme.cpp diff --git a/kleidicv/src/conversions/rgb_to_yuv_sme2.cpp b/kleidicv/src/conversions/rgb_to_yuv_sme.cpp similarity index 100% rename from kleidicv/src/conversions/rgb_to_yuv_sme2.cpp rename to kleidicv/src/conversions/rgb_to_yuv_sme.cpp diff --git a/kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp b/kleidicv/src/conversions/yuv_sp_to_rgb_sme.cpp similarity index 100% rename from kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp rename to kleidicv/src/conversions/yuv_sp_to_rgb_sme.cpp diff --git a/kleidicv/src/conversions/yuv_to_rgb_sme2.cpp b/kleidicv/src/conversions/yuv_to_rgb_sme.cpp similarity index 100% rename from kleidicv/src/conversions/yuv_to_rgb_sme2.cpp rename to kleidicv/src/conversions/yuv_to_rgb_sme.cpp diff --git a/kleidicv/src/filters/blur_and_downsample_sme2.cpp b/kleidicv/src/filters/blur_and_downsample_sme.cpp similarity index 100% rename from kleidicv/src/filters/blur_and_downsample_sme2.cpp rename to kleidicv/src/filters/blur_and_downsample_sme.cpp diff --git a/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp b/kleidicv/src/filters/gaussian_blur_fixed_sme.cpp similarity index 100% rename from kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp rename to kleidicv/src/filters/gaussian_blur_fixed_sme.cpp diff --git a/kleidicv/src/filters/median_blur_sorting_network_sme2.cpp b/kleidicv/src/filters/median_blur_sorting_network_sme.cpp similarity index 100% rename from kleidicv/src/filters/median_blur_sorting_network_sme2.cpp rename to kleidicv/src/filters/median_blur_sorting_network_sme.cpp diff --git a/kleidicv/src/filters/scharr_sme2.cpp b/kleidicv/src/filters/scharr_sme.cpp similarity index 100% rename from kleidicv/src/filters/scharr_sme2.cpp rename to kleidicv/src/filters/scharr_sme.cpp diff --git a/kleidicv/src/filters/separable_filter_2d_sme2.cpp b/kleidicv/src/filters/separable_filter_2d_sme.cpp similarity index 100% rename from kleidicv/src/filters/separable_filter_2d_sme2.cpp rename to kleidicv/src/filters/separable_filter_2d_sme.cpp diff --git a/kleidicv/src/filters/sobel_sme2.cpp b/kleidicv/src/filters/sobel_sme.cpp similarity index 100% rename from kleidicv/src/filters/sobel_sme2.cpp rename to kleidicv/src/filters/sobel_sme.cpp diff --git a/kleidicv/src/logical/bitwise_and_sme2.cpp b/kleidicv/src/logical/bitwise_and_sme.cpp similarity index 100% rename from kleidicv/src/logical/bitwise_and_sme2.cpp rename to kleidicv/src/logical/bitwise_and_sme.cpp diff --git a/kleidicv/src/morphology/morphology_sme2.cpp b/kleidicv/src/morphology/morphology_sme.cpp similarity index 100% rename from kleidicv/src/morphology/morphology_sme2.cpp rename to kleidicv/src/morphology/morphology_sme.cpp diff --git a/kleidicv/src/resize/resize_linear_sme2.cpp b/kleidicv/src/resize/resize_linear_sme.cpp similarity index 100% rename from kleidicv/src/resize/resize_linear_sme2.cpp rename to kleidicv/src/resize/resize_linear_sme.cpp diff --git a/kleidicv/src/resize/resize_sme2.cpp b/kleidicv/src/resize/resize_sme.cpp similarity index 100% rename from kleidicv/src/resize/resize_sme2.cpp rename to kleidicv/src/resize/resize_sme.cpp -- GitLab