From c7b64ef3b662076208d8db914498eb9d512d2e5a Mon Sep 17 00:00:00 2001 From: Jakub Sujak Date: Mon, 20 Jan 2025 12:09:33 +0000 Subject: [PATCH] Add -Wcast-qual to list of build options It's important that type casts do not remove type qualifiers such as const. Signed-off-by: Jakub Sujak --- CMakeLists.txt | 1 + ...mp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa.c | 8 ++++---- ..._clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot.c | 8 ++++---- .../matmul/pack/kai_lhs_pack_bf16p2vlx2_f32_sme.c | 4 ++-- kai/ukernels/matmul/pack/kai_lhs_pack_bf16p8x4_f16_neon.c | 4 ++-- .../matmul/pack/kai_lhs_quant_pack_bf16p1x4_f32_neon.c | 6 +++--- .../matmul/pack/kai_lhs_quant_pack_bf16p8x4_f32_neon.c | 4 ++-- .../pack/kai_rhs_pack_kxn_bf16p12x4biasf16_f16_neon.c | 6 +++--- .../pack/kai_rhs_pack_kxn_bf16p12x4biasf32_f16_neon.c | 6 +++--- .../kai_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon.c | 6 +++--- kai_defs.bzl | 1 + 11 files changed, 28 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e3e3993f..61203778 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ else() "-Wno-overlength-strings" "-Wstrict-overflow=2" "-Wswitch-default" + "-Wcast-qual" ) set(KLEIDIAI_WARNING_FLAGS_CXX diff --git a/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa.c b/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa.c index b1911981..66db8dc7 100644 --- a/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa.c +++ b/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa.c @@ -158,10 +158,10 @@ void kai_run_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa( const size_t mr = kai_get_mr_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa(); const size_t nr = kai_get_nr_matmul_clamp_f32_qsi8d32p1vlx4_qsi4c32p4vlx4_1vlx4vl_sme2_mopa(); - const uint16_t* lhs_scales = - (uint16_t*)((const int8_t*)lhs_packed + lhs_packed_stride - (mr * num_blocks) * kai_num_bytes_multiplier_lhs); - const uint16_t* rhs_scales = - (uint16_t*)((const uint8_t*)rhs_packed + rhs_packed_stride - (nr * num_blocks) * kai_num_bytes_multiplier_rhs); + const uint16_t* lhs_scales = (const uint16_t*)((const int8_t*)lhs_packed + lhs_packed_stride - + (mr * num_blocks) * kai_num_bytes_multiplier_lhs); + const uint16_t* rhs_scales = (const uint16_t*)((const uint8_t*)rhs_packed + rhs_packed_stride - + (nr * num_blocks) * kai_num_bytes_multiplier_rhs); __asm__ volatile( // Switch to streaming mode with ZA enabling diff --git a/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot.c b/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot.c index 002b55fa..067bcc03 100644 --- a/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot.c +++ b/kai/ukernels/matmul/matmul_clamp_f32_qsi8d32p_qsi4c32p/kai_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot.c @@ -161,10 +161,10 @@ void kai_run_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot( const size_t mr = kai_get_mr_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot(); const size_t nr = kai_get_nr_matmul_clamp_f32_qsi8d32p1x4_qsi4c32p4vlx4_1x4vl_sme2_sdot(); - const uint16_t* lhs_scales = - (uint16_t*)((const int8_t*)lhs_packed + lhs_packed_stride - (mr * num_blocks) * kai_num_bytes_multiplier_lhs); - const uint16_t* rhs_scales = - (uint16_t*)((const uint8_t*)rhs_packed + rhs_packed_stride - (nr * num_blocks) * kai_num_bytes_multiplier_rhs); + const uint16_t* lhs_scales = (const uint16_t*)((const int8_t*)lhs_packed + lhs_packed_stride - + (mr * num_blocks) * kai_num_bytes_multiplier_lhs); + const uint16_t* rhs_scales = (const uint16_t*)((const uint8_t*)rhs_packed + rhs_packed_stride - + (nr * num_blocks) * kai_num_bytes_multiplier_rhs); __asm__ volatile( // Switch to streaming mode with ZA enabling diff --git a/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p2vlx2_f32_sme.c b/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p2vlx2_f32_sme.c index 7698ce5d..2eb124a0 100644 --- a/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p2vlx2_f32_sme.c +++ b/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p2vlx2_f32_sme.c @@ -78,10 +78,10 @@ void kai_run_lhs_pack_bf16p2vlx2_f32_sme( for (size_t block_y = 0; block_y < m; block_y += block_height) { const size_t height = KAI_MIN(m - block_y, block_height); - void* out = (void*)((char*)lhs_packed + block_y * kai_roundup(k, kai_kr) * sizeof(uint16_t)); + void* out = (char*)lhs_packed + (block_y * kai_roundup(k, kai_kr) * sizeof(uint16_t)); for (size_t y = 0; y < height; y++) { - in[y] = (void*)((char*)lhs + (block_y + y) * lhs_stride); + in[y] = (const void*)((const char*)lhs + (block_y + y) * lhs_stride); } __asm__ __volatile__( diff --git a/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p8x4_f16_neon.c b/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p8x4_f16_neon.c index 723de695..e025368b 100644 --- a/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p8x4_f16_neon.c +++ b/kai/ukernels/matmul/pack/kai_lhs_pack_bf16p8x4_f16_neon.c @@ -1,5 +1,5 @@ // -// SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: Copyright 2024-2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 // @@ -69,7 +69,7 @@ void kai_run_lhs_pack_bf16p8x4_f16_neon( size_t width = k; for (size_t y = 0; y < height; y++) { - in[y] = (char*)lhs + (block_y + y) * lhs_stride; + in[y] = (const char*)lhs + (block_y + y) * lhs_stride; } __asm__ __volatile__( diff --git a/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p1x4_f32_neon.c b/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p1x4_f32_neon.c index a53b0088..5d6f1587 100644 --- a/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p1x4_f32_neon.c +++ b/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p1x4_f32_neon.c @@ -1,5 +1,5 @@ // -// SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: Copyright 2024-2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 // @@ -64,8 +64,8 @@ void kai_run_lhs_quant_pack_bf16p1x4_f32_neon( KAI_ASSUME(m_idx_start == 0); - const float* lhs_ptr = (float*)(lhs); - uint16_t* lhs_packed_ptr = (uint16_t*)(lhs_packed); + const float* lhs_ptr = lhs; + uint16_t* lhs_packed_ptr = lhs_packed; // Unroll two 256-bit loops size_t i = 0; diff --git a/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p8x4_f32_neon.c b/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p8x4_f32_neon.c index 6022ac91..9e59bdd0 100644 --- a/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p8x4_f32_neon.c +++ b/kai/ukernels/matmul/pack/kai_lhs_quant_pack_bf16p8x4_f32_neon.c @@ -1,5 +1,5 @@ // -// SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: Copyright 2024-2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 // @@ -73,7 +73,7 @@ void kai_run_lhs_quant_pack_bf16p8x4_f32_neon( size_t width = k; for (size_t y = 0; y < height; y++) { - in[y] = (char*)lhs + (block_y + y) * lhs_stride; + in[y] = (const char*)lhs + (block_y + y) * lhs_stride; } __asm__ __volatile__( diff --git a/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf16_f16_neon.c b/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf16_f16_neon.c index cff2dd0f..c664bb15 100644 --- a/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf16_f16_neon.c +++ b/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf16_f16_neon.c @@ -1,5 +1,5 @@ // -// SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: Copyright 2024-2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 // @@ -69,7 +69,7 @@ void kai_run_rhs_pack_kxn_bf16p12x4biasf16_f16_neon( const void* in = rhs; void* out = rhs_packed; const size_t in_stride = rhs_stride; - const uint16_t* pad_row = (uint16_t*)rhs; + const uint16_t* pad_row = rhs; // Fill zeros if bias is nullptr size_t bias_step = nr * sizeof(uint16_t); @@ -80,7 +80,7 @@ void kai_run_rhs_pack_kxn_bf16p12x4biasf16_f16_neon( bias_step = 0; } - const void* bias_ptr = bias == NULL ? (void*)zero_bias : (void*)bias; + const void* bias_ptr = bias == NULL ? (const void*)zero_bias : bias; size_t out_stride = kai_get_rhs_packed_stride_rhs_pack_kxn_bf16p12x4biasf16_f16_neon(height); diff --git a/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf32_f16_neon.c b/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf32_f16_neon.c index 2c4d5e5c..68b2b257 100644 --- a/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf32_f16_neon.c +++ b/kai/ukernels/matmul/pack/kai_rhs_pack_kxn_bf16p12x4biasf32_f16_neon.c @@ -1,5 +1,5 @@ // -// SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: Copyright 2024-2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 // @@ -61,7 +61,7 @@ void kai_run_rhs_pack_kxn_bf16p12x4biasf32_f16_neon( const void* in = rhs; void* out = rhs_packed; const size_t in_stride = rhs_stride; - uint16_t* pad_row = (uint16_t*)rhs; + const uint16_t* pad_row = rhs; // Fill zeros if bias is nullptr size_t bias_step = nr * sizeof(float); @@ -72,7 +72,7 @@ void kai_run_rhs_pack_kxn_bf16p12x4biasf32_f16_neon( bias_step = 0; } - const void* bias_ptr = bias == NULL ? (void*)zero_bias : (void*)bias; + const void* bias_ptr = bias == NULL ? (const void*)zero_bias : bias; size_t out_stride = kai_nr * kai_roundup(height, kai_kr) * sizeof(uint16_t) + kai_nr * sizeof(uint32_t); diff --git a/kai/ukernels/matmul/pack/kai_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon.c b/kai/ukernels/matmul/pack/kai_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon.c index 67119418..6e0acb80 100644 --- a/kai/ukernels/matmul/pack/kai_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon.c +++ b/kai/ukernels/matmul/pack/kai_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon.c @@ -1,5 +1,5 @@ // -// SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates +// SPDX-FileCopyrightText: Copyright 2024-2025 Arm Limited and/or its affiliates // // SPDX-License-Identifier: Apache-2.0 // @@ -66,7 +66,7 @@ void kai_run_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon( size_t height = k; const size_t width = n; - const void* in = (void*)rhs; + const void* in = rhs; void* out = rhs_packed; const size_t in_stride = rhs_stride; const float* pad_row = rhs; @@ -80,7 +80,7 @@ void kai_run_rhs_quant_pack_kxn_bf16p12x4biasf32_f32_neon( bias_step = 0; } - const void* bias_ptr = bias == NULL ? (void*)zero_bias : (void*)bias; + const void* bias_ptr = bias == NULL ? (const void*)zero_bias : bias; const size_t out_stride = nr * kai_roundup(height, kr) * sizeof(uint16_t) + nr * sizeof(uint32_t); diff --git a/kai_defs.bzl b/kai_defs.bzl index 593e320a..6e512b14 100644 --- a/kai_defs.bzl +++ b/kai_defs.bzl @@ -26,6 +26,7 @@ def kai_gcc_warn_copts(): "-Wstrict-overflow=2", "-Wswitch-default", "-Wno-vla", + "-Wcast-qual", ] def kai_gcc_warn_cxxopts(): -- GitLab