diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 69e27e03ba00d26cbd26cab7eab9dccfd25b84d3..8bfb29d11ab717e598fe6b24f1d22b8bcec48de5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -89,7 +89,7 @@ test-linux-aarch64: needs: - build-clang script: - - ./build/kleidiai_test --gtest_filter=*:-*sme* --gtest_output=xml:kleidiai_test_results.xml + - ./build/kleidiai_test --gtest_output=xml:kleidiai_test_results.xml artifacts: when: always expire_in: 1 day @@ -105,7 +105,7 @@ test-linux-aarch64-cov: needs: - build-clang-cov script: - - ./build/kleidiai_test --gtest_filter=*:-*sme* --gtest_output=xml:kleidiai_test_results.xml + - ./build/kleidiai_test --gtest_output=xml:kleidiai_test_results.xml - mkdir -p build/coverage - gcovr --gcov-executable="llvm-cov gcov" --exclude-unreachable-branches --exclude=build --exclude=test --exclude-lines-by-pattern=".*KAI_(?:ASSERT|ASSUME|ERROR).*" --exclude-branches-by-pattern=".*KAI_(?:ASSERT|ASSUME).*" --json=build/coverage/linux-aarch64.json -j --root . build artifacts: @@ -133,7 +133,7 @@ test-linux-aarch64-cov-fvp: cd '$PWD' mkdir -p artifacts/$CI_PROJECT_DIR - GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:artifacts/$CI_PROJECT_DIR/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' + GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_output=xml:artifacts/$CI_PROJECT_DIR/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' tar cvf artifacts.tar -C artifacts . sync diff --git a/test/tests/matmul_test.cpp b/test/tests/matmul_test.cpp index e44f73e2c6efbfdf481e13a4600808df14e744e6..ac534645bae2bfecc68839bb2c6a30c36c64390f 100644 --- a/test/tests/matmul_test.cpp +++ b/test/tests/matmul_test.cpp @@ -22,6 +22,7 @@ #include "kai/kai_common.h" #include "test/common/compare.hpp" +#include "test/common/cpu_info.hpp" #include "test/common/data_format.hpp" #include "test/common/data_type.hpp" #include "test/common/float16.hpp" @@ -54,6 +55,8 @@ struct MatMulMethod { bool lhs_transposed; ///< LHS matrix is transposed. bool rhs_transposed; ///< RHS matrix is transposed. + bool is_sme2; ///< Test is a sme2 test + DataFormat dst_format; ///< Data format of the destination matrix. DataFormat lhs_format; ///< Data format of the LHS matrix. DataFormat packed_lhs_format; ///< Data format of the packed LHS matrix. @@ -326,6 +329,8 @@ static const std::array matmul_methods = { .lhs_transposed = false, .rhs_transposed = false, + .is_sme2 = false, + .dst_format = DataFormat(DataType::FP16), .lhs_format = DataFormat(DataType::FP16), .packed_lhs_format = DataFormat(DataType::UNKNOWN), @@ -372,6 +377,8 @@ static const std::array matmul_methods = { .lhs_transposed = false, .rhs_transposed = false, + .is_sme2 = true, + .dst_format = DataFormat(DataType::FP32), .lhs_format = DataFormat(DataType::FP32), .packed_lhs_format = DataFormat(DataType::FP32, 2 * get_sme_vector_length(), 1), @@ -548,6 +555,10 @@ TEST_P(MatMulTest, PackedLhs) { const auto& data = test_data(); const auto& method = matmul_methods.at(method_no); + if (method.is_sme2 && !cpu_has_sme2()) { + GTEST_SKIP(); + } + if (!method.is_pack_lhs_needed()) { GTEST_SKIP(); } @@ -595,6 +606,10 @@ TEST_P(MatMulTest, PackedRhs) { const auto& data = test_data(); const auto& method = matmul_methods.at(method_no); + if (method.is_sme2 && !cpu_has_sme2()) { + GTEST_SKIP(); + } + if (!method.is_pack_rhs_needed()) { GTEST_SKIP(); } @@ -662,6 +677,10 @@ TEST_P(MatMulTest, Output) { const auto& data = test_data(); const auto& method = matmul_methods.at(method_no); + if (method.is_sme2 && !cpu_has_sme2()) { + GTEST_SKIP(); + } + if (!method.has_main_kernel()) { GTEST_SKIP(); }