From fd9f63a6d2e69dc2309cb3545a17c8abc0eddb92 Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Sun, 21 Jul 2024 22:39:39 +0100 Subject: [PATCH] [HIPIFY][BLAS][6.2.0] cuBLAS support - Step 18 - 64-bit functions + Updated synthetic tests, the regenerated `hipify-perl`, and `BLAS` `CUDA2HIP` documentation --- bin/hipify-perl | 16 +++++------ docs/tables/CUBLAS_API_supported_by_HIP.md | 16 +++++------ .../CUBLAS_API_supported_by_HIP_and_ROC.md | 16 +++++------ src/CUDA2HIP_BLAS_API_functions.cpp | 20 +++++++------ .../synthetic/libraries/cublas2hipblas_v2.cu | 28 +++++++++++++++++++ 5 files changed, 64 insertions(+), 32 deletions(-) diff --git a/bin/hipify-perl b/bin/hipify-perl index fb6dc461..07ffcaea 100755 --- a/bin/hipify-perl +++ b/bin/hipify-perl @@ -3920,7 +3920,9 @@ sub simpleSubstitutions { subst("cublasCtrmm", "hipblasCtrmm_v2", "library"); subst("cublasCtrmm_v2", "hipblasCtrmm_v2", "library"); subst("cublasCtrmv", "hipblasCtrmv_v2", "library"); + subst("cublasCtrmv_64", "hipblasCtrmv_v2_64", "library"); subst("cublasCtrmv_v2", "hipblasCtrmv_v2", "library"); + subst("cublasCtrmv_v2_64", "hipblasCtrmv_v2_64", "library"); subst("cublasCtrsm", "hipblasCtrsm_v2", "library"); subst("cublasCtrsmBatched", "hipblasCtrsmBatched_v2", "library"); subst("cublasCtrsm_v2", "hipblasCtrsm_v2", "library"); @@ -4046,7 +4048,9 @@ sub simpleSubstitutions { subst("cublasDtrmm", "hipblasDtrmm", "library"); subst("cublasDtrmm_v2", "hipblasDtrmm", "library"); subst("cublasDtrmv", "hipblasDtrmv", "library"); + subst("cublasDtrmv_64", "hipblasDtrmv_64", "library"); subst("cublasDtrmv_v2", "hipblasDtrmv", "library"); + subst("cublasDtrmv_v2_64", "hipblasDtrmv_64", "library"); subst("cublasDtrsm", "hipblasDtrsm", "library"); subst("cublasDtrsmBatched", "hipblasDtrsmBatched", "library"); subst("cublasDtrsm_v2", "hipblasDtrsm", "library"); @@ -4266,7 +4270,9 @@ sub simpleSubstitutions { subst("cublasStrmm", "hipblasStrmm", "library"); subst("cublasStrmm_v2", "hipblasStrmm", "library"); subst("cublasStrmv", "hipblasStrmv", "library"); + subst("cublasStrmv_64", "hipblasStrmv_64", "library"); subst("cublasStrmv_v2", "hipblasStrmv", "library"); + subst("cublasStrmv_v2_64", "hipblasStrmv_64", "library"); subst("cublasStrsm", "hipblasStrsm", "library"); subst("cublasStrsmBatched", "hipblasStrsmBatched", "library"); subst("cublasStrsm_v2", "hipblasStrsm", "library"); @@ -4409,7 +4415,9 @@ sub simpleSubstitutions { subst("cublasZtrmm", "hipblasZtrmm_v2", "library"); subst("cublasZtrmm_v2", "hipblasZtrmm_v2", "library"); subst("cublasZtrmv", "hipblasZtrmv_v2", "library"); + subst("cublasZtrmv_64", "hipblasZtrmv_v2_64", "library"); subst("cublasZtrmv_v2", "hipblasZtrmv_v2", "library"); + subst("cublasZtrmv_v2_64", "hipblasZtrmv_v2_64", "library"); subst("cublasZtrsm", "hipblasZtrsm_v2", "library"); subst("cublasZtrsmBatched", "hipblasZtrsmBatched_v2", "library"); subst("cublasZtrsm_v2", "hipblasZtrsm_v2", "library"); @@ -11539,8 +11547,6 @@ sub warnHipOnlyUnsupportedFunctions { "cublasZtrsm_v2_64", "cublasZtrsm_64", "cublasZtrsmBatched_64", - "cublasZtrmv_v2_64", - "cublasZtrmv_64", "cublasZtrmm_v2_64", "cublasZtrmm_64", "cublasZtpttr", @@ -11585,8 +11591,6 @@ sub warnHipOnlyUnsupportedFunctions { "cublasStrsm_v2_64", "cublasStrsm_64", "cublasStrsmBatched_64", - "cublasStrmv_v2_64", - "cublasStrmv_64", "cublasStrmm_v2_64", "cublasStrmm_64", "cublasStpttr", @@ -11703,8 +11707,6 @@ sub warnHipOnlyUnsupportedFunctions { "cublasDtrsm_v2_64", "cublasDtrsm_64", "cublasDtrsmBatched_64", - "cublasDtrmv_v2_64", - "cublasDtrmv_64", "cublasDtrmm_v2_64", "cublasDtrmm_64", "cublasDtpttr", @@ -11732,8 +11734,6 @@ sub warnHipOnlyUnsupportedFunctions { "cublasCtrsm_v2_64", "cublasCtrsm_64", "cublasCtrsmBatched_64", - "cublasCtrmv_v2_64", - "cublasCtrmv_64", "cublasCtrmm_v2_64", "cublasCtrmm_64", "cublasCtpttr", diff --git a/docs/tables/CUBLAS_API_supported_by_HIP.md b/docs/tables/CUBLAS_API_supported_by_HIP.md index c1b92e6d..c387f720 100644 --- a/docs/tables/CUBLAS_API_supported_by_HIP.md +++ b/docs/tables/CUBLAS_API_supported_by_HIP.md @@ -795,9 +795,9 @@ |`cublasCtpsv_v2`| | | | |`hipblasCtpsv_v2`|6.0.0| | | | | |`cublasCtpsv_v2_64`|12.0| | | |`hipblasCtpsv_v2_64`|6.2.0| | | |6.2.0| |`cublasCtrmv`| | | | |`hipblasCtrmv_v2`|6.0.0| | | | | -|`cublasCtrmv_64`|12.0| | | | | | | | | | +|`cublasCtrmv_64`|12.0| | | |`hipblasCtrmv_v2_64`|6.2.0| | | |6.2.0| |`cublasCtrmv_v2`| | | | |`hipblasCtrmv_v2`|6.0.0| | | | | -|`cublasCtrmv_v2_64`|12.0| | | | | | | | | | +|`cublasCtrmv_v2_64`|12.0| | | |`hipblasCtrmv_v2_64`|6.2.0| | | |6.2.0| |`cublasCtrsv`| | | | |`hipblasCtrsv_v2`|6.0.0| | | | | |`cublasCtrsv_64`|12.0| | | | | | | | | | |`cublasCtrsv_v2`| | | | |`hipblasCtrsv_v2`|6.0.0| | | | | @@ -859,9 +859,9 @@ |`cublasDtpsv_v2`| | | | |`hipblasDtpsv`|3.5.0| | | | | |`cublasDtpsv_v2_64`|12.0| | | |`hipblasDtpsv_64`|6.2.0| | | |6.2.0| |`cublasDtrmv`| | | | |`hipblasDtrmv`|3.5.0| | | | | -|`cublasDtrmv_64`|12.0| | | | | | | | | | +|`cublasDtrmv_64`|12.0| | | |`hipblasDtrmv_64`|6.2.0| | | |6.2.0| |`cublasDtrmv_v2`| | | | |`hipblasDtrmv`|3.5.0| | | | | -|`cublasDtrmv_v2_64`|12.0| | | | | | | | | | +|`cublasDtrmv_v2_64`|12.0| | | |`hipblasDtrmv_64`|6.2.0| | | |6.2.0| |`cublasDtrsv`| | | | |`hipblasDtrsv`|3.0.0| | | | | |`cublasDtrsv_64`|12.0| | | | | | | | | | |`cublasDtrsv_v2`| | | | |`hipblasDtrsv`|3.0.0| | | | | @@ -923,9 +923,9 @@ |`cublasStpsv_v2`| | | | |`hipblasStpsv`|3.5.0| | | | | |`cublasStpsv_v2_64`|12.0| | | |`hipblasStpsv_64`|6.2.0| | | |6.2.0| |`cublasStrmv`| | | | |`hipblasStrmv`|3.5.0| | | | | -|`cublasStrmv_64`|12.0| | | | | | | | | | +|`cublasStrmv_64`|12.0| | | |`hipblasStrmv_64`|6.2.0| | | |6.2.0| |`cublasStrmv_v2`| | | | |`hipblasStrmv`|3.5.0| | | | | -|`cublasStrmv_v2_64`|12.0| | | | | | | | | | +|`cublasStrmv_v2_64`|12.0| | | |`hipblasStrmv_64`|6.2.0| | | |6.2.0| |`cublasStrsv`| | | | |`hipblasStrsv`|3.0.0| | | | | |`cublasStrsv_64`|12.0| | | | | | | | | | |`cublasStrsv_v2`| | | | |`hipblasStrsv`|3.0.0| | | | | @@ -1003,9 +1003,9 @@ |`cublasZtpsv_v2`| | | | |`hipblasZtpsv_v2`|6.0.0| | | | | |`cublasZtpsv_v2_64`|12.0| | | |`hipblasZtpsv_v2_64`|6.2.0| | | |6.2.0| |`cublasZtrmv`| | | | |`hipblasZtrmv_v2`|6.0.0| | | | | -|`cublasZtrmv_64`|12.0| | | | | | | | | | +|`cublasZtrmv_64`|12.0| | | |`hipblasZtrmv_v2_64`|6.2.0| | | |6.2.0| |`cublasZtrmv_v2`| | | | |`hipblasZtrmv_v2`|6.0.0| | | | | -|`cublasZtrmv_v2_64`|12.0| | | | | | | | | | +|`cublasZtrmv_v2_64`|12.0| | | |`hipblasZtrmv_v2_64`|6.2.0| | | |6.2.0| |`cublasZtrsv`| | | | |`hipblasZtrsv_v2`|6.0.0| | | | | |`cublasZtrsv_64`|12.0| | | | | | | | | | |`cublasZtrsv_v2`| | | | |`hipblasZtrsv_v2`|6.0.0| | | | | diff --git a/docs/tables/CUBLAS_API_supported_by_HIP_and_ROC.md b/docs/tables/CUBLAS_API_supported_by_HIP_and_ROC.md index 3d453a79..efb89c83 100644 --- a/docs/tables/CUBLAS_API_supported_by_HIP_and_ROC.md +++ b/docs/tables/CUBLAS_API_supported_by_HIP_and_ROC.md @@ -795,9 +795,9 @@ |`cublasCtpsv_v2`| | | | |`hipblasCtpsv_v2`|6.0.0| | | | |`rocblas_ctpsv`|3.5.0| | | | | |`cublasCtpsv_v2_64`|12.0| | | |`hipblasCtpsv_v2_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasCtrmv`| | | | |`hipblasCtrmv_v2`|6.0.0| | | | |`rocblas_ctrmv`|3.5.0| | | | | -|`cublasCtrmv_64`|12.0| | | | | | | | | | | | | | | | +|`cublasCtrmv_64`|12.0| | | |`hipblasCtrmv_v2_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasCtrmv_v2`| | | | |`hipblasCtrmv_v2`|6.0.0| | | | |`rocblas_ctrmv`|3.5.0| | | | | -|`cublasCtrmv_v2_64`|12.0| | | | | | | | | | | | | | | | +|`cublasCtrmv_v2_64`|12.0| | | |`hipblasCtrmv_v2_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasCtrsv`| | | | |`hipblasCtrsv_v2`|6.0.0| | | | |`rocblas_ctrsv`|3.5.0| | | | | |`cublasCtrsv_64`|12.0| | | | | | | | | | | | | | | | |`cublasCtrsv_v2`| | | | |`hipblasCtrsv_v2`|6.0.0| | | | |`rocblas_ctrsv`|3.5.0| | | | | @@ -859,9 +859,9 @@ |`cublasDtpsv_v2`| | | | |`hipblasDtpsv`|3.5.0| | | | |`rocblas_dtpsv`|3.5.0| | | | | |`cublasDtpsv_v2_64`|12.0| | | |`hipblasDtpsv_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasDtrmv`| | | | |`hipblasDtrmv`|3.5.0| | | | |`rocblas_dtrmv`|3.5.0| | | | | -|`cublasDtrmv_64`|12.0| | | | | | | | | | | | | | | | +|`cublasDtrmv_64`|12.0| | | |`hipblasDtrmv_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasDtrmv_v2`| | | | |`hipblasDtrmv`|3.5.0| | | | |`rocblas_dtrmv`|3.5.0| | | | | -|`cublasDtrmv_v2_64`|12.0| | | | | | | | | | | | | | | | +|`cublasDtrmv_v2_64`|12.0| | | |`hipblasDtrmv_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasDtrsv`| | | | |`hipblasDtrsv`|3.0.0| | | | |`rocblas_dtrsv`|3.5.0| | | | | |`cublasDtrsv_64`|12.0| | | | | | | | | | | | | | | | |`cublasDtrsv_v2`| | | | |`hipblasDtrsv`|3.0.0| | | | |`rocblas_dtrsv`|3.5.0| | | | | @@ -923,9 +923,9 @@ |`cublasStpsv_v2`| | | | |`hipblasStpsv`|3.5.0| | | | |`rocblas_stpsv`|3.5.0| | | | | |`cublasStpsv_v2_64`|12.0| | | |`hipblasStpsv_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasStrmv`| | | | |`hipblasStrmv`|3.5.0| | | | |`rocblas_strmv`|3.5.0| | | | | -|`cublasStrmv_64`|12.0| | | | | | | | | | | | | | | | +|`cublasStrmv_64`|12.0| | | |`hipblasStrmv_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasStrmv_v2`| | | | |`hipblasStrmv`|3.5.0| | | | |`rocblas_strmv`|3.5.0| | | | | -|`cublasStrmv_v2_64`|12.0| | | | | | | | | | | | | | | | +|`cublasStrmv_v2_64`|12.0| | | |`hipblasStrmv_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasStrsv`| | | | |`hipblasStrsv`|3.0.0| | | | |`rocblas_strsv`|3.5.0| | | | | |`cublasStrsv_64`|12.0| | | | | | | | | | | | | | | | |`cublasStrsv_v2`| | | | |`hipblasStrsv`|3.0.0| | | | |`rocblas_strsv`|3.5.0| | | | | @@ -1003,9 +1003,9 @@ |`cublasZtpsv_v2`| | | | |`hipblasZtpsv_v2`|6.0.0| | | | |`rocblas_ztpsv`|3.5.0| | | | | |`cublasZtpsv_v2_64`|12.0| | | |`hipblasZtpsv_v2_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasZtrmv`| | | | |`hipblasZtrmv_v2`|6.0.0| | | | |`rocblas_ztrmv`|3.5.0| | | | | -|`cublasZtrmv_64`|12.0| | | | | | | | | | | | | | | | +|`cublasZtrmv_64`|12.0| | | |`hipblasZtrmv_v2_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasZtrmv_v2`| | | | |`hipblasZtrmv_v2`|6.0.0| | | | |`rocblas_ztrmv`|3.5.0| | | | | -|`cublasZtrmv_v2_64`|12.0| | | | | | | | | | | | | | | | +|`cublasZtrmv_v2_64`|12.0| | | |`hipblasZtrmv_v2_64`|6.2.0| | | |6.2.0| | | | | | | |`cublasZtrsv`| | | | |`hipblasZtrsv_v2`|6.0.0| | | | |`rocblas_ztrsv`|3.5.0| | | | | |`cublasZtrsv_64`|12.0| | | | | | | | | | | | | | | | |`cublasZtrsv_v2`| | | | |`hipblasZtrsv_v2`|6.0.0| | | | |`rocblas_ztrsv`|3.5.0| | | | | diff --git a/src/CUDA2HIP_BLAS_API_functions.cpp b/src/CUDA2HIP_BLAS_API_functions.cpp index 861fe1fd..ccf9f08c 100644 --- a/src/CUDA2HIP_BLAS_API_functions.cpp +++ b/src/CUDA2HIP_BLAS_API_functions.cpp @@ -242,13 +242,13 @@ const std::map CUDA_BLAS_FUNCTION_MAP { // TRMV {"cublasStrmv", {"hipblasStrmv", "rocblas_strmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, HIP_SUPPORTED_V2_ONLY}}, - {"cublasStrmv_64", {"hipblasStrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasStrmv_64", {"hipblasStrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, {"cublasDtrmv", {"hipblasDtrmv", "rocblas_dtrmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, HIP_SUPPORTED_V2_ONLY}}, - {"cublasDtrmv_64", {"hipblasDtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasDtrmv_64", {"hipblasDtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, {"cublasCtrmv", {"hipblasCtrmv_v2", "rocblas_ctrmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, HIP_SUPPORTED_V2_ONLY}}, - {"cublasCtrmv_64", {"hipblasCtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasCtrmv_64", {"hipblasCtrmv_v2_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, {"cublasZtrmv", {"hipblasZtrmv_v2", "rocblas_ztrmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, HIP_SUPPORTED_V2_ONLY}}, - {"cublasZtrmv_64", {"hipblasZtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasZtrmv_64", {"hipblasZtrmv_v2_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, // TBMV {"cublasStbmv", {"hipblasStbmv", "rocblas_stbmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, HIP_SUPPORTED_V2_ONLY}}, @@ -660,13 +660,13 @@ const std::map CUDA_BLAS_FUNCTION_MAP { // TRMV {"cublasStrmv_v2", {"hipblasStrmv", "rocblas_strmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2}}, - {"cublasStrmv_v2_64", {"hipblasStrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasStrmv_v2_64", {"hipblasStrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, {"cublasDtrmv_v2", {"hipblasDtrmv", "rocblas_dtrmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2}}, - {"cublasDtrmv_v2_64", {"hipblasDtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasDtrmv_v2_64", {"hipblasDtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, {"cublasCtrmv_v2", {"hipblasCtrmv_v2", "rocblas_ctrmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2}}, - {"cublasCtrmv_v2_64", {"hipblasCtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasCtrmv_v2_64", {"hipblasCtrmv_v2_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, {"cublasZtrmv_v2", {"hipblasZtrmv_v2", "rocblas_ztrmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2}}, - {"cublasZtrmv_v2_64", {"hipblasZtrmv_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, UNSUPPORTED}}, + {"cublasZtrmv_v2_64", {"hipblasZtrmv_v2_64", "", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2, ROC_UNSUPPORTED}}, // TBMV {"cublasStbmv_v2", {"hipblasStbmv", "rocblas_stbmv", CONV_LIB_FUNC, API_BLAS, SEC::BLAS_LEVEL_2}}, @@ -2130,6 +2130,10 @@ const std::map HIP_BLAS_FUNCTION_VER_MAP { {"hipblasDtpsv_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, {"hipblasCtpsv_v2_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, {"hipblasZtpsv_v2_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, + {"hipblasStrmv_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, + {"hipblasDtrmv_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, + {"hipblasCtrmv_v2_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, + {"hipblasZtrmv_v2_64", {HIP_6020, HIP_0, HIP_0, HIP_LATEST}}, {"rocblas_status_to_string", {HIP_3050, HIP_0, HIP_0 }}, {"rocblas_sscal", {HIP_1050, HIP_0, HIP_0 }}, diff --git a/tests/unit_tests/synthetic/libraries/cublas2hipblas_v2.cu b/tests/unit_tests/synthetic/libraries/cublas2hipblas_v2.cu index 5d91093c..b56afc5d 100644 --- a/tests/unit_tests/synthetic/libraries/cublas2hipblas_v2.cu +++ b/tests/unit_tests/synthetic/libraries/cublas2hipblas_v2.cu @@ -2726,6 +2726,34 @@ int main() { // CHECK-NEXT: blasStatus = hipblasZtpsv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, &dcomplexx, incx_64); blasStatus = cublasZtpsv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, &dcomplexx, incx_64); blasStatus = cublasZtpsv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, &dcomplexx, incx_64); + + // CUDA: CUBLASAPI cublasStatus_t CUBLASWINAPI cublasStrmv_v2_64(cublasHandle_t handle, cublasFillMode_t uplo, cublasOperation_t trans, cublasDiagType_t diag, int64_t n, const float* A, int64_t lda, float* x, int64_t incx); + // HIP: HIPBLAS_EXPORT hipblasStatus_t hipblasStrmv_64(hipblasHandle_t handle, hipblasFillMode_t uplo, hipblasOperation_t transA, hipblasDiagType_t diag, int64_t n, const float* AP, int64_t lda, float* x, int64_t incx); + // CHECK: blasStatus = hipblasStrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &fA, lda_64, &fx, incx_64); + // CHECK-NEXT: blasStatus = hipblasStrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &fA, lda_64, &fx, incx_64); + blasStatus = cublasStrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &fA, lda_64, &fx, incx_64); + blasStatus = cublasStrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &fA, lda_64, &fx, incx_64); + + // CUDA: CUBLASAPI cublasStatus_t CUBLASWINAPI cublasDtrmv_v2_64(cublasHandle_t handle, cublasFillMode_t uplo, cublasOperation_t trans, cublasDiagType_t diag, int64_t n, const double* A, int64_t lda, double* x, int64_t incx); + // HIP: HIPBLAS_EXPORT hipblasStatus_t hipblasDtrmv_64(hipblasHandle_t handle, hipblasFillMode_t uplo, hipblasOperation_t transA, hipblasDiagType_t diag, int64_t n, const double* AP, int64_t lda, double* x, int64_t incx); + // CHECK: blasStatus = hipblasDtrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dA, lda_64, &dx, incx_64); + // CHECK-NEXT: blasStatus = hipblasDtrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dA, lda_64, &dx, incx_64); + blasStatus = cublasDtrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dA, lda_64, &dx, incx_64); + blasStatus = cublasDtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dA, lda_64, &dx, incx_64); + + // CUDA: CUBLASAPI cublasStatus_t CUBLASWINAPI cublasCtrmv_v2_64(cublasHandle_t handle, cublasFillMode_t uplo, cublasOperation_t trans, cublasDiagType_t diag, int64_t n, const cuComplex* A, int64_t lda, cuComplex* x, int64_t incx); + // HIP: HIPBLAS_EXPORT hipblasStatus_t hipblasCtrmv_v2_64(hipblasHandle_t handle, hipblasFillMode_t uplo, hipblasOperation_t transA, hipblasDiagType_t diag, int64_t n, const hipComplex* AP, int64_t lda, hipComplex* x, int64_t incx); + // CHECK: blasStatus = hipblasCtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &complexA, lda_64, &complexx, incx_64); + // CHECK-NEXT: blasStatus = hipblasCtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &complexA, lda_64, &complexx, incx_64); + blasStatus = cublasCtrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &complexA, lda_64, &complexx, incx_64); + blasStatus = cublasCtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &complexA, lda_64, &complexx, incx_64); + + // CUDA: CUBLASAPI cublasStatus_t CUBLASWINAPI cublasZtrmv_v2_64(cublasHandle_t handle, cublasFillMode_t uplo, cublasOperation_t trans, cublasDiagType_t diag, int64_t n, const cuDoubleComplex* A, int64_t lda, cuDoubleComplex* x, int64_t incx); + // HIP: HIPBLAS_EXPORT hipblasStatus_t hipblasZtrmv_v2_64(hipblasHandle_t handle, hipblasFillMode_t uplo, hipblasOperation_t transA, hipblasDiagType_t diag, int64_t n, const hipDoubleComplex* AP, int64_t lda, hipDoubleComplex* x, int64_t incx); + // CHECK: blasStatus = hipblasZtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, lda_64, &dcomplexx, incx_64); + // CHECK-NEXT: blasStatus = hipblasZtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, lda_64, &dcomplexx, incx_64); + blasStatus = cublasZtrmv_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, lda_64, &dcomplexx, incx_64); + blasStatus = cublasZtrmv_v2_64(blasHandle, blasFillMode, blasOperation, blasDiagType, n_64, &dcomplexA, lda_64, &dcomplexx, incx_64); #endif return 0;