From 26e120ea25bfc63fd1d9fa6d1eda969b996b9306 Mon Sep 17 00:00:00 2001 From: Shubham Sharma Date: Wed, 17 May 2023 03:02:26 +0530 Subject: [PATCH] Fixed diagonal packing for C/Z TRSM small - In C/Z TRSM small, packing in case of unit diagonal is not handled properly. - Diagonal elements are still being read even in case of unit diagonal. - This causes "Conditional jump or move depends on uninitialised value" error during valgrind tests. - To fix this, diagonal elements should not be read in case of unit diagonal. AMD-Internal: [CPUPL-3406] Change-Id: If3d6965299998a83d87f3a032f654fc7f8c43d4e --- kernels/zen/3/bli_trsm_small.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/kernels/zen/3/bli_trsm_small.c b/kernels/zen/3/bli_trsm_small.c index 6999a225e..d08dbb227 100644 --- a/kernels/zen/3/bli_trsm_small.c +++ b/kernels/zen/3/bli_trsm_small.c @@ -8188,6 +8188,16 @@ BLIS_INLINE void ztrsm_small_pack_diag_element dim_t size ) { + if ( is_unitdiag ) + { + dcomplex ones = {1.0, 0.0}; + for( dim_t i = 0; i < size; i++) + { + d11_pack[i].real = ones.real; + d11_pack[i].imag = ones.imag; + } + return; + } #ifdef BLIS_ENABLE_TRSM_PREINVERSION // If Preinversion is enabled, inverse the diaganol // elements from A and pack into diagonal buffer. @@ -39478,6 +39488,16 @@ BLIS_INLINE void ctrsm_small_pack_diag_element dim_t size ) { + if ( is_unitdiag ) + { + scomplex ones = {1.0, 0.0}; + for( dim_t i = 0; i < size; i++) + { + d11_pack[i].real = ones.real; + d11_pack[i].imag = ones.imag; + } + return; + } #ifdef BLIS_ENABLE_TRSM_PREINVERSION // If Preinversion is disabled, inverse the diaganol // elements from A and pack into diagonal buffer.