/*
Copyright (c) 2015 - present Advanced Micro Devices, Inc. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

#include "CUDA2HIP.h"

// Map of all functions
const std::map<llvm::StringRef, hipCounter> CUDA_SOLVER_FUNCTION_MAP = [] {
  std::map<llvm::StringRef, hipCounter> m;

  m["cusolverDnCreate"]                                               = {"hipsolverDnCreate",                                     "rocblas_create_handle",                                          CONV_LIB_FUNC, API_SOLVER, 2};
  m["cusolverDnDestroy"]                                              = {"hipsolverDnDestroy",                                    "rocblas_destroy_handle",                                         CONV_LIB_FUNC, API_SOLVER, 2};
  // NOTE: cusolverDn(S|D|C|Z)getrf -> rocsolver_(s|d|c|z)getrf + harness of other API calls
  m["cusolverDnSgetrf"]                                               = {"hipsolverDnSgetrf",                                     "rocsolver_sgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgetrf"]                                               = {"hipsolverDnDgetrf",                                     "rocsolver_dgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgetrf"]                                               = {"hipsolverDnCgetrf",                                     "rocsolver_cgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgetrf"]                                               = {"hipsolverDnZgetrf",                                     "rocsolver_zgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: cusolverDn(S|D|C|Z)getrf_bufferSize -> rocsolver_(s|d|c|z)getrf + harness of other API calls
  m["cusolverDnSgetrf_bufferSize"]                                    = {"hipsolverDnSgetrf_bufferSize",                          "rocsolver_sgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgetrf_bufferSize"]                                    = {"hipsolverDnDgetrf_bufferSize",                          "rocsolver_dgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgetrf_bufferSize"]                                    = {"hipsolverDnCgetrf_bufferSize",                          "rocsolver_cgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgetrf_bufferSize"]                                    = {"hipsolverDnZgetrf_bufferSize",                          "rocsolver_zgetrf",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: cusolverDn(S|D|C|Z)getrs -> rocsolver_(s|d|c|z)getrs + harness of other API calls
  m["cusolverDnSgetrs"]                                               = {"hipsolverDnSgetrs",                                     "rocsolver_sgetrs",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgetrs"]                                               = {"hipsolverDnDgetrs",                                     "rocsolver_dgetrs",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgetrs"]                                               = {"hipsolverDnCgetrs",                                     "rocsolver_cgetrs",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgetrs"]                                               = {"hipsolverDnZgetrs",                                     "rocsolver_zgetrs",                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgetrf"]                                               = {"hipsolverDnXgetrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgetrf_bufferSize"]                                    = {"hipsolverDnXgetrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgetrs"]                                               = {"hipsolverDnXgetrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCreateParams"]                                         = {"hipsolverDnCreateParams",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDestroyParams"]                                        = {"hipsolverDnDestroyParams",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnSetAdvOptions"]                                        = {"hipsolverDnSetAdvOptions",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnSetStream"]                                            = {"hipsolverSetStream",                                    "rocblas_set_stream",                                             CONV_LIB_FUNC, API_SOLVER, 2};
  m["cusolverDnGetStream"]                                            = {"hipsolverGetStream",                                    "rocblas_get_stream",                                             CONV_LIB_FUNC, API_SOLVER, 2};
  m["cusolverDnSetDeterministicMode"]                                 = {"hipsolverDnSetDeterministicMode",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnGetDeterministicMode"]                                 = {"hipsolverDnGetDeterministicMode",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnIRSParamsCreate"]                                      = {"hipsolverDnIRSParamsCreate",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsDestroy"]                                     = {"hipsolverDnIRSParamsDestroy",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetRefinementSolver"]                         = {"hipsolverDnIRSParamsSetRefinementSolver",               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetSolverMainPrecision"]                      = {"hipsolverDnIRSParamsSetSolverMainPrecision",            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetSolverLowestPrecision"]                    = {"hipsolverDnIRSParamsSetSolverLowestPrecision",          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetSolverPrecisions"]                         = {"hipsolverDnIRSParamsSetSolverPrecisions",               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetTol"]                                      = {"hipsolverDnIRSParamsSetTol",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetTolInner"]                                 = {"hipsolverDnIRSParamsSetTolInner",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetMaxIters"]                                 = {"hipsolverDnIRSParamsSetMaxIters",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsSetMaxItersInner"]                            = {"hipsolverDnIRSParamsSetMaxItersInner",                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsGetMaxIters"]                                 = {"hipsolverDnIRSParamsGetMaxIters",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsEnableFallback"]                              = {"hipsolverDnIRSParamsEnableFallback",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSParamsDisableFallback"]                             = {"hipsolverDnIRSParamsDisableFallback",                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosCreate"]                                       = {"hipsolverDnIRSInfosCreate",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosDestroy"]                                      = {"hipsolverDnIRSInfosDestroy",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosGetNiters"]                                    = {"hipsolverDnIRSInfosGetNiters",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosGetOuterNiters"]                               = {"hipsolverDnIRSInfosGetOuterNiters",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosRequestResidual"]                              = {"hipsolverDnIRSInfosRequestResidual",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosGetResidualHistory"]                           = {"hipsolverDnIRSInfosGetResidualHistory",                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSInfosGetMaxIters"]                                  = {"hipsolverDnIRSInfosGetMaxIters",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_zgesv has a harness of rocblas_set_workspace, hipsolverZZgesv_bufferSize, and rocsolver_zgesv_outofplace
  m["cusolverDnZZgesv"]                                               = {"hipsolverDnZZgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZCgesv"]                                               = {"hipsolverDnZCgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZKgesv"]                                               = {"hipsolverDnZKgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZEgesv"]                                               = {"hipsolverDnZEgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZYgesv"]                                               = {"hipsolverDnZYgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_cgesv has a harness of rocblas_set_workspace, hipsolverCCgesv_bufferSize, and rocsolver_cgesv_outofplace
  m["cusolverDnCCgesv"]                                               = {"hipsolverDnCCgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCEgesv"]                                               = {"hipsolverDnCEgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCKgesv"]                                               = {"hipsolverDnCKgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCYgesv"]                                               = {"hipsolverDnCYgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_dgesv has a harness of rocblas_set_workspace, hipsolverDDgesv_bufferSize, and rocsolver_dgesv_outofplace
  m["cusolverDnDDgesv"]                                               = {"hipsolverDnDDgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDSgesv"]                                               = {"hipsolverDnDSgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDHgesv"]                                               = {"hipsolverDnDHgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDBgesv"]                                               = {"hipsolverDnDBgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDXgesv"]                                               = {"hipsolverDnDXgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_sgesv has a harness of rocblas_set_workspace, hipsolverSSgesv_bufferSize, and rocsolver_sgesv_outofplace
  m["cusolverDnSSgesv"]                                               = {"hipsolverDnSSgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnSHgesv"]                                               = {"hipsolverDnSHgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSBgesv"]                                               = {"hipsolverDnSBgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSXgesv"]                                               = {"hipsolverDnSXgesv",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_zgesv has a harness of rocblas_start_device_memory_size_query, rocsolver_zgesv_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnZZgesv_bufferSize"]                                    = {"hipsolverDnZZgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZCgesv_bufferSize"]                                    = {"hipsolverDnZCgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZKgesv_bufferSize"]                                    = {"hipsolverDnZKgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZEgesv_bufferSize"]                                    = {"hipsolverDnZEgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZYgesv_bufferSize"]                                    = {"hipsolverDnZYgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_cgesv has a harness of rocblas_start_device_memory_size_query, rocsolver_cgesv_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnCCgesv_bufferSize"]                                    = {"hipsolverDnCCgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCKgesv_bufferSize"]                                    = {"hipsolverDnCKgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCEgesv_bufferSize"]                                    = {"hipsolverDnCEgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCYgesv_bufferSize"]                                    = {"hipsolverDnCYgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_dgesv has a harness of rocblas_start_device_memory_size_query, rocsolver_dgesv_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnDDgesv_bufferSize"]                                    = {"hipsolverDnDDgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDSgesv_bufferSize"]                                    = {"hipsolverDnDSgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDHgesv_bufferSize"]                                    = {"hipsolverDnDHgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDBgesv_bufferSize"]                                    = {"hipsolverDnDBgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDXgesv_bufferSize"]                                    = {"hipsolverDnDXgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_sgesv has a harness of rocblas_start_device_memory_size_query, rocsolver_sgesv_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnSSgesv_bufferSize"]                                    = {"hipsolverDnSSgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnSHgesv_bufferSize"]                                    = {"hipsolverDnSHgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSBgesv_bufferSize"]                                    = {"hipsolverDnSBgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSXgesv_bufferSize"]                                    = {"hipsolverDnSXgesv_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_zgels has a harness of rocblas_set_workspace, hipsolverZZgels_bufferSize, hipsolverManageWorkspace, and rocsolver_zgels_outofplace
  m["cusolverDnZZgels"]                                               = {"hipsolverDnZZgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZCgels"]                                               = {"hipsolverDnZCgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZKgels"]                                               = {"hipsolverDnZKgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZEgels"]                                               = {"hipsolverDnZEgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZYgels"]                                               = {"hipsolverDnZYgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_cgels has a harness of rocblas_set_workspace, hipsolverCCgels_bufferSize, hipsolverManageWorkspace, and rocsolver_cgels_outofplace
  m["cusolverDnCCgels"]                                               = {"hipsolverDnCCgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCKgels"]                                               = {"hipsolverDnCKgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCEgels"]                                               = {"hipsolverDnCEgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCYgels"]                                               = {"hipsolverDnCYgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_dgels has a harness of rocblas_set_workspace, hipsolverDDgels_bufferSize, hipsolverManageWorkspace, and rocsolver_dgels_outofplace
  m["cusolverDnDDgels"]                                               = {"hipsolverDnDDgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDSgels"]                                               = {"hipsolverDnDSgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDHgels"]                                               = {"hipsolverDnDHgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDBgels"]                                               = {"hipsolverDnDBgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDXgels"]                                               = {"hipsolverDnDXgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_sgels has a harness of rocblas_set_workspace, hipsolverSSgels_bufferSize, hipsolverManageWorkspace, and rocsolver_sgels_outofplace
  m["cusolverDnSSgels"]                                               = {"hipsolverDnSSgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnSHgels"]                                               = {"hipsolverDnSHgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSBgels"]                                               = {"hipsolverDnSBgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSXgels"]                                               = {"hipsolverDnSXgels",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_zgels has a harness of rocblas_start_device_memory_size_query, rocsolver_zgels_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnZZgels_bufferSize"]                                    = {"hipsolverDnZZgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZCgels_bufferSize"]                                    = {"hipsolverDnZCgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZKgels_bufferSize"]                                    = {"hipsolverDnZKgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZEgels_bufferSize"]                                    = {"hipsolverDnZEgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZYgels_bufferSize"]                                    = {"hipsolverDnZYgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_cgels has a harness of rocblas_start_device_memory_size_query, rocsolver_cgels_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnCCgels_bufferSize"]                                    = {"hipsolverDnCCgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCKgels_bufferSize"]                                    = {"hipsolverDnCKgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCEgels_bufferSize"]                                    = {"hipsolverDnCEgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCYgels_bufferSize"]                                    = {"hipsolverDnCYgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_dgels has a harness of rocblas_start_device_memory_size_query, rocsolver_dgels_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnDDgels_bufferSize"]                                    = {"hipsolverDnDDgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDSgels_bufferSize"]                                    = {"hipsolverDnDSgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDHgels_bufferSize"]                                    = {"hipsolverDnDHgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDBgels_bufferSize"]                                    = {"hipsolverDnDBgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDXgels_bufferSize"]                                    = {"hipsolverDnDXgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_sgels has a harness of rocblas_start_device_memory_size_query, rocsolver_sgels_outofplace, and rocblas_stop_device_memory_size_query
  m["cusolverDnSSgels_bufferSize"]                                    = {"hipsolverDnSSgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnSHgels_bufferSize"]                                    = {"hipsolverDnSHgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSBgels_bufferSize"]                                    = {"hipsolverDnSBgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSXgels_bufferSize"]                                    = {"hipsolverDnSXgels_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSXgesv"]                                             = {"hipsolverDnIRSXgesv",                                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSXgesv_bufferSize"]                                  = {"hipsolverDnIRSXgesv_bufferSize",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSXgels"]                                             = {"hipsolverDnIRSXgels",                                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnIRSXgels_bufferSize"]                                  = {"hipsolverDnIRSXgels_bufferSize",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)potrf has a harness of rocblas_start_device_memory_size_query and rocblas_stop_device_memory_size_query
  m["cusolverDnSpotrf_bufferSize"]                                    = {"hipsolverDnSpotrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDpotrf_bufferSize"]                                    = {"hipsolverDnDpotrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCpotrf_bufferSize"]                                    = {"hipsolverDnCpotrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZpotrf_bufferSize"]                                    = {"hipsolverDnZpotrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // TODO: rocsolver_(s|d|c|z)potrf needs second call to calculate workspaces
  m["cusolverDnSpotrf"]                                               = {"hipsolverDnSpotrf",                                     "rocsolver_spotrf",                                               CONV_LIB_FUNC, API_SOLVER, 2};
  m["cusolverDnDpotrf"]                                               = {"hipsolverDnDpotrf",                                     "rocsolver_dpotrf",                                               CONV_LIB_FUNC, API_SOLVER, 2};
  m["cusolverDnCpotrf"]                                               = {"hipsolverDnCpotrf",                                     "rocsolver_cpotrf",                                               CONV_LIB_FUNC, API_SOLVER, 2};
  m["cusolverDnZpotrf"]                                               = {"hipsolverDnZpotrf",                                     "rocsolver_zpotrf",                                               CONV_LIB_FUNC, API_SOLVER, 2};
  // NOTE: rocsolver_(s|d|c|z)potrs has a harness of rocblas_set_workspace, hipsolver(S|D|C|Z)potrs_bufferSize, hipsolverManageWorkspace, and hipsolverZeroInfo
  m["cusolverDnSpotrs"]                                               = {"hipsolverDnSpotrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDpotrs"]                                               = {"hipsolverDnDpotrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCpotrs"]                                               = {"hipsolverDnCpotrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZpotrs"]                                               = {"hipsolverDnZpotrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)potrf_batched has a harness of rocblas_set_workspace, hipsolver(S|D|C|Z)potrfBatched_bufferSize, and hipsolverManageWorkspace
  m["cusolverDnSpotrfBatched"]                                        = {"hipsolverDnSpotrfBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDpotrfBatched"]                                        = {"hipsolverDnDpotrfBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCpotrfBatched"]                                        = {"hipsolverDnCpotrfBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZpotrfBatched"]                                        = {"hipsolverDnZpotrfBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)potrs_batched has a harness of rocblas_set_workspace, hipsolver(S|D|C|Z)potrsBatched_bufferSize, and hipsolverManageWorkspace
  m["cusolverDnSpotrsBatched"]                                        = {"hipsolverDnSpotrsBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDpotrsBatched"]                                        = {"hipsolverDnDpotrsBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCpotrsBatched"]                                        = {"hipsolverDnCpotrsBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZpotrsBatched"]                                        = {"hipsolverDnZpotrsBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)potri has a harness of rocblas_start_device_memory_size_query and rocblas_stop_device_memory_size_query
  m["cusolverDnSpotri_bufferSize"]                                    = {"hipsolverDnSpotri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDpotri_bufferSize"]                                    = {"hipsolverDnDpotri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCpotri_bufferSize"]                                    = {"hipsolverDnCpotri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZpotri_bufferSize"]                                    = {"hipsolverDnZpotri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)potri has a harness of rocblas_set_workspace, hipsolver(S|D|C|Z)potri_bufferSize and hipsolverManageWorkspace
  m["cusolverDnSpotri"]                                               = {"hipsolverDnSpotri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDpotri"]                                               = {"hipsolverDnDpotri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCpotri"]                                               = {"hipsolverDnCpotri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZpotri"]                                               = {"hipsolverDnZpotri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXtrtri_bufferSize"]                                    = {"hipsolverDnXtrtri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXtrtri"]                                               = {"hipsolverDnXtrtri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSlauum_bufferSize"]                                    = {"hipsolverDnSlauum_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDlauum_bufferSize"]                                    = {"hipsolverDnDlauum_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnClauum_bufferSize"]                                    = {"hipsolverDnClauum_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZlauum_bufferSize"]                                    = {"hipsolverDnZlauum_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSlauum"]                                               = {"hipsolverDnSlauum",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDlauum"]                                               = {"hipsolverDnDlauum",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnClauum"]                                               = {"hipsolverDnClauum",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZlauum"]                                               = {"hipsolverDnZlauum",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSlaswp"]                                               = {"hipsolverDnSlaswp",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDlaswp"]                                               = {"hipsolverDnDlaswp",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnClaswp"]                                               = {"hipsolverDnClaswp",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZlaswp"]                                               = {"hipsolverDnZlaswp",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)geqrf have a harness of other HIP and ROC API calls
  m["cusolverDnSgeqrf_bufferSize"]                                    = {"hipsolverDnSgeqrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgeqrf_bufferSize"]                                    = {"hipsolverDnDgeqrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgeqrf_bufferSize"]                                    = {"hipsolverDnCgeqrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgeqrf_bufferSize"]                                    = {"hipsolverDnZgeqrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)geqrf have a harness of other HIP and ROC API calls
  m["cusolverDnSgeqrf"]                                               = {"hipsolverDnSgeqrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgeqrf"]                                               = {"hipsolverDnDgeqrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgeqrf"]                                               = {"hipsolverDnCgeqrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgeqrf"]                                               = {"hipsolverDnZgeqrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)orgqr and rocsolver_(c|z)ungqr have a harness of other HIP and ROC API calls
  m["cusolverDnSorgqr_bufferSize"]                                    = {"hipsolverDnSorgqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDorgqr_bufferSize"]                                    = {"hipsolverDnDorgqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCungqr_bufferSize"]                                    = {"hipsolverDnCungqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZungqr_bufferSize"]                                    = {"hipsolverDnZungqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)orgqr and rocsolver_(c|z)ungqr have a harness of other HIP and ROC API calls
  m["cusolverDnSorgqr"]                                               = {"hipsolverDnSorgqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDorgqr"]                                               = {"hipsolverDnDorgqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCungqr"]                                               = {"hipsolverDnCungqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZungqr"]                                               = {"hipsolverDnZungqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)ormqr and rocsolver_(c|z)unmqr have a harness of other HIP and ROC API calls
  m["cusolverDnSormqr_bufferSize"]                                    = {"hipsolverDnSormqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDormqr_bufferSize"]                                    = {"hipsolverDnDormqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCunmqr_bufferSize"]                                    = {"hipsolverDnCunmqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZunmqr_bufferSize"]                                    = {"hipsolverDnZunmqr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)ormqr and rocsolver_(c|z)unmqr have a harness of other HIP and ROC API calls
  m["cusolverDnSormqr"]                                               = {"hipsolverDnSormqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDormqr"]                                               = {"hipsolverDnDormqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCunmqr"]                                               = {"hipsolverDnCunmqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZunmqr"]                                               = {"hipsolverDnZunmqr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)sytrf have a harness of other HIP and ROC API calls
  m["cusolverDnSsytrf_bufferSize"]                                    = {"hipsolverDnSsytrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsytrf_bufferSize"]                                    = {"hipsolverDnDsytrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCsytrf_bufferSize"]                                    = {"hipsolverDnCsytrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZsytrf_bufferSize"]                                    = {"hipsolverDnZsytrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)sytrf have a harness of other HIP and ROC API calls
  m["cusolverDnSsytrf"]                                               = {"hipsolverDnSsytrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsytrf"]                                               = {"hipsolverDnDsytrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCsytrf"]                                               = {"hipsolverDnCsytrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZsytrf"]                                               = {"hipsolverDnZsytrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsytrs_bufferSize"]                                    = {"hipsolverDnXsytrs_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXsytrs"]                                               = {"hipsolverDnXsytrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSsytri_bufferSize"]                                    = {"hipsolverDnSsytri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDsytri_bufferSize"]                                    = {"hipsolverDnDsytri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCsytri_bufferSize"]                                    = {"hipsolverDnCsytri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZsytri_bufferSize"]                                    = {"hipsolverDnZsytri_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSsytri"]                                               = {"hipsolverDnSsytri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnDsytri"]                                               = {"hipsolverDnDsytri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnCsytri"]                                               = {"hipsolverDnCsytri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnZsytri"]                                               = {"hipsolverDnZsytri",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gebrd have a harness of other HIP and ROC API calls
  m["cusolverDnSgebrd_bufferSize"]                                    = {"hipsolverDnSgebrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgebrd_bufferSize"]                                    = {"hipsolverDnDgebrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgebrd_bufferSize"]                                    = {"hipsolverDnCgebrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgebrd_bufferSize"]                                    = {"hipsolverDnZgebrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gebrd have a harness of other HIP and ROC API calls
  m["cusolverDnSgebrd"]                                               = {"hipsolverDnSgebrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgebrd"]                                               = {"hipsolverDnDgebrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgebrd"]                                               = {"hipsolverDnCgebrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgebrd"]                                               = {"hipsolverDnZgebrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)orgbr and rocsolver_(c|z)ungbr have a harness of other HIP and ROC API calls
  m["cusolverDnSorgbr_bufferSize"]                                    = {"hipsolverDnSorgbr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDorgbr_bufferSize"]                                    = {"hipsolverDnDorgbr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCungbr_bufferSize"]                                    = {"hipsolverDnCungbr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZungbr_bufferSize"]                                    = {"hipsolverDnZungbr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)orgbr and rocsolver_(c|z)ungbr have a harness of other HIP and ROC API calls
  m["cusolverDnSorgbr"]                                               = {"hipsolverDnSorgbr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDorgbr"]                                               = {"hipsolverDnDorgbr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCungbr"]                                               = {"hipsolverDnCungbr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZungbr"]                                               = {"hipsolverDnZungbr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sytrd and rocsolver_(c|z)hetrd have a harness of other HIP and ROC API calls
  m["cusolverDnSsytrd_bufferSize"]                                    = {"hipsolverDnSsytrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsytrd_bufferSize"]                                    = {"hipsolverDnDsytrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChetrd_bufferSize"]                                    = {"hipsolverDnChetrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhetrd_bufferSize"]                                    = {"hipsolverDnZhetrd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sytrd and rocsolver_(c|z)hetrd have a harness of other HIP and ROC API calls
  m["cusolverDnSsytrd"]                                               = {"hipsolverDnSsytrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsytrd"]                                               = {"hipsolverDnDsytrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChetrd"]                                               = {"hipsolverDnChetrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhetrd"]                                               = {"hipsolverDnZhetrd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)orgtr and rocsolver_(c|z)ungtr have a harness of other HIP and ROC API calls
  m["cusolverDnSorgtr_bufferSize"]                                    = {"hipsolverDnSorgtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDorgtr_bufferSize"]                                    = {"hipsolverDnDorgtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCungtr_bufferSize"]                                    = {"hipsolverDnCungtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZungtr_bufferSize"]                                    = {"hipsolverDnZungtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)orgtr and rocsolver_(c|z)ungtr have a harness of other HIP and ROC API calls
  m["cusolverDnSorgtr"]                                               = {"hipsolverDnSorgtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDorgtr"]                                               = {"hipsolverDnDorgtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCungtr"]                                               = {"hipsolverDnCungtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZungtr"]                                               = {"hipsolverDnZungtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)ormtr and rocsolver_(c|z)unmtr have a harness of other HIP and ROC API calls
  m["cusolverDnSormtr_bufferSize"]                                    = {"hipsolverDnSormtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDormtr_bufferSize"]                                    = {"hipsolverDnDormtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCunmtr_bufferSize"]                                    = {"hipsolverDnCunmtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZunmtr_bufferSize"]                                    = {"hipsolverDnZunmtr_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)ormtr and rocsolver_(c|z)unmtr have a harness of other HIP and ROC API calls
  m["cusolverDnSormtr"]                                               = {"hipsolverDnSormtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDormtr"]                                               = {"hipsolverDnDormtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCunmtr"]                                               = {"hipsolverDnCunmtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZunmtr"]                                               = {"hipsolverDnZunmtr",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvd have a harness of other HIP and ROC API calls
  m["cusolverDnSgesvd_bufferSize"]                                    = {"hipsolverDnSgesvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvd_bufferSize"]                                    = {"hipsolverDnDgesvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvd_bufferSize"]                                    = {"hipsolverDnCgesvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvd_bufferSize"]                                    = {"hipsolverDnZgesvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvd have a harness of other HIP and ROC API calls
  m["cusolverDnSgesvd"]                                               = {"hipsolverDnSgesvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvd"]                                               = {"hipsolverDnDgesvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvd"]                                               = {"hipsolverDnCgesvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvd"]                                               = {"hipsolverDnZgesvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevd and rocsolver_(c|z)heevd have a harness of other HIP and ROC API calls
  m["cusolverDnSsyevd_bufferSize"]                                    = {"hipsolverDnSsyevd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevd_bufferSize"]                                    = {"hipsolverDnDsyevd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevd_bufferSize"]                                    = {"hipsolverDnCheevd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevd_bufferSize"]                                    = {"hipsolverDnZheevd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevd and rocsolver_(c|z)heevd have a harness of other HIP and ROC API calls
  m["cusolverDnSsyevd"]                                               = {"hipsolverDnSsyevd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevd"]                                               = {"hipsolverDnDsyevd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevd"]                                               = {"hipsolverDnCheevd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevd"]                                               = {"hipsolverDnZheevd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevdx_inplace and rocsolver_(c|z)heevdx_inplace have a harness of other ROC API calls
  m["cusolverDnSsyevdx_bufferSize"]                                   = {"hipsolverDnSsyevdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevdx_bufferSize"]                                   = {"hipsolverDnDsyevdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevdx_bufferSize"]                                   = {"hipsolverDnCheevdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevdx_bufferSize"]                                   = {"hipsolverDnZheevdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevdx_inplace and rocsolver_(c|z)heevdx_inplace have a harness of other ROC and HIP API calls
  m["cusolverDnSsyevdx"]                                              = {"hipsolverDnSsyevdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevdx"]                                              = {"hipsolverDnDsyevdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevdx"]                                              = {"hipsolverDnCheevdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevdx"]                                              = {"hipsolverDnZheevdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sygvdx_inplace and rocsolver_(c|z)hegvdx_inplace have a harness of other ROC and HIP API calls
  m["cusolverDnSsygvdx_bufferSize"]                                   = {"hipsolverDnSsygvdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsygvdx_bufferSize"]                                   = {"hipsolverDnDsygvdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChegvdx_bufferSize"]                                   = {"hipsolverDnChegvdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhegvdx_bufferSize"]                                   = {"hipsolverDnZhegvdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sygvdx_inplace and rocsolver_(c|z)hegvdx_inplace have a harness of other ROC and HIP API calls
  m["cusolverDnSsygvdx"]                                              = {"hipsolverDnSsygvdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsygvdx"]                                              = {"hipsolverDnDsygvdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChegvdx"]                                              = {"hipsolverDnChegvdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhegvdx"]                                              = {"hipsolverDnZhegvdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sygvd and rocsolver_(c|z)hegvd have a harness of other ROC and HIP API calls
  m["cusolverDnSsygvd_bufferSize"]                                    = {"hipsolverDnSsygvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsygvd_bufferSize"]                                    = {"hipsolverDnDsygvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChegvd_bufferSize"]                                    = {"hipsolverDnChegvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhegvd_bufferSize"]                                    = {"hipsolverDnZhegvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sygvd and rocsolver_(c|z)hegvd have a harness of other ROC and HIP API calls
  m["cusolverDnSsygvd"]                                               = {"hipsolverDnSsygvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsygvd"]                                               = {"hipsolverDnDsygvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChegvd"]                                               = {"hipsolverDnChegvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhegvd"]                                               = {"hipsolverDnZhegvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverDnCreateSyevjInfo"]                                      = {"hipsolverDnCreateSyevjInfo",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDestroySyevjInfo"]                                     = {"hipsolverDnDestroySyevjInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsyevjSetTolerance"]                                   = {"hipsolverDnXsyevjSetTolerance",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsyevjSetMaxSweeps"]                                   = {"hipsolverDnXsyevjSetMaxSweeps",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsyevjSetSortEig"]                                     = {"hipsolverDnXsyevjSetSortEig",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsyevjGetResidual"]                                    = {"hipsolverDnXsyevjGetResidual",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsyevjGetSweeps"]                                      = {"hipsolverDnXsyevjGetSweeps",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevj_strided_batched and rocsolver_(c|z)heevj_strided_batched have a harness of other ROC and HIP API calls
  m["cusolverDnSsyevjBatched_bufferSize"]                             = {"hipsolverDnSsyevjBatched_bufferSize",                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevjBatched_bufferSize"]                             = {"hipsolverDnDsyevjBatched_bufferSize",                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevjBatched_bufferSize"]                             = {"hipsolverDnCheevjBatched_bufferSize",                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevjBatched_bufferSize"]                             = {"hipsolverDnZheevjBatched_bufferSize",                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevj_strided_batched and rocsolver_(c|z)heevj_strided_batched have a harness of other ROC and HIP API calls
  m["cusolverDnSsyevjBatched"]                                        = {"hipsolverDnSsyevjBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevjBatched"]                                        = {"hipsolverDnDsyevjBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevjBatched"]                                        = {"hipsolverDnCheevjBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevjBatched"]                                        = {"hipsolverDnZheevjBatched",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevj and rocsolver_(c|z)heevj have a harness of other ROC and HIP API calls
  m["cusolverDnSsyevj_bufferSize"]                                    = {"hipsolverDnSsyevj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevj_bufferSize"]                                    = {"hipsolverDnDsyevj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevj_bufferSize"]                                    = {"hipsolverDnCheevj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevj_bufferSize"]                                    = {"hipsolverDnZheevj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)syevj and rocsolver_(c|z)heevj have a harness of other ROC and HIP API calls
  m["cusolverDnSsyevj"]                                               = {"hipsolverDnSsyevj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsyevj"]                                               = {"hipsolverDnDsyevj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCheevj"]                                               = {"hipsolverDnCheevj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZheevj"]                                               = {"hipsolverDnZheevj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sygvj and rocsolver_(c|z)hegvj have a harness of other ROC and HIP API calls
  m["cusolverDnSsygvj_bufferSize"]                                    = {"hipsolverDnSsygvj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsygvj_bufferSize"]                                    = {"hipsolverDnDsygvj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChegvj_bufferSize"]                                    = {"hipsolverDnChegvj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhegvj_bufferSize"]                                    = {"hipsolverDnZhegvj_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d)sygvj and rocsolver_(c|z)hegvj have a harness of other ROC and HIP API calls
  m["cusolverDnSsygvj"]                                               = {"hipsolverDnSsygvj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDsygvj"]                                               = {"hipsolverDnDsygvj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnChegvj"]                                               = {"hipsolverDnChegvj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZhegvj"]                                               = {"hipsolverDnZhegvj",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverDnCreateGesvdjInfo"]                                     = {"hipsolverDnCreateGesvdjInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDestroyGesvdjInfo"]                                    = {"hipsolverDnDestroyGesvdjInfo",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgesvdjSetTolerance"]                                  = {"hipsolverDnXgesvdjSetTolerance",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgesvdjSetMaxSweeps"]                                  = {"hipsolverDnXgesvdjSetMaxSweeps",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgesvdjSetSortEig"]                                    = {"hipsolverDnXgesvdjSetSortEig",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgesvdjGetResidual"]                                   = {"hipsolverDnXgesvdjGetResidual",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgesvdjGetSweeps"]                                     = {"hipsolverDnXgesvdjGetSweeps",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvdj_notransv_strided_batched have a harness of other ROC and HIP API calls
  m["cusolverDnSgesvdjBatched_bufferSize"]                            = {"hipsolverDnSgesvdjBatched_bufferSize",                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvdjBatched_bufferSize"]                            = {"hipsolverDnDgesvdjBatched_bufferSize",                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvdjBatched_bufferSize"]                            = {"hipsolverDnCgesvdjBatched_bufferSize",                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvdjBatched_bufferSize"]                            = {"hipsolverDnZgesvdjBatched_bufferSize",                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvdj_notransv_strided_batched have a harness of other ROC and HIP API calls
  m["cusolverDnSgesvdjBatched"]                                       = {"hipsolverDnSgesvdjBatched",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvdjBatched"]                                       = {"hipsolverDnDgesvdjBatched",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvdjBatched"]                                       = {"hipsolverDnCgesvdjBatched",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvdjBatched"]                                       = {"hipsolverDnZgesvdjBatched",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvdj_notransv have a harness of other ROC and HIP API calls
  m["cusolverDnSgesvdj_bufferSize"]                                   = {"hipsolverDnSgesvdj_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvdj_bufferSize"]                                   = {"hipsolverDnDgesvdj_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvdj_bufferSize"]                                   = {"hipsolverDnCgesvdj_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvdj_bufferSize"]                                   = {"hipsolverDnZgesvdj_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvdj_notransv have a harness of other ROC and HIP API calls
  m["cusolverDnSgesvdj"]                                              = {"hipsolverDnSgesvdj",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvdj"]                                              = {"hipsolverDnDgesvdj",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvdj"]                                              = {"hipsolverDnCgesvdj",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvdj"]                                              = {"hipsolverDnZgesvdj",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvdx_strided_batched have a harness of other ROC and HIP API calls
  m["cusolverDnSgesvdaStridedBatched_bufferSize"]                     = {"hipsolverDnSgesvdaStridedBatched_bufferSize",           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvdaStridedBatched_bufferSize"]                     = {"hipsolverDnDgesvdaStridedBatched_bufferSize",           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvdaStridedBatched_bufferSize"]                     = {"hipsolverDnCgesvdaStridedBatched_bufferSize",           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvdaStridedBatched_bufferSize"]                     = {"hipsolverDnZgesvdaStridedBatched_bufferSize",           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  // NOTE: rocsolver_(s|d|c|z)gesvdx_strided_batched have a harness of other ROC and HIP API calls
  m["cusolverDnSgesvdaStridedBatched"]                                = {"hipsolverDnSgesvdaStridedBatched",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnDgesvdaStridedBatched"]                                = {"hipsolverDnDgesvdaStridedBatched",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnCgesvdaStridedBatched"]                                = {"hipsolverDnCgesvdaStridedBatched",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnZgesvdaStridedBatched"]                                = {"hipsolverDnZgesvdaStridedBatched",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnPotrf_bufferSize"]                                     = {"hipsolverDnPotrf_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnPotrf"]                                                = {"hipsolverDnPotrf",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnPotrs"]                                                = {"hipsolverDnPotrs",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGeqrf_bufferSize"]                                     = {"hipsolverDnGeqrf_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGeqrf"]                                                = {"hipsolverDnGeqrf",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGetrf_bufferSize"]                                     = {"hipsolverDnGetrf_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGetrf"]                                                = {"hipsolverDnGetrf",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGetrs"]                                                = {"hipsolverDnGetrs",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnSyevd_bufferSize"]                                     = {"hipsolverDnSyevd_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnSyevd"]                                                = {"hipsolverDnSyevd",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnSyevdx_bufferSize"]                                    = {"hipsolverDnSyevdx_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnSyevdx"]                                               = {"hipsolverDnSyevdx",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGesvd_bufferSize"]                                     = {"hipsolverDnGesvd_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnGesvd"]                                                = {"hipsolverDnGesvd",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | CUDA_REMOVED | UNSUPPORTED};
  m["cusolverDnXpotrf_bufferSize"]                                    = {"hipsolverDnXpotrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXpotrf"]                                               = {"hipsolverDnXpotrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXpotrs"]                                               = {"hipsolverDnXpotrs",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgeqrf_bufferSize"]                                    = {"hipsolverDnXgeqrf_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXgeqrf"]                                               = {"hipsolverDnXgeqrf",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, ROC_UNSUPPORTED};
  m["cusolverDnXsyevBatched"]                                         = {"hipsolverDnXsyevBatched",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXsyevBatched_bufferSize"]                              = {"hipsolverDnXsyevBatched_bufferSize",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXsyevd_bufferSize"]                                    = {"hipsolverDnXsyevd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXsyevd"]                                               = {"hipsolverDnXsyevd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXsyevdx_bufferSize"]                                   = {"hipsolverDnXsyevdx_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXsyevdx"]                                              = {"hipsolverDnXsyevdx",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgesvd_bufferSize"]                                    = {"hipsolverDnXgesvd_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgeev"]                                                = {"hipsolverDnXgeev",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgeev_bufferSize"]                                     = {"hipsolverDnXgeev_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgesvd"]                                               = {"hipsolverDnXgesvd",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgesvdp_bufferSize"]                                   = {"hipsolverDnXgesvdp_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgesvdp"]                                              = {"hipsolverDnXgesvdp",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgesvdr_bufferSize"]                                   = {"hipsolverDnXgesvdr_bufferSize",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXgesvdr"]                                              = {"hipsolverDnXgesvdr",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXlarft_bufferSize"]                                    = {"hipsolverDnXlarft_bufferSize",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnXlarft"]                                               = {"hipsolverDnXlarft",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnLoggerSetCallback"]                                    = {"hipsolverDnLoggerSetCallback",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnLoggerSetFile"]                                        = {"hipsolverDnLoggerSetFile",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnLoggerOpenFile"]                                       = {"hipsolverDnLoggerOpenFile",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnLoggerSetLevel"]                                       = {"hipsolverDnLoggerSetLevel",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnLoggerSetMask"]                                        = {"hipsolverDnLoggerSetMask",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnLoggerForceDisable"]                                   = {"hipsolverDnLoggerForceDisable",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverMgCreate"]                                               = {"hipsolverMgCreate",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgDestroy"]                                              = {"hipsolverMgDestroy",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgDeviceSelect"]                                         = {"hipsolverMgDeviceSelect",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgCreateDeviceGrid"]                                     = {"hipsolverMgCreateDeviceGrid",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgDestroyGrid"]                                          = {"hipsolverMgDestroyGrid",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgCreateMatrixDesc"]                                     = {"hipsolverMgCreateMatrixDesc",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgDestroyMatrixDesc"]                                    = {"hipsolverMgDestroyMatrixDesc",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgSyevd_bufferSize"]                                     = {"hipsolverMgSyevd_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgSyevd"]                                                = {"hipsolverMgSyevd",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgGetrf_bufferSize"]                                     = {"hipsolverMgGetrf_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgGetrf"]                                                = {"hipsolverMgGetrf",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgGetrs_bufferSize"]                                     = {"hipsolverMgGetrs_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgGetrs"]                                                = {"hipsolverMgGetrs",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgPotrf_bufferSize"]                                     = {"hipsolverMgPotrf_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgPotrf"]                                                = {"hipsolverMgPotrf",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgPotrs_bufferSize"]                                     = {"hipsolverMgPotrs_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgPotrs"]                                                = {"hipsolverMgPotrs",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgPotri_bufferSize"]                                     = {"hipsolverMgPotri_bufferSize",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverMgPotri"]                                                = {"hipsolverMgPotri",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  // NOTE: rocsolver_create_rfinfo have a harness of other ROC and HIP API calls
  m["cusolverRfCreate"]                                               = {"hipsolverRfCreate",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // NOTE: rocsolver_destroy_rfinfo have a harness of other ROC and HIP API calls
  m["cusolverRfDestroy"]                                              = {"hipsolverRfDestroy",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfGetMatrixFormat"]                                      = {"hipsolverRfGetMatrixFormat",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfSetMatrixFormat"]                                      = {"hipsolverRfSetMatrixFormat",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfSetNumericProperties"]                                 = {"hipsolverRfSetNumericProperties",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfGetNumericProperties"]                                 = {"hipsolverRfGetNumericProperties",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfGetNumericBoostReport"]                                = {"hipsolverRfGetNumericBoostReport",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfSetAlgs"]                                              = {"hipsolverRfSetAlgs",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfGetAlgs"]                                              = {"hipsolverRfGetAlgs",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverRfGetResetValuesFastMode"]                               = {"hipsolverRfGetResetValuesFastMode",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverRfSetResetValuesFastMode"]                               = {"hipsolverRfSetResetValuesFastMode",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // NOTE: rocsolver_dcsrrf_sumlu have a harness of other ROC and HIP API calls
  m["cusolverRfSetupHost"]                                            = {"hipsolverRfSetupHost",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // NOTE: rocsolver_dcsrrf_sumlu have a harness of other ROC and HIP API calls
  m["cusolverRfSetupDevice"]                                          = {"hipsolverRfSetupDevice",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfResetValues"]                                          = {"hipsolverRfResetValues",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // NOTE: can't call rocsolver_dcsrrf_analysis w/o using hipSOLVER's hipsolverRfHandle
  m["cusolverRfAnalyze"]                                              = {"hipsolverRfAnalyze",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // NOTE: can't call rocsolver_dcsrrf_refactlu w/o using hipSOLVER's hipsolverRfHandle
  m["cusolverRfRefactor"]                                             = {"hipsolverRfRefactor",                                   "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfAccessBundledFactorsDevice"]                           = {"hipsolverRfAccessBundledFactorsDevice",                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfExtractBundledFactorsHost"]                            = {"hipsolverRfExtractBundledFactorsHost",                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfExtractSplitFactorsHost"]                              = {"hipsolverRfExtractSplitFactorsHost",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // NOTE: can't call rocsolver_dcsrrf_solve w/o using hipSOLVER's hipsolverRfHandle
  m["cusolverRfSolve"]                                                = {"hipsolverRfSolve",                                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfBatchSetupHost"]                                       = {"hipsolverRfBatchSetupHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfBatchResetValues"]                                     = {"hipsolverRfBatchResetValues",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfBatchAnalyze"]                                         = {"hipsolverRfBatchAnalyze",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfBatchRefactor"]                                        = {"hipsolverRfBatchRefactor",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfBatchSolve"]                                           = {"hipsolverRfBatchSolve",                                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  // no ROC analogues
  m["cusolverRfBatchZeroPivot"]                                       = {"hipsolverRfBatchZeroPivot",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpCreate"]                                               = {"hipsolverSpCreate",                                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpDestroy"]                                              = {"hipsolverSpDestroy",                                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpSetStream"]                                            = {"hipsolverSpSetStream",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpGetStream"]                                            = {"hipsolverSpGetStream",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrissymHost"]                                        = {"hipsolverSpXcsrissymHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrlsvluHost"]                                        = {"hipsolverSpScsrlsvluHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrlsvluHost"]                                        = {"hipsolverSpDcsrlsvluHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrlsvluHost"]                                        = {"hipsolverSpCcsrlsvluHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrlsvluHost"]                                        = {"hipsolverSpZcsrlsvluHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrlsvqr"]                                            = {"hipsolverSpScsrlsvqr",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpDcsrlsvqr"]                                            = {"hipsolverSpDcsrlsvqr",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpCcsrlsvqr"]                                            = {"hipsolverSpCcsrlsvqr",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpZcsrlsvqr"]                                            = {"hipsolverSpZcsrlsvqr",                                  "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpScsrlsvqrHost"]                                        = {"hipsolverSpScsrlsvqrHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrlsvqrHost"]                                        = {"hipsolverSpDcsrlsvqrHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrlsvqrHost"]                                        = {"hipsolverSpCcsrlsvqrHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrlsvqrHost"]                                        = {"hipsolverSpZcsrlsvqrHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrlsvcholHost"]                                      = {"hipsolverSpScsrlsvcholHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpDcsrlsvcholHost"]                                      = {"hipsolverSpDcsrlsvcholHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpCcsrlsvcholHost"]                                      = {"hipsolverSpCcsrlsvcholHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrlsvcholHost"]                                      = {"hipsolverSpZcsrlsvcholHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrlsvchol"]                                          = {"hipsolverSpScsrlsvchol",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpDcsrlsvchol"]                                          = {"hipsolverSpDcsrlsvchol",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | ROC_UNSUPPORTED};
  m["cusolverSpCcsrlsvchol"]                                          = {"hipsolverSpCcsrlsvchol",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrlsvchol"]                                          = {"hipsolverSpZcsrlsvchol",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrlsqvqrHost"]                                       = {"hipsolverSpScsrlsqvqrHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrlsqvqrHost"]                                       = {"hipsolverSpDcsrlsqvqrHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrlsqvqrHost"]                                       = {"hipsolverSpCcsrlsqvqrHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrlsqvqrHost"]                                       = {"hipsolverSpZcsrlsqvqrHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsreigvsiHost"]                                       = {"hipsolverSpScsreigvsiHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsreigvsiHost"]                                       = {"hipsolverSpDcsreigvsiHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsreigvsiHost"]                                       = {"hipsolverSpCcsreigvsiHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsreigvsiHost"]                                       = {"hipsolverSpZcsreigvsiHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsreigvsi"]                                           = {"hipsolverSpScsreigvsi",                                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsreigvsi"]                                           = {"hipsolverSpDcsreigvsi",                                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsreigvsi"]                                           = {"hipsolverSpCcsreigvsi",                                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsreigvsi"]                                           = {"hipsolverSpZcsreigvsi",                                 "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsreigsHost"]                                         = {"hipsolverSpScsreigsHost",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsreigsHost"]                                         = {"hipsolverSpDcsreigsHost",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsreigsHost"]                                         = {"hipsolverSpCcsreigsHost",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsreigsHost"]                                         = {"hipsolverSpZcsreigsHost",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrsymrcmHost"]                                       = {"hipsolverSpXcsrsymrcmHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrsymmdqHost"]                                       = {"hipsolverSpXcsrsymmdqHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrsymamdHost"]                                       = {"hipsolverSpXcsrsymamdHost",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrmetisndHost"]                                      = {"hipsolverSpXcsrmetisndHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrzfdHost"]                                          = {"hipsolverSpScsrzfdHost",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrzfdHost"]                                          = {"hipsolverSpDcsrzfdHost",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrzfdHost"]                                          = {"hipsolverSpCcsrzfdHost",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrzfdHost"]                                          = {"hipsolverSpZcsrzfdHost",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrperm_bufferSizeHost"]                              = {"hipsolverSpXcsrperm_bufferSizeHost",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrpermHost"]                                         = {"hipsolverSpXcsrpermHost",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCreateCsrqrInfo"]                                      = {"hipsolverSpCreateCsrqrInfo",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDestroyCsrqrInfo"]                                     = {"hipsolverSpDestroyCsrqrInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrqrAnalysisBatched"]                                = {"hipsolverSpXcsrqrAnalysisBatched",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrqrBufferInfoBatched"]                              = {"hipsolverSpScsrqrBufferInfoBatched",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrqrBufferInfoBatched"]                              = {"hipsolverSpDcsrqrBufferInfoBatched",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrqrBufferInfoBatched"]                              = {"hipsolverSpCcsrqrBufferInfoBatched",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrqrBufferInfoBatched"]                              = {"hipsolverSpZcsrqrBufferInfoBatched",                    "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrqrsvBatched"]                                      = {"hipsolverSpScsrqrsvBatched",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrqrsvBatched"]                                      = {"hipsolverSpDcsrqrsvBatched",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrqrsvBatched"]                                      = {"hipsolverSpCcsrqrsvBatched",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrqrsvBatched"]                                      = {"hipsolverSpZcsrqrsvBatched",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCreateCsrluInfoHost"]                                  = {"hipsolverSpCreateCsrluInfoHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDestroyCsrluInfoHost"]                                 = {"hipsolverSpDestroyCsrluInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpXcsrluAnalysisHost"]                                   = {"hipsolverSpXcsrluAnalysisHost",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrluBufferInfoHost"]                                 = {"hipsolverSpScsrluBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrluBufferInfoHost"]                                 = {"hipsolverSpDcsrluBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrluBufferInfoHost"]                                 = {"hipsolverSpCcsrluBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrluBufferInfoHost"]                                 = {"hipsolverSpZcsrluBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrluFactorHost"]                                     = {"hipsolverSpScsrluFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrluFactorHost"]                                     = {"hipsolverSpDcsrluFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrluFactorHost"]                                     = {"hipsolverSpCcsrluFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrluFactorHost"]                                     = {"hipsolverSpZcsrluFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrluZeroPivotHost"]                                  = {"hipsolverSpScsrluZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrluZeroPivotHost"]                                  = {"hipsolverSpDcsrluZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrluZeroPivotHost"]                                  = {"hipsolverSpCcsrluZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrluZeroPivotHost"]                                  = {"hipsolverSpZcsrluZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrluSolveHost"]                                      = {"hipsolverSpScsrluSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrluSolveHost"]                                      = {"hipsolverSpDcsrluSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrluSolveHost"]                                      = {"hipsolverSpCcsrluSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrluSolveHost"]                                      = {"hipsolverSpZcsrluSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrluNnzHost"]                                        = {"hipsolverSpXcsrluNnzHost",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrluExtractHost"]                                    = {"hipsolverSpScsrluExtractHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrluExtractHost"]                                    = {"hipsolverSpDcsrluExtractHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrluExtractHost"]                                    = {"hipsolverSpCcsrluExtractHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrluExtractHost"]                                    = {"hipsolverSpZcsrluExtractHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCreateCsrqrInfoHost"]                                  = {"hipsolverSpCreateCsrqrInfoHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDestroyCsrqrInfoHost"]                                 = {"hipsolverSpDestroyCsrqrInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpXcsrqrAnalysisHost"]                                   = {"hipsolverSpXcsrqrAnalysisHost",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrBufferInfoHost"]                                 = {"hipsolverSpScsrqrBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrBufferInfoHost"]                                 = {"hipsolverSpDcsrqrBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrBufferInfoHost"]                                 = {"hipsolverSpCcsrqrBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrBufferInfoHost"]                                 = {"hipsolverSpZcsrqrBufferInfoHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrSetupHost"]                                      = {"hipsolverSpScsrqrSetupHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrSetupHost"]                                      = {"hipsolverSpDcsrqrSetupHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrSetupHost"]                                      = {"hipsolverSpCcsrqrSetupHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrSetupHost"]                                      = {"hipsolverSpZcsrqrSetupHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrFactorHost"]                                     = {"hipsolverSpScsrqrFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrFactorHost"]                                     = {"hipsolverSpDcsrqrFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrFactorHost"]                                     = {"hipsolverSpCcsrqrFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrFactorHost"]                                     = {"hipsolverSpZcsrqrFactorHost",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrZeroPivotHost"]                                  = {"hipsolverSpScsrqrZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrZeroPivotHost"]                                  = {"hipsolverSpDcsrqrZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrZeroPivotHost"]                                  = {"hipsolverSpCcsrqrZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrZeroPivotHost"]                                  = {"hipsolverSpZcsrqrZeroPivotHost",                        "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrSolveHost"]                                      = {"hipsolverSpScsrqrSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrSolveHost"]                                      = {"hipsolverSpDcsrqrSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrSolveHost"]                                      = {"hipsolverSpCcsrqrSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrSolveHost"]                                      = {"hipsolverSpZcsrqrSolveHost",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpXcsrqrAnalysis"]                                       = {"hipsolverSpXcsrqrAnalysis",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrBufferInfo"]                                     = {"hipsolverSpScsrqrBufferInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrBufferInfo"]                                     = {"hipsolverSpDcsrqrBufferInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrBufferInfo"]                                     = {"hipsolverSpCcsrqrBufferInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrBufferInfo"]                                     = {"hipsolverSpZcsrqrBufferInfo",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrSetup"]                                          = {"hipsolverSpScsrqrSetup",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrSetup"]                                          = {"hipsolverSpDcsrqrSetup",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrSetup"]                                          = {"hipsolverSpCcsrqrSetup",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrSetup"]                                          = {"hipsolverSpZcsrqrSetup",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrFactor"]                                         = {"hipsolverSpScsrqrFactor",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrFactor"]                                         = {"hipsolverSpDcsrqrFactor",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrFactor"]                                         = {"hipsolverSpCcsrqrFactor",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrFactor"]                                         = {"hipsolverSpZcsrqrFactor",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrZeroPivot"]                                      = {"hipsolverSpScsrqrZeroPivot",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrZeroPivot"]                                      = {"hipsolverSpDcsrqrZeroPivot",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrZeroPivot"]                                      = {"hipsolverSpCcsrqrZeroPivot",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrZeroPivot"]                                      = {"hipsolverSpZcsrqrZeroPivot",                            "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpScsrqrSolve"]                                          = {"hipsolverSpScsrqrSolve",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDcsrqrSolve"]                                          = {"hipsolverSpDcsrqrSolve",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCcsrqrSolve"]                                          = {"hipsolverSpCcsrqrSolve",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpZcsrqrSolve"]                                          = {"hipsolverSpZcsrqrSolve",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpCreateCsrcholInfoHost"]                                = {"hipsolverSpCreateCsrcholInfoHost",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpDestroyCsrcholInfoHost"]                               = {"hipsolverSpDestroyCsrcholInfoHost",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverSpXcsrcholAnalysisHost"]                                 = {"hipsolverSpXcsrcholAnalysisHost",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholBufferInfoHost"]                               = {"hipsolverSpScsrcholBufferInfoHost",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholBufferInfoHost"]                               = {"hipsolverSpDcsrcholBufferInfoHost",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholBufferInfoHost"]                               = {"hipsolverSpCcsrcholBufferInfoHost",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholBufferInfoHost"]                               = {"hipsolverSpZcsrcholBufferInfoHost",                     "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholFactorHost"]                                   = {"hipsolverSpScsrcholFactorHost",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholFactorHost"]                                   = {"hipsolverSpDcsrcholFactorHost",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholFactorHost"]                                   = {"hipsolverSpCcsrcholFactorHost",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholFactorHost"]                                   = {"hipsolverSpZcsrcholFactorHost",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholZeroPivotHost"]                                = {"hipsolverSpScsrcholZeroPivotHost",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholZeroPivotHost"]                                = {"hipsolverSpDcsrcholZeroPivotHost",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholZeroPivotHost"]                                = {"hipsolverSpCcsrcholZeroPivotHost",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholZeroPivotHost"]                                = {"hipsolverSpZcsrcholZeroPivotHost",                      "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholSolveHost"]                                    = {"hipsolverSpScsrcholSolveHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholSolveHost"]                                    = {"hipsolverSpDcsrcholSolveHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholSolveHost"]                                    = {"hipsolverSpCcsrcholSolveHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholSolveHost"]                                    = {"hipsolverSpZcsrcholSolveHost",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCreateCsrcholInfo"]                                    = {"hipsolverSpCreateCsrcholInfo",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDestroyCsrcholInfo"]                                   = {"hipsolverSpDestroyCsrcholInfo",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpXcsrcholAnalysis"]                                     = {"hipsolverSpXcsrcholAnalysis",                           "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholBufferInfo"]                                   = {"hipsolverSpScsrcholBufferInfo",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholBufferInfo"]                                   = {"hipsolverSpDcsrcholBufferInfo",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholBufferInfo"]                                   = {"hipsolverSpCcsrcholBufferInfo",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholBufferInfo"]                                   = {"hipsolverSpZcsrcholBufferInfo",                         "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholFactor"]                                       = {"hipsolverSpScsrcholFactor",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholFactor"]                                       = {"hipsolverSpDcsrcholFactor",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholFactor"]                                       = {"hipsolverSpCcsrcholFactor",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholFactor"]                                       = {"hipsolverSpZcsrcholFactor",                             "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholZeroPivot"]                                    = {"hipsolverSpScsrcholZeroPivot",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholZeroPivot"]                                    = {"hipsolverSpDcsrcholZeroPivot",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholZeroPivot"]                                    = {"hipsolverSpCcsrcholZeroPivot",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholZeroPivot"]                                    = {"hipsolverSpZcsrcholZeroPivot",                          "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholSolve"]                                        = {"hipsolverSpScsrcholSolve",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholSolve"]                                        = {"hipsolverSpDcsrcholSolve",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholSolve"]                                        = {"hipsolverSpCcsrcholSolve",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholSolve"]                                        = {"hipsolverSpZcsrcholSolve",                              "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpScsrcholDiag"]                                         = {"hipsolverSpScsrcholDiag",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpDcsrcholDiag"]                                         = {"hipsolverSpDcsrcholDiag",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpCcsrcholDiag"]                                         = {"hipsolverSpCcsrcholDiag",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverSpZcsrcholDiag"]                                         = {"hipsolverSpZcsrcholDiag",                               "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, CUDA_DEPRECATED | UNSUPPORTED};
  m["cusolverDnSetMathMode"]                                          = {"hipsolverDnSetMathMode",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnGetMathMode"]                                          = {"hipsolverDnGetMathMode",                                "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnSetEmulationStrategy"]                                 = {"hipsolverDnSetEmulationStrategy",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};
  m["cusolverDnGetEmulationStrategy"]                                 = {"hipsolverDnGetEmulationStrategy",                       "",                                                               CONV_LIB_FUNC, API_SOLVER, 2, UNSUPPORTED};

  return m;
}();

const std::map<llvm::StringRef, cudaAPIversions> CUDA_SOLVER_FUNCTION_VER_MAP = [] {
  std::map<llvm::StringRef, cudaAPIversions> m;

  m["cusolverDnCreateParams"]                                         = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDestroyParams"]                                        = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSetAdvOptions"]                                        = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnXgetrf"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgetrf_bufferSize"]                                    = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgetrs"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnSetDeterministicMode"]                                 = {CUDA_122, CUDA_0,   CUDA_0  };
  m["cusolverDnGetDeterministicMode"]                                 = {CUDA_122, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsCreate"]                                      = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsDestroy"]                                     = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetRefinementSolver"]                         = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetSolverMainPrecision"]                      = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetSolverLowestPrecision"]                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetSolverPrecisions"]                         = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetTol"]                                      = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetTolInner"]                                 = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetMaxIters"]                                 = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsSetMaxItersInner"]                            = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsGetMaxIters"]                                 = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsEnableFallback"]                              = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSParamsDisableFallback"]                             = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosCreate"]                                       = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosDestroy"]                                      = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosGetNiters"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosGetOuterNiters"]                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosRequestResidual"]                              = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosGetResidualHistory"]                           = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSInfosGetMaxIters"]                                  = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZZgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZCgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZKgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZEgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZYgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCCgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnCEgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCKgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnCYgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDDgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnDSgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnDHgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnDBgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDXgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSSgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnSHgesv"]                                               = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnSBgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSXgesv"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZZgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZCgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZKgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnZEgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZYgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCCgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnCKgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnCEgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCYgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDDgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnDSgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnDHgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnDBgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDXgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSSgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnSHgesv_bufferSize"]                                    = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnSBgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSXgesv_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZZgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZCgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZKgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZEgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZYgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCCgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCKgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCEgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCYgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDDgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDSgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDHgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDBgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDXgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSSgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSHgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSBgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSXgels"]                                               = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZZgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZCgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZKgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZEgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnZYgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCCgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCKgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCEgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnCYgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDDgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDSgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDHgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDBgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnDXgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSSgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSHgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSBgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSXgels_bufferSize"]                                    = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSXgesv"]                                             = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSXgesv_bufferSize"]                                  = {CUDA_102, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSXgels"]                                             = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnIRSXgels_bufferSize"]                                  = {CUDA_110, CUDA_0,   CUDA_0  };
  m["cusolverDnSpotrfBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnDpotrfBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnCpotrfBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnZpotrfBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnSpotrsBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnDpotrsBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnCpotrsBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnZpotrsBatched"]                                        = {CUDA_91,  CUDA_0,   CUDA_0  };
  m["cusolverDnSpotri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDpotri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCpotri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZpotri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSpotri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDpotri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCpotri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZpotri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnXtrtri_bufferSize"]                                    = {CUDA_114, CUDA_0,   CUDA_0  };
  m["cusolverDnXtrtri"]                                               = {CUDA_114, CUDA_0,   CUDA_0  };
  m["cusolverDnSlauum_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDlauum_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnClauum_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZlauum_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSlauum"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDlauum"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnClauum"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZlauum"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSorgqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDorgqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCungqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZungqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSorgqr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDorgqr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCungqr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZungqr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSormqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDormqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCunmqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZunmqr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnXsytrs_bufferSize"]                                    = {CUDA_113, CUDA_0,   CUDA_0  };
  m["cusolverDnXsytrs"]                                               = {CUDA_113, CUDA_0,   CUDA_0  };
  m["cusolverDnSsytri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDsytri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCsytri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZsytri_bufferSize"]                                    = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSsytri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDsytri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCsytri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZsytri"]                                               = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSorgbr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDorgbr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCungbr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZungbr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSorgbr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDorgbr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCungbr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZungbr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsytrd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsytrd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnChetrd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZhetrd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnChetrd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZhetrd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSorgtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDorgtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCungtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZungtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSorgtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDorgtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCungtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZungtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSormtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDormtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCunmtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZunmtr_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSormtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDormtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCunmtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZunmtr"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCheevd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZheevd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCheevd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZheevd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCheevdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZheevdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCheevdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZheevdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSsygvdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDsygvdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnChegvdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZhegvdx_bufferSize"]                                   = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSsygvdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDsygvdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnChegvdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZhegvdx"]                                              = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSsygvd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsygvd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnChegvd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZhegvd_bufferSize"]                                    = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsygvd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsygvd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnChegvd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnZhegvd"]                                               = {CUDA_80,  CUDA_0,   CUDA_0  };
  m["cusolverDnCreateSyevjInfo"]                                      = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDestroySyevjInfo"]                                     = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevjSetTolerance"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevjSetMaxSweeps"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevjSetSortEig"]                                     = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevjGetResidual"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevjGetSweeps"]                                      = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevjBatched_bufferSize"]                             = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevjBatched_bufferSize"]                             = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCheevjBatched_bufferSize"]                             = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZheevjBatched_bufferSize"]                             = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevjBatched"]                                        = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevjBatched"]                                        = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCheevjBatched"]                                        = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZheevjBatched"]                                        = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCheevj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZheevj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsyevj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsyevj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCheevj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZheevj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsygvj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsygvj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnChegvj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZhegvj_bufferSize"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSsygvj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDsygvj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnChegvj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZhegvj"]                                               = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCreateGesvdjInfo"]                                     = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDestroyGesvdjInfo"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdjSetTolerance"]                                  = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdjSetMaxSweeps"]                                  = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdjSetSortEig"]                                    = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdjGetResidual"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdjGetSweeps"]                                     = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSgesvdjBatched_bufferSize"]                            = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDgesvdjBatched_bufferSize"]                            = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCgesvdjBatched_bufferSize"]                            = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZgesvdjBatched_bufferSize"]                            = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSgesvdjBatched"]                                       = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDgesvdjBatched"]                                       = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCgesvdjBatched"]                                       = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZgesvdjBatched"]                                       = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSgesvdj_bufferSize"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDgesvdj_bufferSize"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCgesvdj_bufferSize"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZgesvdj_bufferSize"]                                   = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSgesvdj"]                                              = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnDgesvdj"]                                              = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnCgesvdj"]                                              = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnZgesvdj"]                                              = {CUDA_90,  CUDA_0,   CUDA_0  };
  m["cusolverDnSgesvdaStridedBatched_bufferSize"]                     = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDgesvdaStridedBatched_bufferSize"]                     = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCgesvdaStridedBatched_bufferSize"]                     = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZgesvdaStridedBatched_bufferSize"]                     = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnSgesvdaStridedBatched"]                                = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnDgesvdaStridedBatched"]                                = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnCgesvdaStridedBatched"]                                = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnZgesvdaStridedBatched"]                                = {CUDA_101, CUDA_0,   CUDA_0  };
  m["cusolverDnPotrf_bufferSize"]                                     = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnPotrf"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnPotrs"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGeqrf_bufferSize"]                                     = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGeqrf"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGetrf_bufferSize"]                                     = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGetrf"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGetrs"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnSyevd_bufferSize"]                                     = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnSyevd"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnSyevdx_bufferSize"]                                    = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnSyevdx"]                                               = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGesvd_bufferSize"]                                     = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnGesvd"]                                                = {CUDA_110, CUDA_111, CUDA_130};
  m["cusolverDnXpotrf_bufferSize"]                                    = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXpotrf"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXpotrs"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgeqrf_bufferSize"]                                    = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgeqrf"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevd_bufferSize"]                                    = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevd"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevdx_bufferSize"]                                   = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXsyevdx"]                                              = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvd_bufferSize"]                                    = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvd"]                                               = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdp_bufferSize"]                                   = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdp"]                                              = {CUDA_111, CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdr_bufferSize"]                                   = {CUDA_112, CUDA_0,   CUDA_0  };
  m["cusolverDnXgesvdr"]                                              = {CUDA_112, CUDA_0,   CUDA_0  };
  m["cusolverDnLoggerSetCallback"]                                    = {CUDA_117, CUDA_0,   CUDA_0  };
  m["cusolverDnLoggerSetFile"]                                        = {CUDA_117, CUDA_0,   CUDA_0  };
  m["cusolverDnLoggerOpenFile"]                                       = {CUDA_117, CUDA_0,   CUDA_0  };
  m["cusolverDnLoggerSetLevel"]                                       = {CUDA_117, CUDA_0,   CUDA_0  };
  m["cusolverDnLoggerSetMask"]                                        = {CUDA_117, CUDA_0,   CUDA_0  };
  m["cusolverDnLoggerForceDisable"]                                   = {CUDA_117, CUDA_0,   CUDA_0  };
  m["cusolverMgCreate"]                                               = {CUDA_101, CUDA_130, CUDA_0  };
  m["cusolverMgDestroy"]                                              = {CUDA_101, CUDA_130, CUDA_0  };
  m["cusolverMgDeviceSelect"]                                         = {CUDA_101, CUDA_130, CUDA_0  };
  m["cusolverMgCreateDeviceGrid"]                                     = {CUDA_101, CUDA_130, CUDA_0  };
  m["cusolverMgDestroyGrid"]                                          = {CUDA_101, CUDA_130, CUDA_0  };
  m["cusolverMgCreateMatrixDesc"]                                     = {CUDA_101, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10200
  m["cusolverMgDestroyMatrixDesc"]                                    = {CUDA_101, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10200
  m["cusolverMgSyevd_bufferSize"]                                     = {CUDA_101, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10200
  m["cusolverMgSyevd"]                                                = {CUDA_101, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10200
  m["cusolverMgGetrf_bufferSize"]                                     = {CUDA_102, CUDA_130, CUDA_0  };
  m["cusolverMgGetrf"]                                                = {CUDA_102, CUDA_130, CUDA_0  };
  m["cusolverMgGetrs_bufferSize"]                                     = {CUDA_102, CUDA_130, CUDA_0  };
  m["cusolverMgGetrs"]                                                = {CUDA_102, CUDA_130, CUDA_0  };
  m["cusolverMgPotrf_bufferSize"]                                     = {CUDA_110, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10500
  m["cusolverMgPotrf"]                                                = {CUDA_110, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10500
  m["cusolverMgPotrs_bufferSize"]                                     = {CUDA_110, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10500
  m["cusolverMgPotrs"]                                                = {CUDA_110, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10500
  m["cusolverMgPotri_bufferSize"]                                     = {CUDA_110, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10500
  m["cusolverMgPotri"]                                                = {CUDA_110, CUDA_130, CUDA_0  };  // A: CUSOLVER_VERSION 10500
  m["cusolverSpXcsrsymmdqHost"]                                       = {CUDA_75,  CUDA_130, CUDA_0  };
  m["cusolverSpXcsrsymamdHost"]                                       = {CUDA_75,  CUDA_130, CUDA_0  };
  m["cusolverSpXcsrmetisndHost"]                                      = {CUDA_92,  CUDA_130, CUDA_0  };
  m["cusolverSpScsrzfdHost"]                                          = {CUDA_92,  CUDA_130, CUDA_0  };
  m["cusolverSpDcsrzfdHost"]                                          = {CUDA_92,  CUDA_130, CUDA_0  };
  m["cusolverSpCcsrzfdHost"]                                          = {CUDA_92,  CUDA_130, CUDA_0  };
  m["cusolverSpZcsrzfdHost"]                                          = {CUDA_92,  CUDA_130, CUDA_0  };
  m["cusolverSpCreateCsrluInfoHost"]                                  = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDestroyCsrluInfoHost"]                                 = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpXcsrluAnalysisHost"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrluBufferInfoHost"]                                 = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrluBufferInfoHost"]                                 = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrluBufferInfoHost"]                                 = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrluBufferInfoHost"]                                 = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrluFactorHost"]                                     = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrluFactorHost"]                                     = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrluFactorHost"]                                     = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrluFactorHost"]                                     = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrluZeroPivotHost"]                                  = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrluZeroPivotHost"]                                  = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrluZeroPivotHost"]                                  = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrluZeroPivotHost"]                                  = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrluSolveHost"]                                      = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrluSolveHost"]                                      = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrluSolveHost"]                                      = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrluSolveHost"]                                      = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpXcsrluNnzHost"]                                        = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrluExtractHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrluExtractHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrluExtractHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrluExtractHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCreateCsrqrInfoHost"]                                  = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDestroyCsrqrInfoHost"]                                 = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpXcsrqrAnalysisHost"]                                   = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrBufferInfoHost"]                                 = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrBufferInfoHost"]                                 = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrBufferInfoHost"]                                 = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrBufferInfoHost"]                                 = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrSetupHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrSetupHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrSetupHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrSetupHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrFactorHost"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrFactorHost"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrFactorHost"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrFactorHost"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrZeroPivotHost"]                                  = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrZeroPivotHost"]                                  = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrZeroPivotHost"]                                  = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrZeroPivotHost"]                                  = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrSolveHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrSolveHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrSolveHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrSolveHost"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpXcsrqrAnalysis"]                                       = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrBufferInfo"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrBufferInfo"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrBufferInfo"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrBufferInfo"]                                     = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrSetup"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrSetup"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrSetup"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrSetup"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrFactor"]                                         = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrFactor"]                                         = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrFactor"]                                         = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrFactor"]                                         = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrZeroPivot"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrZeroPivot"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrZeroPivot"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrZeroPivot"]                                      = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpScsrqrSolve"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDcsrqrSolve"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCcsrqrSolve"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpZcsrqrSolve"]                                          = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpCreateCsrcholInfoHost"]                                = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpDestroyCsrcholInfoHost"]                               = {CUDA_75,  CUDA_0,   CUDA_0  };
  m["cusolverSpXcsrcholAnalysisHost"]                                 = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholBufferInfoHost"]                               = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholBufferInfoHost"]                               = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholBufferInfoHost"]                               = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholBufferInfoHost"]                               = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholFactorHost"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholFactorHost"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholFactorHost"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholFactorHost"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholZeroPivotHost"]                                = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholZeroPivotHost"]                                = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholZeroPivotHost"]                                = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholZeroPivotHost"]                                = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholSolveHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholSolveHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholSolveHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholSolveHost"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCreateCsrcholInfo"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDestroyCsrcholInfo"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpXcsrcholAnalysis"]                                     = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholBufferInfo"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholBufferInfo"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholBufferInfo"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholBufferInfo"]                                   = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholFactor"]                                       = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholFactor"]                                       = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholFactor"]                                       = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholFactor"]                                       = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholZeroPivot"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholZeroPivot"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholZeroPivot"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholZeroPivot"]                                    = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholSolve"]                                        = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpDcsrcholSolve"]                                        = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpCcsrcholSolve"]                                        = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpZcsrcholSolve"]                                        = {CUDA_75,  CUDA_128, CUDA_0  };
  m["cusolverSpScsrcholDiag"]                                         = {CUDA_101, CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 10200
  m["cusolverSpDcsrcholDiag"]                                         = {CUDA_101, CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 10200
  m["cusolverSpCcsrcholDiag"]                                         = {CUDA_101, CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 10200
  m["cusolverSpZcsrcholDiag"]                                         = {CUDA_101, CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 10200
  m["cusolverDnXlarft"]                                               = {CUDA_124, CUDA_0,   CUDA_0  };
  m["cusolverDnXlarft_bufferSize"]                                    = {CUDA_124, CUDA_0,   CUDA_0  };
  m["cusolverDnXgeev"]                                                = {CUDA_126, CUDA_0,   CUDA_0  }; // CUSOLVER_VERSION 11701
  m["cusolverDnXgeev_bufferSize"]                                     = {CUDA_126, CUDA_0,   CUDA_0  }; // CUSOLVER_VERSION 11701
  m["cusolverDnXsyevBatched"]                                         = {CUDA_126, CUDA_0,   CUDA_0  }; // CUSOLVER_VERSION 11701
  m["cusolverDnXsyevBatched_bufferSize"]                              = {CUDA_126, CUDA_0,   CUDA_0  }; // CUSOLVER_VERSION 11701
  m["cusolverRfSetupHost"]                                            = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfSetupDevice"]                                          = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfResetValues"]                                          = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfAnalyze"]                                              = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfRefactor"]                                             = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfAccessBundledFactorsDevice"]                           = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfExtractBundledFactorsHost"]                            = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfExtractSplitFactorsHost"]                              = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverRfSolve"]                                                = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpScsrlsvluHost"]                                        = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpDcsrlsvluHost"]                                        = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpCcsrlsvluHost"]                                        = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpZcsrlsvluHost"]                                        = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpScsrlsvcholHost"]                                      = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpDcsrlsvcholHost"]                                      = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpCcsrlsvcholHost"]                                      = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpZcsrlsvcholHost"]                                      = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpScsrlsvchol"]                                          = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpDcsrlsvchol"]                                          = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpCcsrlsvchol"]                                          = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverSpZcsrlsvchol"]                                          = {CUDA_0,   CUDA_128, CUDA_0  }; // CUSOLVER_VERSION 11702
  m["cusolverDnSetMathMode"]                                          = {CUDA_130, CUDA_0,   CUDA_0  };
  m["cusolverDnGetMathMode"]                                          = {CUDA_130, CUDA_0,   CUDA_0  };
  m["cusolverDnSetEmulationStrategy"]                                 = {CUDA_130, CUDA_0,   CUDA_0  };
  m["cusolverDnGetEmulationStrategy"]                                 = {CUDA_130, CUDA_0,   CUDA_0  };
  m["cusolverRfCreate"]                                               = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfDestroy"]                                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfGetMatrixFormat"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfSetMatrixFormat"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfSetNumericProperties"]                                 = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfGetNumericProperties"]                                 = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfGetNumericBoostReport"]                                = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfSetAlgs"]                                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfGetAlgs"]                                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfGetResetValuesFastMode"]                               = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfSetResetValuesFastMode"]                               = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfBatchSetupHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfBatchResetValues"]                                     = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfBatchAnalyze"]                                         = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfBatchRefactor"]                                        = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfBatchSolve"]                                           = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverRfBatchZeroPivot"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCreate"]                                               = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDestroy"]                                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpSetStream"]                                            = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpGetStream"]                                            = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpXcsrissymHost"]                                        = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsrlsvqr"]                                            = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsrlsvqr"]                                            = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsrlsvqr"]                                            = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsrlsvqr"]                                            = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsrlsvqrHost"]                                        = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsrlsvqrHost"]                                        = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsrlsvqrHost"]                                        = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsrlsvqrHost"]                                        = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsrlsqvqrHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsrlsqvqrHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsrlsqvqrHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsrlsqvqrHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsreigvsiHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsreigvsiHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsreigvsiHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsreigvsiHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsreigvsi"]                                           = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsreigvsi"]                                           = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsreigvsi"]                                           = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsreigvsi"]                                           = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsreigsHost"]                                         = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsreigsHost"]                                         = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsreigsHost"]                                         = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsreigsHost"]                                         = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpXcsrsymrcmHost"]                                       = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpXcsrperm_bufferSizeHost"]                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpXcsrpermHost"]                                         = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCreateCsrqrInfo"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDestroyCsrqrInfo"]                                     = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpXcsrqrAnalysisBatched"]                                = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsrqrBufferInfoBatched"]                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsrqrBufferInfoBatched"]                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsrqrBufferInfoBatched"]                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsrqrBufferInfoBatched"]                              = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpScsrqrsvBatched"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpDcsrqrsvBatched"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpCcsrqrsvBatched"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };
  m["cusolverSpZcsrqrsvBatched"]                                      = {CUDA_0,   CUDA_130, CUDA_0  };

  return m;
}();

const std::map<llvm::StringRef, hipAPIversions> HIP_SOLVER_FUNCTION_VER_MAP = [] {
  std::map<llvm::StringRef, hipAPIversions> m;

  m["hipsolverDnCreate"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDestroy"]                                             = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgetrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgetrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgetrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgetrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgetrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgetrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgetrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgetrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgetrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgetrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgetrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgetrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverSetStream"]                                             = {HIP_4050, HIP_0,    HIP_0   };
  m["hipsolverGetStream"]                                             = {HIP_4050, HIP_0,    HIP_0   };
  m["hipsolverDnZZgesv"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCCgesv"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDDgesv"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSSgesv"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZZgesv_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCCgesv_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDDgesv_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSSgesv_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZZgels"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCCgels"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDDgels"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSSgels"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZZgels_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCCgels_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDDgels_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSSgels_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotrs"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotrfBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotrfBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotrfBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotrfBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotrsBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotrsBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotrsBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotrsBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotri_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotri_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotri_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotri_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSpotri"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDpotri"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCpotri"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZpotri"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgeqrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgeqrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgeqrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgeqrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgeqrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgeqrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgeqrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgeqrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSorgqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDorgqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCungqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZungqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSorgqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDorgqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCungqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZungqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSormqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDormqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCunmqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZunmqr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSormqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDormqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCunmqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZunmqr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsytrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsytrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCsytrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZsytrf_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsytrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsytrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCsytrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZsytrf"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgebrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgebrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgebrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgebrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgebrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgebrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgebrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgebrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSorgbr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDorgbr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCungbr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZungbr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSorgbr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDorgbr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCungbr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZungbr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsytrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsytrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnChetrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZhetrd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsytrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsytrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnChetrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZhetrd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSorgtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDorgtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCungtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZungtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSorgtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDorgtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCungtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZungtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSormtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDormtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCunmtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZunmtr_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSormtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDormtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCunmtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZunmtr"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCheevd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZheevd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCheevd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZheevd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnCheevdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnZheevdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnCheevdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnZheevdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnSsygvdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnDsygvdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnChegvdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnZhegvdx_bufferSize"]                                  = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnSsygvdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnDsygvdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnChegvdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnZhegvdx"]                                             = {HIP_5030, HIP_0,    HIP_0   };
  m["hipsolverDnSsygvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsygvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnChegvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZhegvd_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsygvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsygvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnChegvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZhegvd"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCreateSyevjInfo"]                                     = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDestroySyevjInfo"]                                    = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXsyevjSetTolerance"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXsyevjSetMaxSweeps"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXsyevjSetSortEig"]                                    = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXsyevjGetResidual"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXsyevjGetSweeps"]                                     = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevjBatched_bufferSize"]                            = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevjBatched_bufferSize"]                            = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCheevjBatched_bufferSize"]                            = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZheevjBatched_bufferSize"]                            = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevjBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevjBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCheevjBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZheevjBatched"]                                       = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCheevj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZheevj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsyevj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsyevj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCheevj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZheevj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsygvj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsygvj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnChegvj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZhegvj_bufferSize"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSsygvj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDsygvj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnChegvj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZhegvj"]                                              = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCreateGesvdjInfo"]                                    = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDestroyGesvdjInfo"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXgesvdjSetTolerance"]                                 = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXgesvdjSetMaxSweeps"]                                 = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXgesvdjSetSortEig"]                                   = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXgesvdjGetResidual"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnXgesvdjGetSweeps"]                                    = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvdjBatched_bufferSize"]                           = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvdjBatched_bufferSize"]                           = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvdjBatched_bufferSize"]                           = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvdjBatched_bufferSize"]                           = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvdjBatched"]                                      = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvdjBatched"]                                      = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvdjBatched"]                                      = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvdjBatched"]                                      = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvdj_bufferSize"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvdj_bufferSize"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvdj_bufferSize"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvdj_bufferSize"]                                  = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvdj"]                                             = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvdj"]                                             = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvdj"]                                             = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvdj"]                                             = {HIP_5010, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvdaStridedBatched_bufferSize"]                    = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvdaStridedBatched_bufferSize"]                    = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvdaStridedBatched_bufferSize"]                    = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvdaStridedBatched_bufferSize"]                    = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnSgesvdaStridedBatched"]                               = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnDgesvdaStridedBatched"]                               = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnCgesvdaStridedBatched"]                               = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverDnZgesvdaStridedBatched"]                               = {HIP_5040, HIP_0,    HIP_0   };
  m["hipsolverRfCreate"]                                              = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfDestroy"]                                             = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfGetMatrixFormat"]                                     = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSetMatrixFormat"]                                     = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSetNumericProperties"]                                = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfGetNumericProperties"]                                = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfGetNumericBoostReport"]                               = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSetAlgs"]                                             = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfGetResetValuesFastMode"]                              = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSetResetValuesFastMode"]                              = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSetupHost"]                                           = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSetupDevice"]                                         = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfResetValues"]                                         = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfAnalyze"]                                             = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfRefactor"]                                            = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfAccessBundledFactorsDevice"]                          = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfExtractBundledFactorsHost"]                           = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfExtractSplitFactorsHost"]                             = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfSolve"]                                               = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfBatchSetupHost"]                                      = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfBatchResetValues"]                                    = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfBatchAnalyze"]                                        = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfBatchRefactor"]                                       = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfBatchSolve"]                                          = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverRfBatchZeroPivot"]                                      = {HIP_5060, HIP_0,    HIP_0   };
  m["hipsolverSpCreate"]                                              = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverSpDestroy"]                                             = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverSpSetStream"]                                           = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverSpScsrlsvchol"]                                         = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverSpDcsrlsvchol"]                                         = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverSpScsrlsvcholHost"]                                     = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverSpDcsrlsvcholHost"]                                     = {HIP_6010, HIP_0,    HIP_0   };
  m["hipsolverDnCreateParams"]                                        = {HIP_6020, HIP_0,    HIP_0   };
  m["hipsolverDnDestroyParams"]                                       = {HIP_6020, HIP_0,    HIP_0   };
  m["hipsolverDnSetAdvOptions"]                                       = {HIP_6020, HIP_0,    HIP_0   };
  m["hipsolverDnXgetrf"]                                              = {HIP_6020, HIP_0,    HIP_0   };
  m["hipsolverDnXgetrf_bufferSize"]                                   = {HIP_6020, HIP_0,    HIP_0   };
  m["hipsolverDnXgetrs"]                                              = {HIP_6020, HIP_0,    HIP_0   };
  m["hipsolverDnSetDeterministicMode"]                                = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverDnGetDeterministicMode"]                                = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverDnXgeqrf_bufferSize"]                                   = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverDnXgeqrf"]                                              = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverDnXpotrf_bufferSize"]                                   = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverDnXpotrf"]                                              = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverDnXpotrs"]                                              = {HIP_6030, HIP_0,    HIP_0   };
  m["hipsolverSpScsrlsvqr"]                                           = {HIP_6040, HIP_0,    HIP_0   };
  m["hipsolverSpDcsrlsvqr"]                                           = {HIP_6040, HIP_0,    HIP_0   };
  m["hipsolverSpCcsrlsvqr"]                                           = {HIP_7000, HIP_0,    HIP_0   };
  m["hipsolverSpZcsrlsvqr"]                                           = {HIP_7000, HIP_0,    HIP_0   };

  m["rocsolver_spotrf"]                                               = {HIP_3020, HIP_0,    HIP_0   };
  m["rocsolver_dpotrf"]                                               = {HIP_3020, HIP_0,    HIP_0   };
  m["rocsolver_cpotrf"]                                               = {HIP_3060, HIP_0,    HIP_0   };
  m["rocsolver_zpotrf"]                                               = {HIP_3060, HIP_0,    HIP_0   };

  return m;
}();

const std::map<unsigned int, llvm::StringRef> CUDA_SOLVER_API_SECTION_MAP = [] {
  std::map<unsigned int, llvm::StringRef> m;

  m[1]                                                                = "CUSOLVER Data types";
  m[2]                                                                = "CUSOLVER Function Reference";

  return m;
}();
