diff --git a/.devcontainer/coverage.sh b/.devcontainer/coverage.sh index 41274dc281c1fcc3240759eee563a9005fc1a945..746c3fd11c132a88a0df451e5b9cbc10c1de78df 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 4173251c722651d165af1f6e316962aac5f30302..64575a2a1d536e04372713ab579c1a32acc998f0 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 9a52dfd916e916e7432038d32924488529dc28d3..ab26a3c21ea643389eb92a14fedff60aaf3d2c35 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 468a897514d59f788a4c297fdde6fe2905fc57d3..3a94c3ffaaf3ed9ca55c9e9578bad8938b32fc24 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 7fad36f64e554c07ac7899bec50b10efc8e383a1..6ddbdd491a2f49fd41342ac631c8f0b7d0ed8e5f 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 9b9d9bd91953dcd699abd89a8b3473ee1d5a23f7..ef38c3c79e0f2c34ecb97ce0bf6fd1678358d9d2 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 bc0089074e32fec1d4cd0478d6fa6405a960525e..816cb0e0a84a4e7ecb08e341339f5d49051179ed 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 d30905157386f723fec4bc6f9bff7712b080e6f1..69915d144344e5eaf33de3efe366d090f0ffca50 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 ef77269678b50b808af0e1a48c50fbac170f867b..0fb3c2ba0761ef2fe129c84b8343bf9999b5388d 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 82d739b84bf9377a8a6dc24e5b1f630255be2015..f48c6477a06299bf0e2f9fc39583d21df47dc81e 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( @@ -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 eded1b6a0c3ed24ae32da600632847096ef9a3d8..794a11c176e1172f1cdc328bcba3db92d0034589 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 ab44302907ec26ab530a937e6e186a8ec0b800b2..525102853e2ca7694b68d1e0c1c81e15eba8bdd2 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,9 +95,9 @@ file(GLOB KLEIDICV_SVE2_SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sve2.cpp" ) -file(GLOB KLEIDICV_SME2_SOURCES - "${CMAKE_CURRENT_LIST_DIR}/src/*_sme2.cpp" - "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sme2.cpp" +file(GLOB KLEIDICV_SME_SOURCES + "${CMAKE_CURRENT_LIST_DIR}/src/*_sme.cpp" + "${CMAKE_CURRENT_LIST_DIR}/src/**/*_sme.cpp" ) set(KLEIDICV_INCLUDE_DIRS @@ -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 5b7fd35dbf1080ddf073e5232fb31afce942767c..f12813cf71fe0cc9aa3ae4b837ca46453d8344ec 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 6cea5f9c16b4fb31466a6ee2c8c7c163023e2c80..31d886f22352190561b64fd41baa892c37f0fc28 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 2460c116e30587d307cb82279134b0575650ec44..ec5f14cc813ce011fa0d0bb6c0ac27093b2dbe56 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 e6689795739b3efac3fd1de0ae0156be4495abe5..568e85e647119c8b8359df2bbdad731abcb95baa 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 48f3cebb8e0c6bb21bc5002e462c3f070084ed3a..cae8ac2a02b16d4ab53d343e8cfa317ddfa4ada3 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 85ae8d1aee562f87eb91f5720932af051fa4b52e..08c12fe39e2452439a676e5cfe100b1524e2c457 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 16c8aa55ba6d62114c9d0731ddf5386b30e8600a..f9dda4952802d1d4bae10217c90d2b34b702d591 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 70e6c8fae2e41992fa662d400d2e23e64b93f1f1..9283be01c8201bdbac5eab1933b8431b427c4023 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 a7400e66d84874421a24c1342fb9708b1cde9380..923781d5852c572699c957a10d9bfa6ceb2ff8cd 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 474e2c402784a150311ba9fc7dbf644f150b3318..ff5919e2a94be90f24fe69639ec43395ed1168c8 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 c3c07104090ccff5824efa668ed3bb69b3b34958..e801fd8d1f4fa49765e87ebd71044843d4ec5628 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 8fbaf2c36db306fa94328c8ec964efece25f6ec5..1990aaf433cfe4a751348615e1a0210ff1d8d6ca 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 e6bde054c70d12e157608e3d28e7c75fa54254f2..a4fe5944c11a73bbf7f9222cfa81b4f47897dc7a 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 9427d8043715e3ec11e35f30b52cc566db115e8b..1ff29d18a318ac43b285a63865ebb5e0ceb3c78e 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 f164ea561b38ee066f8ec0fecf3f27cb7489b0de..73708ef70a30634a3612e2245f47839c6a5c8d02 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 1b43ea2a43d91ffa17b1eb91c31829744c366101..31005a941df802f04e4ae51b0cac31656d615063 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 8e03d2ef993f0a49d9b91ca8caf744e3ceb586fb..ff0b719eef1a257d30a9c22ceb66467ad4e71e22 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 0f9ffcac727cb0e7679f02f51ebaf8004dc21ffa..05fb376a9e6d608ec9402545b60c98c01d5fc214 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 473d41f98e32130192bdc22d325d76f5fad4117a..86f8aa36feac15953fae2b5e44db072b9109750b 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 55529750a12bcf5e75b86ea80a2665fb0153943f..47682842faf0e63d8aa47099105f3ef28382c8a1 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 4fa23350fd480094ac65900727e69bb21387b0cf..5495427d6c08a57b9ffa8904b641fcade551a850 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 6246ad87b8d4523d5f5176f3401239cacbe29f40..1e19c3b5ad360709cf583f39d128f11f738cca1e 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 33fd117a4920e474409769a1400c871a2a9d8c24..e3fe8c69f28c470b89fcb55494937b14ecd40e54 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 749a0fd4f40de08d73da8f0fc0aebd2dd8e51ce3..28740d91ec5a967b538934aa502e69ea16944bb8 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 98ea4151ddca6b542f58be43da5b095be205c439..678eaa92407f4ddc43fb350beb308bec2d3f9ce8 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 ad7c0c90821fe21120b187b8217e9103922c1253..0e4e0d708a01380545985abba8ba2853cb3332a1 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_sme.cpp similarity index 84% rename from kleidicv/src/analysis/min_max_sme2.cpp rename to kleidicv/src/analysis/min_max_sme.cpp index 7c119a12c90c9ce9ab7dcc5e58aabdf01e2d669d..fbbc225f9ffec7cd1d1ee33ad17ab8ab36d9823b 100644 --- a/kleidicv/src/analysis/min_max_sme2.cpp +++ b/kleidicv/src/analysis/min_max_sme.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 28da57a1e3d5144e452b9b91501a0222e1542eaa..e9dc562029f1646e2f5d08b5a232272271231b25 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_sme.cpp similarity index 95% rename from kleidicv/src/arithmetics/absdiff_sme2.cpp rename to kleidicv/src/arithmetics/absdiff_sme.cpp index 9bf7c21848a42acd75e65c54f75242ed8895ba62..ae44735355205998a45b4ee4cf1f3af7445b8c2e 100644 --- a/kleidicv/src/arithmetics/absdiff_sme2.cpp +++ b/kleidicv/src/arithmetics/absdiff_sme.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 363941177fb3ca4f05eaaf1684da9a8e49d652d9..daf138f38eda5a4433c21c5635755248accfa900 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_sme.cpp similarity index 87% rename from kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp rename to kleidicv/src/arithmetics/add_abs_with_threshold_sme.cpp index 4013a5a51a61f77812d2b7bd65b7fd7ae5b64f0f..85978f10c718d0a41bc0fdb69273c38308fc1657 100644 --- a/kleidicv/src/arithmetics/add_abs_with_threshold_sme2.cpp +++ b/kleidicv/src/arithmetics/add_abs_with_threshold_sme.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 b55b0fe9280e357e696160e4ad7cc80ef6b8e6b6..744af872a944e4c9af619dba05723555e2d859a1 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_sme.cpp similarity index 94% rename from kleidicv/src/arithmetics/add_sme2.cpp rename to kleidicv/src/arithmetics/add_sme.cpp index 7f21ffa7d240f7bfdcd1771a4ca66fdd565ab2ee..4022248c131da7c4f589973c498e1efb54dfc667 100644 --- a/kleidicv/src/arithmetics/add_sme2.cpp +++ b/kleidicv/src/arithmetics/add_sme.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 10daeb475e28d97278dff854c46ca20c8973810b..497d06f0689c6e418641ff404a81d3a7be03f584 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_sme.cpp similarity index 89% rename from kleidicv/src/arithmetics/compare_sme2.cpp rename to kleidicv/src/arithmetics/compare_sme.cpp index 407e2206b2c5d5bed8a41fbb7e3a07e6e0250b9b..30e38b2892cefee78c09d82b8021dc42ff1c31c9 100644 --- a/kleidicv/src/arithmetics/compare_sme2.cpp +++ b/kleidicv/src/arithmetics/compare_sme.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 d557b09941a950cba7a23e2f136e9b595f23c080..2f5ffc5e468548e7daa4b8fde9ef62b779fe4fbe 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_sme.cpp similarity index 81% rename from kleidicv/src/arithmetics/exp_sme2.cpp rename to kleidicv/src/arithmetics/exp_sme.cpp index 2f2b44dcb2633f25e656083d51081ae613235ab6..18cf8235dd9b89c2a61298df2fadb344a9b659b2 100644 --- a/kleidicv/src/arithmetics/exp_sme2.cpp +++ b/kleidicv/src/arithmetics/exp_sme.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 13c7fcded8ae326c9eaf263106fd3b03d5bda505..db70c428887c1188bd9b71142e1e8a32539dbbb1 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_sme.cpp similarity index 83% rename from kleidicv/src/arithmetics/in_range_sme2.cpp rename to kleidicv/src/arithmetics/in_range_sme.cpp index bbcf9e87aac64518ed6decf81154db945ac33caa..22e6ad5d9d83aa845644142c12a5629c7a9cf6e4 100644 --- a/kleidicv/src/arithmetics/in_range_sme2.cpp +++ b/kleidicv/src/arithmetics/in_range_sme.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 560e6e20f49e970b35f4a29f46c6bd848f97d835..3b48a1fe4a2fb8f6e929ac599d1cbce04f48dd55 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 31003a3a10730e4bd74b2dd74ba9a335c58c3330..643aca5ceffefb4ff529e58ba58e6520a2816875 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_sme.cpp similarity index 81% rename from kleidicv/src/arithmetics/scale_sme2.cpp rename to kleidicv/src/arithmetics/scale_sme.cpp index 8c1b6822884f94368b9e3bdc049850cf6356a72a..1edc395a9e438c6c64437555849e4dc9ebbd0a5d 100644 --- a/kleidicv/src/arithmetics/scale_sme2.cpp +++ b/kleidicv/src/arithmetics/scale_sme.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 2d302b10c6f0d396f5e9b233a97ae952e5eedcda..77dfb7b79a30652f7d34979e22fdf7efb321fef8 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_sme.cpp similarity index 94% rename from kleidicv/src/arithmetics/sub_sme2.cpp rename to kleidicv/src/arithmetics/sub_sme.cpp index 1fe21043dfe9d49ae02f3c7f0944aa2c7ab36e68..0bd22f3e9224aebc64fabeacea1c88530199c513 100644 --- a/kleidicv/src/arithmetics/sub_sme2.cpp +++ b/kleidicv/src/arithmetics/sub_sme.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 a24cb802179ecafa2a86f38e4dcb1e1287281e22..e1590dd87fdf3d242d124af889ae87ce8e9bc532 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_sme.cpp similarity index 79% rename from kleidicv/src/arithmetics/sum_sme2.cpp rename to kleidicv/src/arithmetics/sum_sme.cpp index 9a6b5d217eace339da773649830542aa6920b1e8..2f2126a52d92234e5575b05c8c8e34876a9ff8f2 100644 --- a/kleidicv/src/arithmetics/sum_sme2.cpp +++ b/kleidicv/src/arithmetics/sum_sme.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 b9d43ab6758625509466076d1beceb701fa9775d..86cfe10884db6e47f7813e2cf96e783a89ecf6fa 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_sme.cpp similarity index 83% rename from kleidicv/src/arithmetics/threshold_sme2.cpp rename to kleidicv/src/arithmetics/threshold_sme.cpp index cdd1ee125f5e5f4b3f539b1b25726bf46996fbe6..f69fa8d000fc846d156391c9d9eb46437c346993 100644 --- a/kleidicv/src/arithmetics/threshold_sme2.cpp +++ b/kleidicv/src/arithmetics/threshold_sme.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 c80538775ae06638dfaa3b612ba79202c3dae9b4..f9c3a68abcda9337a06d8fbaa4589c9ce4610839 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_sme.cpp similarity index 86% rename from kleidicv/src/conversions/float_conv_sme2.cpp rename to kleidicv/src/conversions/float_conv_sme.cpp index 49832008a06f080bdd47d0972b883f618fd801a2..294f3dd88d334451e560f6cf9986970f6b4e4140 100644 --- a/kleidicv/src/conversions/float_conv_sme2.cpp +++ b/kleidicv/src/conversions/float_conv_sme.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 6d40ef5a4dd10e0a8f0760c903a5d612047d75ca..080ea4e224136c3fb12444b2ad94c0fc3a89cb19 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_sme.cpp similarity index 80% rename from kleidicv/src/conversions/gray_to_rgb_sme2.cpp rename to kleidicv/src/conversions/gray_to_rgb_sme.cpp index 8a889a8d218256b2e26a1f08aee30d8991e6dcf7..42a8ea8c01f03a4457e16d4c8d4095fe415faffc 100644 --- a/kleidicv/src/conversions/gray_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/gray_to_rgb_sme.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 8d13939ce33c110cea79fae90e5de60241a64eed..82631e916bd9b8c89480ea430fc3dd5583c37f7e 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_sme.cpp similarity index 91% rename from kleidicv/src/conversions/rgb_to_rgb_sme2.cpp rename to kleidicv/src/conversions/rgb_to_rgb_sme.cpp index 3dd0f8db2407363460afb70b103d7d1ddae53445..8d82d358fa48f82fe1f218855069c8f0e107111e 100644 --- a/kleidicv/src/conversions/rgb_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/rgb_to_rgb_sme.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 4a05684c0a42d92327093dd9818c620705b65f6f..e7704560cd8459e2de521c0e3d076b49f9f6f7c4 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_sme.cpp similarity index 88% rename from kleidicv/src/conversions/rgb_to_yuv_sme2.cpp rename to kleidicv/src/conversions/rgb_to_yuv_sme.cpp index 3a143893a52c808889d66cce351274a1ede07b08..8464b7fca04e0094510052652c045dd876b78f83 100644 --- a/kleidicv/src/conversions/rgb_to_yuv_sme2.cpp +++ b/kleidicv/src/conversions/rgb_to_yuv_sme.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 e02bf1c033eabb91c79a2ab7d3552db45ee971f8..013473940ac3092fb8e4032bffade75367dd9d37 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_sme.cpp similarity index 93% rename from kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp rename to kleidicv/src/conversions/yuv_sp_to_rgb_sme.cpp index b74324767532d39bc00d04dbf31ccad424a620ec..5237801d9a41dc93f3bddf2c2a106f0b1e481ff2 100644 --- a/kleidicv/src/conversions/yuv_sp_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/yuv_sp_to_rgb_sme.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 7cb0c33e229f9c2afd63f020f3610363b5ff0a52..1997b9fef9eb6bdcfa131acfc699b78b03698946 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_sme.cpp similarity index 95% rename from kleidicv/src/conversions/yuv_to_rgb_sme2.cpp rename to kleidicv/src/conversions/yuv_to_rgb_sme.cpp index 82b52ca8b906d2da6695d6b275651b5f0ef327f2..f193912ea4d3c4c5cd701c3e11991a8306a5caac 100644 --- a/kleidicv/src/conversions/yuv_to_rgb_sme2.cpp +++ b/kleidicv/src/conversions/yuv_to_rgb_sme.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 f03e76c66f0d1a373ece4c7dc794fccf02c333aa..54be86c030c601209c4d6e7caded427c4e2849bf 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_sme.cpp similarity index 84% rename from kleidicv/src/filters/blur_and_downsample_sme2.cpp rename to kleidicv/src/filters/blur_and_downsample_sme.cpp index a62eef80876ad1d4cb51b70554e12b9332905d13..38c8b13cbc1acd3e23df72501ba0b3185555caa0 100644 --- a/kleidicv/src/filters/blur_and_downsample_sme2.cpp +++ b/kleidicv/src/filters/blur_and_downsample_sme.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 3a75f5c2ecc8e2cfb0dff9fe6fa3828c25a4b0b5..921e4d4f756483ea056e5110325119979a4f21e9 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 9420b9ad861b8a180dd8fe3304e42b3a269a26ec..a50741a7cc65780b09235dad22924fb63e1be43c 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_sme.cpp similarity index 94% rename from kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp rename to kleidicv/src/filters/gaussian_blur_fixed_sme.cpp index 3dfeb802042bb077f7ff7c9e1be6e9e7ae64d0d0..e614424179278f10d3729eb1e6a40629b1283e18 100644 --- a/kleidicv/src/filters/gaussian_blur_fixed_sme2.cpp +++ b/kleidicv/src/filters/gaussian_blur_fixed_sme.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 2a5e20ac181013f74c9910963071d321f2eb79c5..470673d5b263b39b2efb49cb65186df274492c35 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_sme.cpp similarity index 96% rename from kleidicv/src/filters/median_blur_sorting_network_sme2.cpp rename to kleidicv/src/filters/median_blur_sorting_network_sme.cpp index 893e870aad4c17fbe994bdfe6be1fce6e99c9d90..730c1060414d72c06253c86fa4beb60630c0f263 100644 --- a/kleidicv/src/filters/median_blur_sorting_network_sme2.cpp +++ b/kleidicv/src/filters/median_blur_sorting_network_sme.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 b6a06bfefbbbf1c61859b4d75f8ca5d1bf6319b7..63f15829b3e292a5a80183876f6638129c4c74af 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_sme.cpp similarity index 81% rename from kleidicv/src/filters/scharr_sme2.cpp rename to kleidicv/src/filters/scharr_sme.cpp index be51c94ed8477a54785fc96135753f511c1d975d..db083263671437cfb934e00c33c97bacb82b4673 100644 --- a/kleidicv/src/filters/scharr_sme2.cpp +++ b/kleidicv/src/filters/scharr_sme.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 79f0edeb7f8203cb4ebcf25d5c01f1041ed4f438..ab74b25f9a2877221e66f057c093aecde8949ea4 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_sme.cpp similarity index 91% rename from kleidicv/src/filters/separable_filter_2d_sme2.cpp rename to kleidicv/src/filters/separable_filter_2d_sme.cpp index 8ba832ff521bc05168c4d9aa15b32c26fd65afa1..3160a21ae3efe5ca1c9f8af809bb170cf26f9c19 100644 --- a/kleidicv/src/filters/separable_filter_2d_sme2.cpp +++ b/kleidicv/src/filters/separable_filter_2d_sme.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 4953a54bc709fde56fa82cf4471e30aabd5776ca..b96b62d7fc9dd5a969a1193959079d6265d3f9c1 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_sme.cpp similarity index 88% rename from kleidicv/src/filters/sobel_sme2.cpp rename to kleidicv/src/filters/sobel_sme.cpp index f44af14ee7f124428e6008d44e1518c28160ff25..539d204da61d4fd0c1c46b367c9286158c6a673a 100644 --- a/kleidicv/src/filters/sobel_sme2.cpp +++ b/kleidicv/src/filters/sobel_sme.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 c4f744f884b3709da7ea7dcf165c43427a199ce5..a5ef3147e0daa3372f5104ab7a53be4a40aef07c 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_sme.cpp similarity index 83% rename from kleidicv/src/logical/bitwise_and_sme2.cpp rename to kleidicv/src/logical/bitwise_and_sme.cpp index b380babe9e511149cbeaa7193f6dca676b14244c..5c079a64366c6dcfa731f55864c5364810a01056 100644 --- a/kleidicv/src/logical/bitwise_and_sme2.cpp +++ b/kleidicv/src/logical/bitwise_and_sme.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 71607bbb314f87506e128c1be2824e48b7b3c98e..f1e9dca80450d3667ed5a1882147aa9ccffb63b5 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_sme.cpp similarity index 88% rename from kleidicv/src/morphology/morphology_sme2.cpp rename to kleidicv/src/morphology/morphology_sme.cpp index 26c3214b4d616c5ba3b3ee00a1164dd8453991df..2f47d437b2f7969bceabfeed8863f7904c5b7467 100644 --- a/kleidicv/src/morphology/morphology_sme2.cpp +++ b/kleidicv/src/morphology/morphology_sme.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 d30cd253641d287e7ecf4790cd12b0588e1ac9b6..dd744aa0abfd16574f9fe965ef7d6849d5968df4 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 838d053aeeb43a798aea7cf044398d3801c3ba8b..2e48849f8516f95f78ecc4a7b49f953964eccc22 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_sme.cpp similarity index 88% rename from kleidicv/src/resize/resize_linear_sme2.cpp rename to kleidicv/src/resize/resize_linear_sme.cpp index a308ea2cbc8ae278f336513fc531b8be76620f32..9d138481c448eeae8e26b7a0f1befbe085040e66 100644 --- a/kleidicv/src/resize/resize_linear_sme2.cpp +++ b/kleidicv/src/resize/resize_linear_sme.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_sme.cpp similarity index 77% rename from kleidicv/src/resize/resize_sme2.cpp rename to kleidicv/src/resize/resize_sme.cpp index 490ccb69a9802da4795eea260656c8e5ede8a51c..f6122b282c32233a598a1b192156dbab03d6be55 100644 --- a/kleidicv/src/resize/resize_sme2.cpp +++ b/kleidicv/src/resize/resize_sme.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 237ad1374da2fe099375ce9c5ec20a2c8bc1a3f0..b527223589f4cebae0ca4f2b2f7ba258997edee5 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 bad3718a143f7a00f363045082444a8a7704fec7..a30fb8965ac9f04349e836bb53c4a04fdfea0ae8 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 357c5160fe201e4dbaa18c165906266281853010..704d9618dc7a511a5ddf21d4246b418ff78e3863 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 659a6c4472bc58576abfdaab84c08f4166d8cbe2..a3ec54b592dca7b7876aa0593ea1efea50df5cf1 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