From f3cff28838f94809cdfa1c288a0f205eb97de4a9 Mon Sep 17 00:00:00 2001 From: Edward Smyth Date: Wed, 7 Feb 2024 09:56:30 -0500 Subject: [PATCH] GTestSuite: option to test upper case character arguments Add cmake option to convert all character arguments to upper case to check compliance. AMD-Internal: [CPUPL-4499] Change-Id: Ic18416d78f63b999a78253463cc15c32f7d444f4 --- gtestsuite/CMakeLists.txt | 3 +++ gtestsuite/README.md | 2 ++ gtestsuite/testsuite/CMakeLists.txt | 3 +++ gtestsuite/testsuite/level1/addv/addv.h | 8 ++++++-- gtestsuite/testsuite/level1/axpbyv/axpbyv.h | 7 ++++++- gtestsuite/testsuite/level1/axpyv/axpyv.h | 7 ++++++- gtestsuite/testsuite/level1/copyv/copyv.h | 7 ++++++- gtestsuite/testsuite/level1/dotv/dotv.h | 8 +++++++- gtestsuite/testsuite/level1/dotxv/dotxv.h | 8 +++++++- gtestsuite/testsuite/level1/scal2v/scal2v.h | 7 ++++++- gtestsuite/testsuite/level1/scalv/scalv.h | 7 ++++++- gtestsuite/testsuite/level1/setv/setv.h | 7 ++++++- gtestsuite/testsuite/level1/subv/subv.h | 7 ++++++- gtestsuite/testsuite/level1/xpbyv/xpbyv.h | 7 ++++++- gtestsuite/testsuite/level2/gemv/gemv.h | 9 ++++++++- gtestsuite/testsuite/level2/ger/ger.h | 9 ++++++++- gtestsuite/testsuite/level2/hemv/hemv.h | 10 +++++++++- gtestsuite/testsuite/level2/her/her.h | 9 ++++++++- gtestsuite/testsuite/level2/her2/her2.h | 10 +++++++++- gtestsuite/testsuite/level2/symv/symv.h | 10 +++++++++- gtestsuite/testsuite/level2/syr/syr.h | 9 ++++++++- gtestsuite/testsuite/level2/syr2/syr2.h | 10 +++++++++- gtestsuite/testsuite/level2/trmv/trmv.h | 9 ++++++++- gtestsuite/testsuite/level2/trsv/trsv.h | 9 ++++++++- gtestsuite/testsuite/level3/gemm/gemm.h | 9 ++++++++- .../testsuite/level3/gemm_compute/gemm_compute.h | 11 ++++++++++- gtestsuite/testsuite/level3/gemmt/gemmt.h | 10 +++++++++- gtestsuite/testsuite/level3/hemm/hemm.h | 11 ++++++++++- gtestsuite/testsuite/level3/her2k/her2k.h | 10 +++++++++- gtestsuite/testsuite/level3/herk/herk.h | 9 ++++++++- gtestsuite/testsuite/level3/symm/symm.h | 11 ++++++++++- gtestsuite/testsuite/level3/syr2k/syr2k.h | 10 +++++++++- gtestsuite/testsuite/level3/syrk/syrk.h | 9 ++++++++- gtestsuite/testsuite/level3/trmm/trmm.h | 11 ++++++++++- gtestsuite/testsuite/level3/trmm3/trmm3.h | 12 +++++++++++- gtestsuite/testsuite/level3/trsm/trsm.h | 11 ++++++++++- 36 files changed, 272 insertions(+), 34 deletions(-) diff --git a/gtestsuite/CMakeLists.txt b/gtestsuite/CMakeLists.txt index ac6d00593..16c247f91 100644 --- a/gtestsuite/CMakeLists.txt +++ b/gtestsuite/CMakeLists.txt @@ -139,6 +139,9 @@ if( NOT ((BLIS_ELEMENT_TYPE STREQUAL "f") OR (BLIS_ELEMENT_TYPE STREQUAL "i")) ) during CMake invokation: f, i") endif() +# Option to enable testing with upper case character arguments in BLAS and BLIS calls. +option(TEST_UPPERCASE_ARGS "Test upper case character arguments" OFF) + if(LINUX) if(REF_LIB) get_filename_component(REFLIB_PATH ${REF_LIB}/.. ABSOLUTE) diff --git a/gtestsuite/README.md b/gtestsuite/README.md index f21ad514c..851015af0 100644 --- a/gtestsuite/README.md +++ b/gtestsuite/README.md @@ -102,6 +102,8 @@ For threaded MKL the following OpenMP runtimes are used: * To build the testsuite using BLAS interface, configure using `-DTEST_INTERFACE=BLAS`. [**Default**] * To build the testsuite using CBLAS interface, configure using `-DTEST_INTERFACE=CBLAS`. * To build the testsuite using BLIS-typed interface, configure using `-DTEST_INTERFACE=BLIS_TYPED`. Note that more tests are built for this option, due to the extended APIs. +## Test with upper case character arguments +* To test with upper case character arguments, configure using `-DTEST_UPPERCASE_ARGS=ON`. [**OFF by default**] ## Type of Data Generated in Testing * To generate floating-point numbers in the matrices and vectors that are used in testing, configure using `-DBLIS_ELEMENT_TYPE=f`. [**Default**] * To generate integers in the matrices and vectors that are used in testing, configure using `-DBLIS_ELEMENT_TYPE=i`. This can be useful for debugging since operating on integers should compute exact results. Note that "integer" here doesn't refer to `int` type, but on the mathematical set Z. diff --git a/gtestsuite/testsuite/CMakeLists.txt b/gtestsuite/testsuite/CMakeLists.txt index 3b21c7897..d5f8f1af4 100644 --- a/gtestsuite/testsuite/CMakeLists.txt +++ b/gtestsuite/testsuite/CMakeLists.txt @@ -107,6 +107,9 @@ foreach(dir ${DIRS}) target_compile_definitions(${target_name}.${dir}.${subdir} PUBLIC TEST_BLIS_TYPED) endif() target_compile_definitions(${target_name}.${dir}.${subdir} PUBLIC ${UKR_DEFINES}) + if(TEST_UPPERCASE_ARGS) + target_compile_definitions(${target_name}.${dir}.${subdir} PUBLIC TEST_UPPERCASE_ARGS) + endif() add_test(NAME ${target_name}.${dir}.${subdir} COMMAND ${target_name}.${dir}.${subdir}) if(REF_CBLAS STREQUAL "MKL") set_property(TEST ${target_name}.${dir}.${subdir} PROPERTY ENVIRONMENT ${MKL_ENV}) diff --git a/gtestsuite/testsuite/level1/addv/addv.h b/gtestsuite/testsuite/level1/addv/addv.h index ed392dedc..e10969fff 100644 --- a/gtestsuite/testsuite/level1/addv/addv.h +++ b/gtestsuite/testsuite/level1/addv/addv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -66,10 +66,14 @@ static void typed_addv(char conj_x, gtint_t n, T* x, gtint_t incx, T* y, gtint_t else throw std::runtime_error("Error in testsuite/level1/addv.h: Invalid typename in typed_addv()."); } - template static void addv(char conjx, gtint_t n, T* x, gtint_t incx, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conjx = static_cast(std::toupper(static_cast(conjx))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level1/addv.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/axpbyv/axpbyv.h b/gtestsuite/testsuite/level1/axpbyv/axpbyv.h index 0c415e1b0..074de2e2b 100644 --- a/gtestsuite/testsuite/level1/axpbyv/axpbyv.h +++ b/gtestsuite/testsuite/level1/axpbyv/axpbyv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -102,6 +102,11 @@ static void typed_axpbyv(char conj_x, gtint_t n, T alpha, T* x, gtint_t incx, T template static void axpbyv(char conj_x, gtint_t n, T alpha, T* x, gtint_t incx, T beta, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conj_x = static_cast(std::toupper(static_cast(conj_x))); +#endif + #ifdef TEST_BLAS axpbyv_( n, alpha, x, incx, beta, y, incy ); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/axpyv/axpyv.h b/gtestsuite/testsuite/level1/axpyv/axpyv.h index 10e56cae1..741701ded 100644 --- a/gtestsuite/testsuite/level1/axpyv/axpyv.h +++ b/gtestsuite/testsuite/level1/axpyv/axpyv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -101,6 +101,11 @@ static void typed_axpyv(char conj_x, gtint_t n, T alpha, T* x, gtint_t incx, T* template static void axpyv(char conj_x, gtint_t n, T alpha, T* x, gtint_t incx, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conj_x = static_cast(std::toupper(static_cast(conj_x))); +#endif + #ifdef TEST_BLAS axpyv_( n, alpha, x, incx, y, incy ); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/copyv/copyv.h b/gtestsuite/testsuite/level1/copyv/copyv.h index cc8bf85af..c79602492 100644 --- a/gtestsuite/testsuite/level1/copyv/copyv.h +++ b/gtestsuite/testsuite/level1/copyv/copyv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -100,6 +100,11 @@ static void typed_copyv(char conjx, gtint_t n, T* x, gtint_t incx, T* y, gtint_t template static void copyv(char conjx, gtint_t n, T* x, gtint_t incx, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conjx = static_cast(std::toupper(static_cast(conjx))); +#endif + #ifdef TEST_BLAS copyv_(n, x, incx, y, incy); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/dotv/dotv.h b/gtestsuite/testsuite/level1/dotv/dotv.h index 7917868e5..f4768a0e2 100644 --- a/gtestsuite/testsuite/level1/dotv/dotv.h +++ b/gtestsuite/testsuite/level1/dotv/dotv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -113,6 +113,12 @@ template static void dotv(char conjx, char conjy, gtint_t n, T* x, gtint_t incx, T* y, gtint_t incy, T* rho) { + +#ifdef TEST_UPPERCASE_ARGS + conjx = static_cast(std::toupper(static_cast(conjx))); + conjy = static_cast(std::toupper(static_cast(conjy))); +#endif + #ifdef TEST_BLAS dotv_(n, x, incx, y, incy, rho); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/dotxv/dotxv.h b/gtestsuite/testsuite/level1/dotxv/dotxv.h index 3bb01ad0a..40dcf62dc 100644 --- a/gtestsuite/testsuite/level1/dotxv/dotxv.h +++ b/gtestsuite/testsuite/level1/dotxv/dotxv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -76,6 +76,12 @@ template static void dotxv( char conjx, char conjy, gtint_t n, T* alpha, T* x, gtint_t incx, T* y, gtint_t incy, T* beta, T* rho ) { + +#ifdef TEST_UPPERCASE_ARGS + conjx = static_cast(std::toupper(static_cast(conjx))); + conjy = static_cast(std::toupper(static_cast(conjy))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level1/dotxv.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/scal2v/scal2v.h b/gtestsuite/testsuite/level1/scal2v/scal2v.h index ad1383b71..e382b835a 100644 --- a/gtestsuite/testsuite/level1/scal2v/scal2v.h +++ b/gtestsuite/testsuite/level1/scal2v/scal2v.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -71,6 +71,11 @@ static void typed_scal2v(char conj_x, gtint_t n, T alpha, T* x, gtint_t incx, T* template static void scal2v(char conjx, gtint_t n, T alpha, T* x, gtint_t incx, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conjx = static_cast(std::toupper(static_cast(conjx))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level1/scal2v.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/scalv/scalv.h b/gtestsuite/testsuite/level1/scalv/scalv.h index 0ae0125f5..ceff8f7bb 100644 --- a/gtestsuite/testsuite/level1/scalv/scalv.h +++ b/gtestsuite/testsuite/level1/scalv/scalv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -100,6 +100,11 @@ static void typed_scalv(char conj_alpha, gtint_t n, T alpha, T* x, gtint_t incx) template static void scalv(char conj_alpha, gtint_t n, T alpha, T* x, gtint_t incx) { + +#ifdef TEST_UPPERCASE_ARGS + conj_alpha = static_cast(std::toupper(static_cast(conj_alpha))); +#endif + #ifdef TEST_BLAS scalv_( n, alpha, x, incx ); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/setv/setv.h b/gtestsuite/testsuite/level1/setv/setv.h index 651ec36b9..a766f564d 100644 --- a/gtestsuite/testsuite/level1/setv/setv.h +++ b/gtestsuite/testsuite/level1/setv/setv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -68,6 +68,11 @@ static void typed_setv(char conjalpha, gtint_t n, T* alpha, T* x, gtint_t incx) template static void setv(char conjalpha, gtint_t n, T* alpha, T* x, gtint_t incx) { + +#ifdef TEST_UPPERCASE_ARGS + conjalpha = static_cast(std::toupper(static_cast(conjalpha))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level1/setv.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/subv/subv.h b/gtestsuite/testsuite/level1/subv/subv.h index ff5059d6f..edb4cf4e1 100644 --- a/gtestsuite/testsuite/level1/subv/subv.h +++ b/gtestsuite/testsuite/level1/subv/subv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -69,6 +69,11 @@ static void typed_subv(char conj_x, gtint_t n, T* x, gtint_t incx, T* y, gtint_t template static void subv(char conjx, gtint_t n, T* x, gtint_t incx, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conjx = static_cast(std::toupper(static_cast(conjx))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level1/subv.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level1/xpbyv/xpbyv.h b/gtestsuite/testsuite/level1/xpbyv/xpbyv.h index 2b3a15fbd..f0588b423 100644 --- a/gtestsuite/testsuite/level1/xpbyv/xpbyv.h +++ b/gtestsuite/testsuite/level1/xpbyv/xpbyv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -70,6 +70,11 @@ static void typed_xpbyv(char conj_x, gtint_t n, T* x, gtint_t incx, T beta, T* y template static void xpbyv(char conj_x, gtint_t n, T* x, gtint_t incx, T beta, T* y, gtint_t incy) { + +#ifdef TEST_UPPERCASE_ARGS + conj_x = static_cast(std::toupper(static_cast(conj_x))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level1/xpbyv.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level2/gemv/gemv.h b/gtestsuite/testsuite/level2/gemv/gemv.h index d6cc12f2d..511d7d2e0 100644 --- a/gtestsuite/testsuite/level2/gemv/gemv.h +++ b/gtestsuite/testsuite/level2/gemv/gemv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -135,6 +135,13 @@ template static void gemv( char storage, char trans, char conj_x, gtint_t m, gtint_t n, T* alpha, T* ap, gtint_t lda, T* xp, gtint_t incx, T* beta, T* yp, gtint_t incy ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + trans = static_cast(std::toupper(static_cast(trans))); + conj_x = static_cast(std::toupper(static_cast(conj_x))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) gemv_( trans, m, n, alpha, ap, lda, xp, incx, beta, yp, incy ); diff --git a/gtestsuite/testsuite/level2/ger/ger.h b/gtestsuite/testsuite/level2/ger/ger.h index c6747f6c7..7a0ae1bdb 100644 --- a/gtestsuite/testsuite/level2/ger/ger.h +++ b/gtestsuite/testsuite/level2/ger/ger.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -143,6 +143,13 @@ template static void ger( char storage, char conjx, char conjy, gtint_t m, gtint_t n, T* alpha, T* xp, gtint_t incx, T* yp, gtint_t incy, T* ap, gtint_t lda ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + conjx = static_cast(std::toupper(static_cast(conjx))); + conjy = static_cast(std::toupper(static_cast(conjy))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) ger_( conjy, m, n, alpha, xp, incx, yp, incy, ap, lda ); diff --git a/gtestsuite/testsuite/level2/hemv/hemv.h b/gtestsuite/testsuite/level2/hemv/hemv.h index 90086336a..564ef415d 100644 --- a/gtestsuite/testsuite/level2/hemv/hemv.h +++ b/gtestsuite/testsuite/level2/hemv/hemv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -123,6 +123,14 @@ static void hemv( char storage, char uploa, char conja, char conjx, gtint_t n, T* alpha, T* ap, gtint_t lda, T* xp, gtint_t incx, T* beta, T* yp, gtint_t incy ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + conja = static_cast(std::toupper(static_cast(conja))); + conjx = static_cast(std::toupper(static_cast(conjx))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) hemv_( uploa, n, alpha, ap, lda, xp, incx, beta, yp, incy ); diff --git a/gtestsuite/testsuite/level2/her/her.h b/gtestsuite/testsuite/level2/her/her.h index ea7d3008c..eddf6de78 100644 --- a/gtestsuite/testsuite/level2/her/her.h +++ b/gtestsuite/testsuite/level2/her/her.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -111,6 +111,13 @@ template static void her( char storage, char uploa, char conj_x, gtint_t n, Tr* alpha, T* xp, gtint_t incx, T* ap, gtint_t lda ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + conj_x = static_cast(std::toupper(static_cast(conj_x))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) her_( uploa, n, alpha, xp, incx, ap, lda ); diff --git a/gtestsuite/testsuite/level2/her2/her2.h b/gtestsuite/testsuite/level2/her2/her2.h index 759b2d90d..aeff09db8 100644 --- a/gtestsuite/testsuite/level2/her2/her2.h +++ b/gtestsuite/testsuite/level2/her2/her2.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -116,6 +116,14 @@ template static void her2( char storage, char uploa, char conj_x, char conj_y, gtint_t n, T* alpha, T* xp, gtint_t incx, T* yp, gtint_t incy, T* ap, gtint_t lda ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + conj_x = static_cast(std::toupper(static_cast(conj_x))); + conj_y = static_cast(std::toupper(static_cast(conj_y))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) her2_( uploa, n, alpha, xp, incx, yp, incy, ap, lda ); diff --git a/gtestsuite/testsuite/level2/symv/symv.h b/gtestsuite/testsuite/level2/symv/symv.h index 2d77b25de..1ec1de688 100644 --- a/gtestsuite/testsuite/level2/symv/symv.h +++ b/gtestsuite/testsuite/level2/symv/symv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -118,6 +118,14 @@ static void symv( char storage, char uploa, char conja, char conjx, gtint_t n, T* alpha, T* ap, gtint_t lda, T* xp, gtint_t incx, T* beta, T* yp, gtint_t incy ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + conja = static_cast(std::toupper(static_cast(conja))); + conjx = static_cast(std::toupper(static_cast(conjx))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) symv_( uploa, n, alpha, ap, lda, xp, incx, beta, yp, incy ); diff --git a/gtestsuite/testsuite/level2/syr/syr.h b/gtestsuite/testsuite/level2/syr/syr.h index e16d5c532..2c247a978 100644 --- a/gtestsuite/testsuite/level2/syr/syr.h +++ b/gtestsuite/testsuite/level2/syr/syr.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -113,6 +113,13 @@ template static void syr( char storage, char uploa, char conj_x, gtint_t n, T* alpha, T* xp, gtint_t incx, T* ap, gtint_t lda ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + conj_x = static_cast(std::toupper(static_cast(conj_x))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) syr_( uploa, n, alpha, xp, incx, ap, lda ); diff --git a/gtestsuite/testsuite/level2/syr2/syr2.h b/gtestsuite/testsuite/level2/syr2/syr2.h index dd51b5497..b1df9e1ba 100644 --- a/gtestsuite/testsuite/level2/syr2/syr2.h +++ b/gtestsuite/testsuite/level2/syr2/syr2.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -116,6 +116,14 @@ template static void syr2( char storage, char uploa, char conj_x, char conj_y, gtint_t n, T* alpha, T* xp, gtint_t incx, T* yp, gtint_t incy, T* ap, gtint_t lda ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + conj_x = static_cast(std::toupper(static_cast(conj_x))); + conj_y = static_cast(std::toupper(static_cast(conj_y))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) syr2_( uploa, n, alpha, xp, incx, yp, incy, ap, lda ); diff --git a/gtestsuite/testsuite/level2/trmv/trmv.h b/gtestsuite/testsuite/level2/trmv/trmv.h index 8ee3750a6..7f937f7ed 100644 --- a/gtestsuite/testsuite/level2/trmv/trmv.h +++ b/gtestsuite/testsuite/level2/trmv/trmv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -139,6 +139,13 @@ static void trmv( char storage, char uploa, char transa, char diaga, testinghelpers::initone(one); #endif +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + transa = static_cast(std::toupper(static_cast(transa))); + diaga = static_cast(std::toupper(static_cast(diaga))); +#endif + #ifdef TEST_BLAS if(( storage == 'c' || storage == 'C' )) if( *alpha == one ) diff --git a/gtestsuite/testsuite/level2/trsv/trsv.h b/gtestsuite/testsuite/level2/trsv/trsv.h index 65ca33112..ef37b1c6e 100644 --- a/gtestsuite/testsuite/level2/trsv/trsv.h +++ b/gtestsuite/testsuite/level2/trsv/trsv.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -139,6 +139,13 @@ static void trsv( char storage, char uploa, char transa, char diaga, testinghelpers::initone(one); #endif +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uploa = static_cast(std::toupper(static_cast(uploa))); + transa = static_cast(std::toupper(static_cast(transa))); + diaga = static_cast(std::toupper(static_cast(diaga))); +#endif + #ifdef TEST_BLAS if(( storage == 'c' || storage == 'C' )) if( *alpha == one ) diff --git a/gtestsuite/testsuite/level3/gemm/gemm.h b/gtestsuite/testsuite/level3/gemm/gemm.h index 907f07884..b99cef8e0 100644 --- a/gtestsuite/testsuite/level3/gemm/gemm.h +++ b/gtestsuite/testsuite/level3/gemm/gemm.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -151,6 +151,13 @@ template static void gemm( char storage, char transa, char transb, gtint_t m, gtint_t n, gtint_t k, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + transa = static_cast(std::toupper(static_cast(transa))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) gemm_( transa, transb, m, n, k, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/gemm_compute/gemm_compute.h b/gtestsuite/testsuite/level3/gemm_compute/gemm_compute.h index 1d168df63..55adaf71d 100644 --- a/gtestsuite/testsuite/level3/gemm_compute/gemm_compute.h +++ b/gtestsuite/testsuite/level3/gemm_compute/gemm_compute.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -440,6 +440,15 @@ template static void gemm_compute( char storage, char transa, char transb, char packa, char packb, gtint_t m, gtint_t n, gtint_t k, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + transa = static_cast(std::toupper(static_cast(transa))); + transb = static_cast(std::toupper(static_cast(transb))); + packa = static_cast(std::toupper(static_cast(packa))); + packb = static_cast(std::toupper(static_cast(packb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) gemm_compute_( transa, transb, packa, packb, m, n, k, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/gemmt/gemmt.h b/gtestsuite/testsuite/level3/gemmt/gemmt.h index a9a92821e..f4851d440 100644 --- a/gtestsuite/testsuite/level3/gemmt/gemmt.h +++ b/gtestsuite/testsuite/level3/gemmt/gemmt.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -159,6 +159,14 @@ template static void gemmt( char storage, char uplo, char transa, char transb, gtint_t n, gtint_t k, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uplo = static_cast(std::toupper(static_cast(uplo))); + transa = static_cast(std::toupper(static_cast(transa))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) gemmt_( uplo, transa, transb, n, k, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/hemm/hemm.h b/gtestsuite/testsuite/level3/hemm/hemm.h index 1cc0ca147..86cf503d2 100644 --- a/gtestsuite/testsuite/level3/hemm/hemm.h +++ b/gtestsuite/testsuite/level3/hemm/hemm.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -151,6 +151,15 @@ template static void hemm( char storage, char side, char uplo, char conja, char transb, gtint_t m, gtint_t n, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + side = static_cast(std::toupper(static_cast(side))); + uplo = static_cast(std::toupper(static_cast(uplo))); + conja = static_cast(std::toupper(static_cast(conja))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) hemm_( side, uplo, m, n, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/her2k/her2k.h b/gtestsuite/testsuite/level3/her2k/her2k.h index 76ea95f3b..9033e6137 100644 --- a/gtestsuite/testsuite/level3/her2k/her2k.h +++ b/gtestsuite/testsuite/level3/her2k/her2k.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -142,6 +142,14 @@ template::real_t static void her2k( char storage, char uplo, char transa, char transb, gtint_t m, gtint_t k, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, RT* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uplo = static_cast(std::toupper(static_cast(uplo))); + transa = static_cast(std::toupper(static_cast(transa))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) her2k_( uplo, transa, m, k, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/herk/herk.h b/gtestsuite/testsuite/level3/herk/herk.h index 6aab4355d..2d96ddd3a 100644 --- a/gtestsuite/testsuite/level3/herk/herk.h +++ b/gtestsuite/testsuite/level3/herk/herk.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -132,6 +132,13 @@ template::real_t static void herk( char storage, char uplo, char transa, gtint_t m, gtint_t k, RT* alpha, T* ap, gtint_t lda, RT* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uplo = static_cast(std::toupper(static_cast(uplo))); + transa = static_cast(std::toupper(static_cast(transa))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) herk_( uplo, transa, m, k, alpha, ap, lda, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/symm/symm.h b/gtestsuite/testsuite/level3/symm/symm.h index cc97c9304..428e8dcc3 100644 --- a/gtestsuite/testsuite/level3/symm/symm.h +++ b/gtestsuite/testsuite/level3/symm/symm.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -159,6 +159,15 @@ template static void symm( char storage, char side, char uplo, char conja, char transb, gtint_t m, gtint_t n, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + side = static_cast(std::toupper(static_cast(side))); + uplo = static_cast(std::toupper(static_cast(uplo))); + conja = static_cast(std::toupper(static_cast(conja))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) symm_( side, uplo, m, n, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/syr2k/syr2k.h b/gtestsuite/testsuite/level3/syr2k/syr2k.h index 58b59923e..08b1e2567 100644 --- a/gtestsuite/testsuite/level3/syr2k/syr2k.h +++ b/gtestsuite/testsuite/level3/syr2k/syr2k.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -150,6 +150,14 @@ template static void syr2k( char storage, char uplo, char transa, char transb, gtint_t m, gtint_t k, T* alpha, T* ap, gtint_t lda, T* bp, gtint_t ldb, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uplo = static_cast(std::toupper(static_cast(uplo))); + transa = static_cast(std::toupper(static_cast(transa))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) syr2k_( uplo, transa, m, k, alpha, ap, lda, bp, ldb, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/syrk/syrk.h b/gtestsuite/testsuite/level3/syrk/syrk.h index ecbea4725..ba9d99ffe 100644 --- a/gtestsuite/testsuite/level3/syrk/syrk.h +++ b/gtestsuite/testsuite/level3/syrk/syrk.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -141,6 +141,13 @@ template static void syrk( char storage, char uplo, char transa, gtint_t m, gtint_t k, T* alpha, T* ap, gtint_t lda, T* beta, T* cp, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + uplo = static_cast(std::toupper(static_cast(uplo))); + transa = static_cast(std::toupper(static_cast(transa))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) syrk_( uplo, transa, m, k, alpha, ap, lda, beta, cp, ldc ); diff --git a/gtestsuite/testsuite/level3/trmm/trmm.h b/gtestsuite/testsuite/level3/trmm/trmm.h index 267aa41e7..21c309b31 100644 --- a/gtestsuite/testsuite/level3/trmm/trmm.h +++ b/gtestsuite/testsuite/level3/trmm/trmm.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -154,6 +154,15 @@ template static void trmm( char storage, char side, char uploa, char transa, char diaga, gtint_t m, gtint_t n, T *alpha, T *ap, gtint_t lda, T *bp, gtint_t ldb ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + side = static_cast(std::toupper(static_cast(side))); + uploa = static_cast(std::toupper(static_cast(uploa))); + transa = static_cast(std::toupper(static_cast(transa))); + diaga = static_cast(std::toupper(static_cast(diaga))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) trmm_( side, uploa, transa, diaga, m, n, alpha, ap, lda, bp, ldb ); diff --git a/gtestsuite/testsuite/level3/trmm3/trmm3.h b/gtestsuite/testsuite/level3/trmm3/trmm3.h index 2bd52db11..645f8577a 100644 --- a/gtestsuite/testsuite/level3/trmm3/trmm3.h +++ b/gtestsuite/testsuite/level3/trmm3/trmm3.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -126,6 +126,16 @@ static void trmm3( char storage, char side, char uploa, char transa, char diaga, char transb, gtint_t m, gtint_t n, T *alpha, T *ap, gtint_t lda, T *bp, gtint_t ldb, T *beta, T *c, gtint_t ldc ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + side = static_cast(std::toupper(static_cast(side))); + uploa = static_cast(std::toupper(static_cast(uploa))); + transa = static_cast(std::toupper(static_cast(transa))); + diaga = static_cast(std::toupper(static_cast(diaga))); + transb = static_cast(std::toupper(static_cast(transb))); +#endif + #ifdef TEST_BLAS throw std::runtime_error("Error in testsuite/level3/trmm3.h: BLAS interface is not available."); #elif TEST_CBLAS diff --git a/gtestsuite/testsuite/level3/trsm/trsm.h b/gtestsuite/testsuite/level3/trsm/trsm.h index bb7f0469e..0277d05d0 100644 --- a/gtestsuite/testsuite/level3/trsm/trsm.h +++ b/gtestsuite/testsuite/level3/trsm/trsm.h @@ -4,7 +4,7 @@ An object-based framework for developing high-performance BLAS-like libraries. - Copyright (C) 2023, Advanced Micro Devices, Inc. All rights reserved. + Copyright (C) 2023 - 2024, Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -154,6 +154,15 @@ template static void trsm( char storage, char side, char uploa, char transa, char diaga, gtint_t m, gtint_t n, T *alpha, T *ap, gtint_t lda, T *bp, gtint_t ldb ) { + +#ifdef TEST_UPPERCASE_ARGS + storage = static_cast(std::toupper(static_cast(storage))); + side = static_cast(std::toupper(static_cast(side))); + uploa = static_cast(std::toupper(static_cast(uploa))); + transa = static_cast(std::toupper(static_cast(transa))); + diaga = static_cast(std::toupper(static_cast(diaga))); +#endif + #ifdef TEST_BLAS if( storage == 'c' || storage == 'C' ) trsm_( side, uploa, transa, diaga, m, n, alpha, ap, lda, bp, ldb );