!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! ==============================================================================
! hipfort: FORTRAN Interfaces for GPU kernels
! ==============================================================================
! Copyright (c) 2020-2022 Advanced Micro Devices, Inc. All rights reserved.
! [MITx11 License]
! 
! 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.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          
           
module hipfort_hipsparse
  use hipfort_hipsparse_enums
  implicit none

 
  !>  \ingroup aux_module
  !>   \brief Create a hipsparse handle
  !> 
  !>   \details
  !>   \p hipsparseCreate creates the hipSPARSE library context. It must be
  !>   initialized before any other hipSPARSE API function is invoked and must be passed to
  !>   all subsequent library function calls. The handle should be destroyed at the end
  !>   using hipsparseDestroy().
  interface hipsparseCreate
#ifdef USE_CUDA_NAMES
    function hipsparseCreate_(handle) bind(c, name="cusparseCreate")
#else
    function hipsparseCreate_(handle) bind(c, name="hipsparseCreate")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreate_
      type(c_ptr) :: handle
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a hipsparse handle
  !> 
  !>   \details
  !>   \p hipsparseDestroy destroys the hipSPARSE library context and releases all
  !>   resources used by the hipSPARSE library.
  interface hipsparseDestroy
#ifdef USE_CUDA_NAMES
    function hipsparseDestroy_(handle) bind(c, name="cusparseDestroy")
#else
    function hipsparseDestroy_(handle) bind(c, name="hipsparseDestroy")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroy_
      type(c_ptr),value :: handle
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Get hipSPARSE version
  !> 
  !>   \details
  !>   \p hipsparseGetVersion gets the hipSPARSE library version number.
  !>   - patch = version % 100
  !>   - minor = version 100 % 1000
  !>   - major = version 100000
  interface hipsparseGetVersion
#ifdef USE_CUDA_NAMES
    function hipsparseGetVersion_(handle,version) bind(c, name="cusparseGetVersion")
#else
    function hipsparseGetVersion_(handle,version) bind(c, name="hipsparseGetVersion")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseGetVersion_
      type(c_ptr),value :: handle
      type(c_ptr),value :: version
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Get hipSPARSE git revision
  !> 
  !>   \details
  !>   \p hipsparseGetGitRevision gets the hipSPARSE library git commit revision (SHA-1).
  interface hipsparseGetGitRevision
#ifdef USE_CUDA_NAMES
    function hipsparseGetGitRevision_(handle,rev) bind(c, name="cusparseGetGitRevision")
#else
    function hipsparseGetGitRevision_(handle,rev) bind(c, name="hipsparseGetGitRevision")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseGetGitRevision_
      type(c_ptr),value :: handle
      type(c_ptr),value :: rev
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Specify user defined HIP stream
  !> 
  !>   \details
  !>   \p hipsparseSetStream specifies the stream to be used by the hipSPARSE library
  !>   context and all subsequent function calls.
  interface hipsparseSetStream
#ifdef USE_CUDA_NAMES
    function hipsparseSetStream_(handle,streamId) bind(c, name="cusparseSetStream")
#else
    function hipsparseSetStream_(handle,streamId) bind(c, name="hipsparseSetStream")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSetStream_
      type(c_ptr),value :: handle
      type(c_ptr),value :: streamId
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Get current stream from library context
  !> 
  !>   \details
  !>   \p hipsparseGetStream gets the hipSPARSE library context stream which is currently
  !>   used for all subsequent function calls.
  interface hipsparseGetStream
#ifdef USE_CUDA_NAMES
    function hipsparseGetStream_(handle,streamId) bind(c, name="cusparseGetStream")
#else
    function hipsparseGetStream_(handle,streamId) bind(c, name="hipsparseGetStream")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseGetStream_
      type(c_ptr),value :: handle
      type(c_ptr) :: streamId
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Specify pointer mode
  !> 
  !>   \details
  !>   \p hipsparseSetPointerMode specifies the pointer mode to be used by the hipSPARSE
  !>   library context and all subsequent function calls. By default, all values are passed
  !>   by reference on the host. Valid pointer modes are \p HIPSPARSE_POINTER_MODE_HOST
  !>   or \p HIPSPARSE_POINTER_MODE_DEVICE.
  interface hipsparseSetPointerMode
#ifdef USE_CUDA_NAMES
    function hipsparseSetPointerMode_(handle,mode) bind(c, name="cusparseSetPointerMode")
#else
    function hipsparseSetPointerMode_(handle,mode) bind(c, name="hipsparseSetPointerMode")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSetPointerMode_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_POINTER_MODE_HOST)),value :: mode
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Get current pointer mode from library context
  !> 
  !>   \details
  !>   \p hipsparseGetPointerMode gets the hipSPARSE library context pointer mode which
  !>   is currently used for all subsequent function calls.
  interface hipsparseGetPointerMode
#ifdef USE_CUDA_NAMES
    function hipsparseGetPointerMode_(handle,mode) bind(c, name="cusparseGetPointerMode")
#else
    function hipsparseGetPointerMode_(handle,mode) bind(c, name="hipsparseGetPointerMode")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseGetPointerMode_
      type(c_ptr),value :: handle
      type(c_ptr),value :: mode
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a matrix descriptor
  !>   \details
  !>   \p hipsparseCreateMatDescr creates a matrix descriptor. It initializes
  !>   \p hipsparseMatrixType_t to \p HIPSPARSE_MATRIX_TYPE_GENERAL and
  !>   \p hipsparseIndexBase_t to \p HIPSPARSE_INDEX_BASE_ZERO. It should be destroyed
  !>   at the end using hipsparseDestroyMatDescr().
  interface hipsparseCreateMatDescr
#ifdef USE_CUDA_NAMES
    function hipsparseCreateMatDescr_(descrA) bind(c, name="cusparseCreateMatDescr")
#else
    function hipsparseCreateMatDescr_(descrA) bind(c, name="hipsparseCreateMatDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateMatDescr_
      type(c_ptr) :: descrA
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a matrix descriptor
  !> 
  !>   \details
  !>   \p hipsparseDestroyMatDescr destroys a matrix descriptor and releases all
  !>   resources used by the descriptor.
  interface hipsparseDestroyMatDescr
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyMatDescr_(descrA) bind(c, name="cusparseDestroyMatDescr")
#else
    function hipsparseDestroyMatDescr_(descrA) bind(c, name="hipsparseDestroyMatDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyMatDescr_
      type(c_ptr),value :: descrA
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Copy a matrix descriptor
  !>   \details
  !>   \p hipsparseCopyMatDescr copies a matrix descriptor. Both, source and destination
  !>   matrix descriptors must be initialized prior to calling \p hipsparseCopyMatDescr.
  interface hipsparseCopyMatDescr
#ifdef USE_CUDA_NAMES
    function hipsparseCopyMatDescr_(dest,src) bind(c, name="cusparseCopyMatDescr")
#else
    function hipsparseCopyMatDescr_(dest,src) bind(c, name="hipsparseCopyMatDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCopyMatDescr_
      type(c_ptr),value :: dest
      type(c_ptr),value :: src
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Specify the matrix type of a matrix descriptor
  !> 
  !>   \details
  !>   \p hipsparseSetMatType sets the matrix type of a matrix descriptor. Valid
  !>   matrix types are \p HIPSPARSE_MATRIX_TYPE_GENERAL,
  !>   \p HIPSPARSE_MATRIX_TYPE_SYMMETRIC, \p HIPSPARSE_MATRIX_TYPE_HERMITIAN or
  !>   \p HIPSPARSE_MATRIX_TYPE_TRIANGULAR.
  interface hipsparseSetMatType
#ifdef USE_CUDA_NAMES
    function hipsparseSetMatType_(descrA,myType) bind(c, name="cusparseSetMatType")
#else
    function hipsparseSetMatType_(descrA,myType) bind(c, name="hipsparseSetMatType")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSetMatType_
      type(c_ptr),value :: descrA
      integer(kind(HIPSPARSE_MATRIX_TYPE_GENERAL)),value :: myType
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Specify the matrix fill mode of a matrix descriptor
  !> 
  !>   \details
  !>   \p hipsparseSetMatFillMode sets the matrix fill mode of a matrix descriptor.
  !>   Valid fill modes are \p HIPSPARSE_FILL_MODE_LOWER or
  !>   \p HIPSPARSE_FILL_MODE_UPPER.
  interface hipsparseSetMatFillMode
#ifdef USE_CUDA_NAMES
    function hipsparseSetMatFillMode_(descrA,fillMode) bind(c, name="cusparseSetMatFillMode")
#else
    function hipsparseSetMatFillMode_(descrA,fillMode) bind(c, name="hipsparseSetMatFillMode")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSetMatFillMode_
      type(c_ptr),value :: descrA
      integer(kind(HIPSPARSE_FILL_MODE_LOWER)),value :: fillMode
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Specify the matrix diagonal type of a matrix descriptor
  !> 
  !>   \details
  !>   \p hipsparseSetMatDiagType sets the matrix diagonal type of a matrix
  !>   descriptor. Valid diagonal types are \p HIPSPARSE_DIAG_TYPE_UNIT or
  !>   \p HIPSPARSE_DIAG_TYPE_NON_UNIT.
  interface hipsparseSetMatDiagType
#ifdef USE_CUDA_NAMES
    function hipsparseSetMatDiagType_(descrA,diagType) bind(c, name="cusparseSetMatDiagType")
#else
    function hipsparseSetMatDiagType_(descrA,diagType) bind(c, name="hipsparseSetMatDiagType")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSetMatDiagType_
      type(c_ptr),value :: descrA
      integer(kind(HIPSPARSE_DIAG_TYPE_NON_UNIT)),value :: diagType
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Specify the index base of a matrix descriptor
  !> 
  !>   \details
  !>   \p hipsparseSetMatIndexBase sets the index base of a matrix descriptor. Valid
  !>   options are \p HIPSPARSE_INDEX_BASE_ZERO or \p HIPSPARSE_INDEX_BASE_ONE.
  interface hipsparseSetMatIndexBase
#ifdef USE_CUDA_NAMES
    function hipsparseSetMatIndexBase_(descrA,base) bind(c, name="cusparseSetMatIndexBase")
#else
    function hipsparseSetMatIndexBase_(descrA,base) bind(c, name="hipsparseSetMatIndexBase")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSetMatIndexBase_
      type(c_ptr),value :: descrA
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: base
    end function

  end interface
  
  interface hipsparseCreateHybMat
#ifdef USE_CUDA_NAMES
    function hipsparseCreateHybMat_(hybA) bind(c, name="cusparseCreateHybMat")
#else
    function hipsparseCreateHybMat_(hybA) bind(c, name="hipsparseCreateHybMat")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateHybMat_
      type(c_ptr) :: hybA
    end function

  end interface
  
  interface hipsparseDestroyHybMat
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyHybMat_(hybA) bind(c, name="cusparseDestroyHybMat")
#else
    function hipsparseDestroyHybMat_(hybA) bind(c, name="hipsparseDestroyHybMat")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyHybMat_
      type(c_ptr),value :: hybA
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a bsrsv2 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateBsrsv2Info creates a structure that holds the bsrsv2 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyBsrsv2Info().
  interface hipsparseCreateBsrsv2Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateBsrsv2Info_(myInfo) bind(c, name="cusparseCreateBsrsv2Info")
#else
    function hipsparseCreateBsrsv2Info_(myInfo) bind(c, name="hipsparseCreateBsrsv2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateBsrsv2Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a bsrsv2 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyBsrsv2Info destroys a bsrsv2 info structure.
  interface hipsparseDestroyBsrsv2Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyBsrsv2Info_(myInfo) bind(c, name="cusparseDestroyBsrsv2Info")
#else
    function hipsparseDestroyBsrsv2Info_(myInfo) bind(c, name="hipsparseDestroyBsrsv2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyBsrsv2Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a bsrsm2 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateBsrsm2Info creates a structure that holds the bsrsm2 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyBsrsm2Info().
  interface hipsparseCreateBsrsm2Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateBsrsm2Info_(myInfo) bind(c, name="cusparseCreateBsrsm2Info")
#else
    function hipsparseCreateBsrsm2Info_(myInfo) bind(c, name="hipsparseCreateBsrsm2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateBsrsm2Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a bsrsm2 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyBsrsm2Info destroys a bsrsm2 info structure.
  interface hipsparseDestroyBsrsm2Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyBsrsm2Info_(myInfo) bind(c, name="cusparseDestroyBsrsm2Info")
#else
    function hipsparseDestroyBsrsm2Info_(myInfo) bind(c, name="hipsparseDestroyBsrsm2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyBsrsm2Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a bsrilu02 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateBsrilu02Info creates a structure that holds the bsrilu02 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyBsrilu02Info().
  interface hipsparseCreateBsrilu02Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateBsrilu02Info_(myInfo) bind(c, name="cusparseCreateBsrilu02Info")
#else
    function hipsparseCreateBsrilu02Info_(myInfo) bind(c, name="hipsparseCreateBsrilu02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateBsrilu02Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a bsrilu02 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyBsrilu02Info destroys a bsrilu02 info structure.
  interface hipsparseDestroyBsrilu02Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyBsrilu02Info_(myInfo) bind(c, name="cusparseDestroyBsrilu02Info")
#else
    function hipsparseDestroyBsrilu02Info_(myInfo) bind(c, name="hipsparseDestroyBsrilu02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyBsrilu02Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a bsric02 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateBsric02Info creates a structure that holds the bsric02 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyBsric02Info().
  interface hipsparseCreateBsric02Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateBsric02Info_(myInfo) bind(c, name="cusparseCreateBsric02Info")
#else
    function hipsparseCreateBsric02Info_(myInfo) bind(c, name="hipsparseCreateBsric02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateBsric02Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a bsric02 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyBsric02Info destroys a bsric02 info structure.
  interface hipsparseDestroyBsric02Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyBsric02Info_(myInfo) bind(c, name="cusparseDestroyBsric02Info")
#else
    function hipsparseDestroyBsric02Info_(myInfo) bind(c, name="hipsparseDestroyBsric02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyBsric02Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a csrsv2 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateCsrsv2Info creates a structure that holds the csrsv2 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyCsrsv2Info().
  interface hipsparseCreateCsrsv2Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsrsv2Info_(myInfo) bind(c, name="cusparseCreateCsrsv2Info")
#else
    function hipsparseCreateCsrsv2Info_(myInfo) bind(c, name="hipsparseCreateCsrsv2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsrsv2Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a csrsv2 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyCsrsv2Info destroys a csrsv2 info structure.
  interface hipsparseDestroyCsrsv2Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyCsrsv2Info_(myInfo) bind(c, name="cusparseDestroyCsrsv2Info")
#else
    function hipsparseDestroyCsrsv2Info_(myInfo) bind(c, name="hipsparseDestroyCsrsv2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyCsrsv2Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a csrsm2 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateCsrsm2Info creates a structure that holds the csrsm2 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyCsrsm2Info().
  interface hipsparseCreateCsrsm2Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsrsm2Info_(myInfo) bind(c, name="cusparseCreateCsrsm2Info")
#else
    function hipsparseCreateCsrsm2Info_(myInfo) bind(c, name="hipsparseCreateCsrsm2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsrsm2Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a csrsm2 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyCsrsm2Info destroys a csrsm2 info structure.
  interface hipsparseDestroyCsrsm2Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyCsrsm2Info_(myInfo) bind(c, name="cusparseDestroyCsrsm2Info")
#else
    function hipsparseDestroyCsrsm2Info_(myInfo) bind(c, name="hipsparseDestroyCsrsm2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyCsrsm2Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a csrilu02 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateCsrilu02Info creates a structure that holds the csrilu02 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyCsrilu02Info().
  interface hipsparseCreateCsrilu02Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsrilu02Info_(myInfo) bind(c, name="cusparseCreateCsrilu02Info")
#else
    function hipsparseCreateCsrilu02Info_(myInfo) bind(c, name="hipsparseCreateCsrilu02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsrilu02Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a csrilu02 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyCsrilu02Info destroys a csrilu02 info structure.
  interface hipsparseDestroyCsrilu02Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyCsrilu02Info_(myInfo) bind(c, name="cusparseDestroyCsrilu02Info")
#else
    function hipsparseDestroyCsrilu02Info_(myInfo) bind(c, name="hipsparseDestroyCsrilu02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyCsrilu02Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a csric02 info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateCsric02Info creates a structure that holds the csric02 info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyCsric02Info().
  interface hipsparseCreateCsric02Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsric02Info_(myInfo) bind(c, name="cusparseCreateCsric02Info")
#else
    function hipsparseCreateCsric02Info_(myInfo) bind(c, name="hipsparseCreateCsric02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsric02Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a csric02 info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyCsric02Info destroys a csric02 info structure.
  interface hipsparseDestroyCsric02Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyCsric02Info_(myInfo) bind(c, name="cusparseDestroyCsric02Info")
#else
    function hipsparseDestroyCsric02Info_(myInfo) bind(c, name="hipsparseDestroyCsric02Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyCsric02Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a csru2csr info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateCsru2csrInfo creates a structure that holds the csru2csr info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyCsru2csrInfo().
  interface hipsparseCreateCsru2csrInfo
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsru2csrInfo_(myInfo) bind(c, name="cusparseCreateCsru2csrInfo")
#else
    function hipsparseCreateCsru2csrInfo_(myInfo) bind(c, name="hipsparseCreateCsru2csrInfo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsru2csrInfo_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a csru2csr info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyCsru2csrInfo destroys a csru2csr info structure.
  interface hipsparseDestroyCsru2csrInfo
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyCsru2csrInfo_(myInfo) bind(c, name="cusparseDestroyCsru2csrInfo")
#else
    function hipsparseDestroyCsru2csrInfo_(myInfo) bind(c, name="hipsparseDestroyCsru2csrInfo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyCsru2csrInfo_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a color info structure
  !> 
  !>   \details
  !>   \p hipsparseCreateColorInfo creates a structure that holds the color info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyColorInfo().
  interface hipsparseCreateColorInfo
#ifdef USE_CUDA_NAMES
    function hipsparseCreateColorInfo_(myInfo) bind(c, name="cusparseCreateColorInfo")
#else
    function hipsparseCreateColorInfo_(myInfo) bind(c, name="hipsparseCreateColorInfo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateColorInfo_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a color info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyColorInfo destroys a color info structure.
  interface hipsparseDestroyColorInfo
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyColorInfo_(myInfo) bind(c, name="cusparseDestroyColorInfo")
#else
    function hipsparseDestroyColorInfo_(myInfo) bind(c, name="hipsparseDestroyColorInfo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyColorInfo_
      type(c_ptr),value :: myInfo
    end function

  end interface
  
  interface hipsparseCreateCsrgemm2Info
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsrgemm2Info_(myInfo) bind(c, name="cusparseCreateCsrgemm2Info")
#else
    function hipsparseCreateCsrgemm2Info_(myInfo) bind(c, name="hipsparseCreateCsrgemm2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsrgemm2Info_
      type(c_ptr) :: myInfo
    end function

  end interface
  
  interface hipsparseDestroyCsrgemm2Info
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyCsrgemm2Info_(myInfo) bind(c, name="cusparseDestroyCsrgemm2Info")
#else
    function hipsparseDestroyCsrgemm2Info_(myInfo) bind(c, name="hipsparseDestroyCsrgemm2Info")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyCsrgemm2Info_
      type(c_ptr),value :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Create a prune info structure
  !> 
  !>   \details
  !>   \p hipsparseCreatePruneInfo creates a structure that holds the prune info data
  !>   that is gathered during the analysis routines available. It should be destroyed
  !>   at the end using hipsparseDestroyPruneInfo().
  interface hipsparseCreatePruneInfo
#ifdef USE_CUDA_NAMES
    function hipsparseCreatePruneInfo_(myInfo) bind(c, name="cusparseCreatePruneInfo")
#else
    function hipsparseCreatePruneInfo_(myInfo) bind(c, name="hipsparseCreatePruneInfo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreatePruneInfo_
      type(c_ptr) :: myInfo
    end function

  end interface
  !>  \ingroup aux_module
  !>   \brief Destroy a prune info structure
  !> 
  !>   \details
  !>   \p hipsparseDestroyPruneInfo destroys a prune info structure.
  interface hipsparseDestroyPruneInfo
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyPruneInfo_(myInfo) bind(c, name="cusparseDestroyPruneInfo")
#else
    function hipsparseDestroyPruneInfo_(myInfo) bind(c, name="hipsparseDestroyPruneInfo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyPruneInfo_
      type(c_ptr),value :: myInfo
    end function

  end interface
  
  interface hipsparseSaxpyi
#ifdef USE_CUDA_NAMES
    function hipsparseSaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="cusparseSaxpyi")
#else
    function hipsparseSaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="hipsparseSaxpyi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSaxpyi_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSaxpyi_rank_0,&
      hipsparseSaxpyi_rank_1
#endif
  end interface
  
  interface hipsparseDaxpyi
#ifdef USE_CUDA_NAMES
    function hipsparseDaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="cusparseDaxpyi")
#else
    function hipsparseDaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="hipsparseDaxpyi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDaxpyi_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDaxpyi_rank_0,&
      hipsparseDaxpyi_rank_1
#endif
  end interface
  
  interface hipsparseCaxpyi
#ifdef USE_CUDA_NAMES
    function hipsparseCaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="cusparseCaxpyi")
#else
    function hipsparseCaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="hipsparseCaxpyi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCaxpyi_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCaxpyi_rank_0,&
      hipsparseCaxpyi_rank_1
#endif
  end interface
  
  interface hipsparseZaxpyi
#ifdef USE_CUDA_NAMES
    function hipsparseZaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="cusparseZaxpyi")
#else
    function hipsparseZaxpyi_(handle,nnz,alpha,xVal,xInd,y,idxBase) bind(c, name="hipsparseZaxpyi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZaxpyi_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZaxpyi_rank_0,&
      hipsparseZaxpyi_rank_1
#endif
  end interface
  
  interface hipsparseSdoti
#ifdef USE_CUDA_NAMES
    function hipsparseSdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="cusparseSdoti")
#else
    function hipsparseSdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="hipsparseSdoti")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdoti_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      type(c_ptr),value :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSdoti_rank_0,&
      hipsparseSdoti_rank_1
#endif
  end interface
  
  interface hipsparseDdoti
#ifdef USE_CUDA_NAMES
    function hipsparseDdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="cusparseDdoti")
#else
    function hipsparseDdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="hipsparseDdoti")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdoti_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      type(c_ptr),value :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDdoti_rank_0,&
      hipsparseDdoti_rank_1
#endif
  end interface
  
  interface hipsparseCdoti
#ifdef USE_CUDA_NAMES
    function hipsparseCdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="cusparseCdoti")
#else
    function hipsparseCdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="hipsparseCdoti")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdoti_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      type(c_ptr),value :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCdoti_rank_0,&
      hipsparseCdoti_rank_1
#endif
  end interface
  
  interface hipsparseZdoti
#ifdef USE_CUDA_NAMES
    function hipsparseZdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="cusparseZdoti")
#else
    function hipsparseZdoti_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="hipsparseZdoti")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdoti_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      type(c_ptr),value :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZdoti_rank_0,&
      hipsparseZdoti_rank_1
#endif
  end interface
  
  interface hipsparseCdotci
#ifdef USE_CUDA_NAMES
    function hipsparseCdotci_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="cusparseCdotci")
#else
    function hipsparseCdotci_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="hipsparseCdotci")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdotci_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      type(c_ptr),value :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCdotci_rank_0,&
      hipsparseCdotci_rank_1
#endif
  end interface
  
  interface hipsparseZdotci
#ifdef USE_CUDA_NAMES
    function hipsparseZdotci_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="cusparseZdotci")
#else
    function hipsparseZdotci_(handle,nnz,xVal,xInd,y,myResult,idxBase) bind(c, name="hipsparseZdotci")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdotci_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      type(c_ptr),value :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZdotci_rank_0,&
      hipsparseZdotci_rank_1
#endif
  end interface
  
  interface hipsparseSgthr
#ifdef USE_CUDA_NAMES
    function hipsparseSgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseSgthr")
#else
    function hipsparseSgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseSgthr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgthr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgthr_rank_0,&
      hipsparseSgthr_rank_1
#endif
  end interface
  
  interface hipsparseDgthr
#ifdef USE_CUDA_NAMES
    function hipsparseDgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseDgthr")
#else
    function hipsparseDgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseDgthr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgthr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgthr_rank_0,&
      hipsparseDgthr_rank_1
#endif
  end interface
  
  interface hipsparseCgthr
#ifdef USE_CUDA_NAMES
    function hipsparseCgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseCgthr")
#else
    function hipsparseCgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseCgthr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgthr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgthr_rank_0,&
      hipsparseCgthr_rank_1
#endif
  end interface
  
  interface hipsparseZgthr
#ifdef USE_CUDA_NAMES
    function hipsparseZgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseZgthr")
#else
    function hipsparseZgthr_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseZgthr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgthr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgthr_rank_0,&
      hipsparseZgthr_rank_1
#endif
  end interface
  
  interface hipsparseSgthrz
#ifdef USE_CUDA_NAMES
    function hipsparseSgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseSgthrz")
#else
    function hipsparseSgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseSgthrz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgthrz_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgthrz_rank_0,&
      hipsparseSgthrz_rank_1
#endif
  end interface
  
  interface hipsparseDgthrz
#ifdef USE_CUDA_NAMES
    function hipsparseDgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseDgthrz")
#else
    function hipsparseDgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseDgthrz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgthrz_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgthrz_rank_0,&
      hipsparseDgthrz_rank_1
#endif
  end interface
  
  interface hipsparseCgthrz
#ifdef USE_CUDA_NAMES
    function hipsparseCgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseCgthrz")
#else
    function hipsparseCgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseCgthrz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgthrz_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgthrz_rank_0,&
      hipsparseCgthrz_rank_1
#endif
  end interface
  
  interface hipsparseZgthrz
#ifdef USE_CUDA_NAMES
    function hipsparseZgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="cusparseZgthrz")
#else
    function hipsparseZgthrz_(handle,nnz,y,xVal,xInd,idxBase) bind(c, name="hipsparseZgthrz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgthrz_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: y
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgthrz_rank_0,&
      hipsparseZgthrz_rank_1
#endif
  end interface
  
  interface hipsparseSroti
#ifdef USE_CUDA_NAMES
    function hipsparseSroti_(handle,nnz,xVal,xInd,y,c,s,idxBase) bind(c, name="cusparseSroti")
#else
    function hipsparseSroti_(handle,nnz,xVal,xInd,y,c,s,idxBase) bind(c, name="hipsparseSroti")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSroti_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      real(c_float) :: c
      real(c_float) :: s
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSroti_rank_0,&
      hipsparseSroti_rank_1
#endif
  end interface
  
  interface hipsparseDroti
#ifdef USE_CUDA_NAMES
    function hipsparseDroti_(handle,nnz,xVal,xInd,y,c,s,idxBase) bind(c, name="cusparseDroti")
#else
    function hipsparseDroti_(handle,nnz,xVal,xInd,y,c,s,idxBase) bind(c, name="hipsparseDroti")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDroti_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      real(c_double) :: c
      real(c_double) :: s
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDroti_rank_0,&
      hipsparseDroti_rank_1
#endif
  end interface
  
  interface hipsparseSsctr
#ifdef USE_CUDA_NAMES
    function hipsparseSsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="cusparseSsctr")
#else
    function hipsparseSsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="hipsparseSsctr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSsctr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSsctr_rank_0,&
      hipsparseSsctr_rank_1
#endif
  end interface
  
  interface hipsparseDsctr
#ifdef USE_CUDA_NAMES
    function hipsparseDsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="cusparseDsctr")
#else
    function hipsparseDsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="hipsparseDsctr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDsctr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDsctr_rank_0,&
      hipsparseDsctr_rank_1
#endif
  end interface
  
  interface hipsparseCsctr
#ifdef USE_CUDA_NAMES
    function hipsparseCsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="cusparseCsctr")
#else
    function hipsparseCsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="hipsparseCsctr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCsctr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCsctr_rank_0,&
      hipsparseCsctr_rank_1
#endif
  end interface
  
  interface hipsparseZsctr
#ifdef USE_CUDA_NAMES
    function hipsparseZsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="cusparseZsctr")
#else
    function hipsparseZsctr_(handle,nnz,xVal,xInd,y,idxBase) bind(c, name="hipsparseZsctr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZsctr_
      type(c_ptr),value :: handle
      integer(c_int),value :: nnz
      type(c_ptr),value :: xVal
      type(c_ptr),value :: xInd
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZsctr_rank_0,&
      hipsparseZsctr_rank_1
#endif
  end interface
  
  interface hipsparseScsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseScsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="cusparseScsrmv")
#else
    function hipsparseScsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="hipsparseScsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: x
      real(c_float) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrmv_rank_0,&
      hipsparseScsrmv_rank_1
#endif
  end interface
  
  interface hipsparseDcsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="cusparseDcsrmv")
#else
    function hipsparseDcsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="hipsparseDcsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: x
      real(c_double) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrmv_rank_0,&
      hipsparseDcsrmv_rank_1
#endif
  end interface
  
  interface hipsparseCcsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="cusparseCcsrmv")
#else
    function hipsparseCcsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="hipsparseCcsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: x
      complex(c_float_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrmv_rank_0,&
      hipsparseCcsrmv_rank_1
#endif
  end interface
  
  interface hipsparseZcsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="cusparseZcsrmv")
#else
    function hipsparseZcsrmv_(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y) bind(c, name="hipsparseZcsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: x
      complex(c_double_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrmv_rank_0,&
      hipsparseZcsrmv_rank_1
#endif
  end interface
  !>  \ingroup level2_module
  !>   \brief Sparse triangular solve using CSR storage format
  !> 
  !>   \details
  !>   \p hipsparseXcsrsv2_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseScsrsv2_solve(),
  !>   hipsparseDcsrsv2_solve(), hipsparseCcsrsv2_solve() or hipsparseZcsrsv2_solve()
  !>   computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$ is stored in \p position,
  !>   using same index base as the CSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note \p hipsparseXcsrsv2_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXcsrsv2_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrsv2_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXcsrsv2_zeroPivot")
#else
    function hipsparseXcsrsv2_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXcsrsv2_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsv2_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseScsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseScsrsv2_bufferSize")
#else
    function hipsparseScsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseScsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsv2_bufferSize_rank_0,&
      hipsparseScsrsv2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDcsrsv2_bufferSize")
#else
    function hipsparseDcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDcsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsv2_bufferSize_rank_0,&
      hipsparseDcsrsv2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCcsrsv2_bufferSize")
#else
    function hipsparseCcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCcsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsv2_bufferSize_rank_0,&
      hipsparseCcsrsv2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZcsrsv2_bufferSize")
#else
    function hipsparseZcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZcsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsv2_bufferSize_rank_0,&
      hipsparseZcsrsv2_bufferSize_rank_1
#endif
  end interface
  interface hipsparseScsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseScsrsv2_bufferSizeExt")
#else
    function hipsparseScsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseScsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsv2_bufferSizeExt_rank_0,&
      hipsparseScsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseDcsrsv2_bufferSizeExt")
#else
    function hipsparseDcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseDcsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsv2_bufferSizeExt_rank_0,&
      hipsparseDcsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseCcsrsv2_bufferSizeExt")
#else
    function hipsparseCcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseCcsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsv2_bufferSizeExt_rank_0,&
      hipsparseCcsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseZcsrsv2_bufferSizeExt")
#else
    function hipsparseZcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseZcsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsv2_bufferSizeExt_rank_0,&
      hipsparseZcsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseScsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseScsrsv2_analysis")
#else
    function hipsparseScsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseScsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsv2_analysis_rank_0,&
      hipsparseScsrsv2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseDcsrsv2_analysis")
#else
    function hipsparseDcsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsv2_analysis_rank_0,&
      hipsparseDcsrsv2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseCcsrsv2_analysis")
#else
    function hipsparseCcsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsv2_analysis_rank_0,&
      hipsparseCcsrsv2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseZcsrsv2_analysis")
#else
    function hipsparseZcsrsv2_analysis_(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsv2_analysis_rank_0,&
      hipsparseZcsrsv2_analysis_rank_1
#endif
  end interface
  interface hipsparseScsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseScsrsv2_solve")
#else
    function hipsparseScsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseScsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsv2_solve_rank_0,&
      hipsparseScsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseDcsrsv2_solve")
#else
    function hipsparseDcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseDcsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsv2_solve_rank_0,&
      hipsparseDcsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseCcsrsv2_solve")
#else
    function hipsparseCcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseCcsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsv2_solve_rank_0,&
      hipsparseCcsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseZcsrsv2_solve")
#else
    function hipsparseZcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseZcsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsv2_solve_rank_0,&
      hipsparseZcsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseShybmv
#ifdef USE_CUDA_NAMES
    function hipsparseShybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="cusparseShybmv")
#else
    function hipsparseShybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="hipsparseShybmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseShybmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: x
      real(c_float) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseShybmv_rank_0,&
      hipsparseShybmv_rank_1
#endif
  end interface
  
  interface hipsparseDhybmv
#ifdef USE_CUDA_NAMES
    function hipsparseDhybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="cusparseDhybmv")
#else
    function hipsparseDhybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="hipsparseDhybmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDhybmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: x
      real(c_double) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDhybmv_rank_0,&
      hipsparseDhybmv_rank_1
#endif
  end interface
  
  interface hipsparseChybmv
#ifdef USE_CUDA_NAMES
    function hipsparseChybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="cusparseChybmv")
#else
    function hipsparseChybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="hipsparseChybmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseChybmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: x
      complex(c_float_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseChybmv_rank_0,&
      hipsparseChybmv_rank_1
#endif
  end interface
  
  interface hipsparseZhybmv
#ifdef USE_CUDA_NAMES
    function hipsparseZhybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="cusparseZhybmv")
#else
    function hipsparseZhybmv_(handle,transA,alpha,descrA,hybA,x,beta,y) bind(c, name="hipsparseZhybmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZhybmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: x
      complex(c_double_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZhybmv_rank_0,&
      hipsparseZhybmv_rank_1
#endif
  end interface
  interface hipsparseSbsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="cusparseSbsrmv")
#else
    function hipsparseSbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="hipsparseSbsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      real(c_float) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrmv_rank_0,&
      hipsparseSbsrmv_rank_1
#endif
  end interface
  
  interface hipsparseDbsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="cusparseDbsrmv")
#else
    function hipsparseDbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="hipsparseDbsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      real(c_double) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrmv_rank_0,&
      hipsparseDbsrmv_rank_1
#endif
  end interface
  
  interface hipsparseCbsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="cusparseCbsrmv")
#else
    function hipsparseCbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="hipsparseCbsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      complex(c_float_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrmv_rank_0,&
      hipsparseCbsrmv_rank_1
#endif
  end interface
  
  interface hipsparseZbsrmv
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="cusparseZbsrmv")
#else
    function hipsparseZbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y) bind(c, name="hipsparseZbsrmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      complex(c_double_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrmv_rank_0,&
      hipsparseZbsrmv_rank_1
#endif
  end interface
  interface hipsparseSbsrxmv
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="cusparseSbsrxmv")
#else
    function hipsparseSbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="hipsparseSbsrxmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrxmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: trans
      integer(c_int),value :: sizeOfMask
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      real(c_float) :: alpha
      type(c_ptr),value :: descr
      type(c_ptr),value :: bsrVal
      type(c_ptr),value :: bsrMaskPtr
      type(c_ptr),value :: bsrRowPtr
      type(c_ptr),value :: bsrEndPtr
      type(c_ptr),value :: bsrColInd
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      real(c_float) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrxmv_rank_0,&
      hipsparseSbsrxmv_rank_1
#endif
  end interface
  
  interface hipsparseDbsrxmv
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="cusparseDbsrxmv")
#else
    function hipsparseDbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="hipsparseDbsrxmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrxmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: trans
      integer(c_int),value :: sizeOfMask
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      real(c_double) :: alpha
      type(c_ptr),value :: descr
      type(c_ptr),value :: bsrVal
      type(c_ptr),value :: bsrMaskPtr
      type(c_ptr),value :: bsrRowPtr
      type(c_ptr),value :: bsrEndPtr
      type(c_ptr),value :: bsrColInd
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      real(c_double) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrxmv_rank_0,&
      hipsparseDbsrxmv_rank_1
#endif
  end interface
  
  interface hipsparseCbsrxmv
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="cusparseCbsrxmv")
#else
    function hipsparseCbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="hipsparseCbsrxmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrxmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: trans
      integer(c_int),value :: sizeOfMask
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descr
      type(c_ptr),value :: bsrVal
      type(c_ptr),value :: bsrMaskPtr
      type(c_ptr),value :: bsrRowPtr
      type(c_ptr),value :: bsrEndPtr
      type(c_ptr),value :: bsrColInd
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      complex(c_float_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrxmv_rank_0,&
      hipsparseCbsrxmv_rank_1
#endif
  end interface
  
  interface hipsparseZbsrxmv
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="cusparseZbsrxmv")
#else
    function hipsparseZbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y) bind(c, name="hipsparseZbsrxmv")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrxmv_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: trans
      integer(c_int),value :: sizeOfMask
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descr
      type(c_ptr),value :: bsrVal
      type(c_ptr),value :: bsrMaskPtr
      type(c_ptr),value :: bsrRowPtr
      type(c_ptr),value :: bsrEndPtr
      type(c_ptr),value :: bsrColInd
      integer(c_int),value :: blockDim
      type(c_ptr),value :: x
      complex(c_double_complex) :: beta
      type(c_ptr),value :: y
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrxmv_rank_0,&
      hipsparseZbsrxmv_rank_1
#endif
  end interface
  !>  \ingroup level2_module
  !>   \brief Sparse triangular solve using BSR storage format
  !> 
  !>   \details
  !>   \p hipsparseXbsrsv2_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXbsrsv2_analysis() or
  !>   hipsparseXbsrsv2_solve() computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$
  !>   is stored in \p position, using same index base as the BSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note \p hipsparseXbsrsv2_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXbsrsv2_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXbsrsv2_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXbsrsv2_zeroPivot")
#else
    function hipsparseXbsrsv2_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXbsrsv2_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXbsrsv2_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseSbsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseSbsrsv2_bufferSize")
#else
    function hipsparseSbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseSbsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsv2_bufferSize_rank_0,&
      hipsparseSbsrsv2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDbsrsv2_bufferSize")
#else
    function hipsparseDbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDbsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsv2_bufferSize_rank_0,&
      hipsparseDbsrsv2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCbsrsv2_bufferSize")
#else
    function hipsparseCbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCbsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsv2_bufferSize_rank_0,&
      hipsparseCbsrsv2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsv2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZbsrsv2_bufferSize")
#else
    function hipsparseZbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZbsrsv2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsv2_bufferSize_rank_0,&
      hipsparseZbsrsv2_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSbsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="cusparseSbsrsv2_bufferSizeExt")
#else
    function hipsparseSbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="hipsparseSbsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsv2_bufferSizeExt_rank_0,&
      hipsparseSbsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="cusparseDbsrsv2_bufferSizeExt")
#else
    function hipsparseDbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="hipsparseDbsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsv2_bufferSizeExt_rank_0,&
      hipsparseDbsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="cusparseCbsrsv2_bufferSizeExt")
#else
    function hipsparseCbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="hipsparseCbsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsv2_bufferSizeExt_rank_0,&
      hipsparseCbsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="cusparseZbsrsv2_bufferSizeExt")
#else
    function hipsparseZbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize) bind(c, name="hipsparseZbsrsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsv2_bufferSizeExt_rank_0,&
      hipsparseZbsrsv2_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSbsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseSbsrsv2_analysis")
#else
    function hipsparseSbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseSbsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsv2_analysis_rank_0,&
      hipsparseSbsrsv2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseDbsrsv2_analysis")
#else
    function hipsparseDbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseDbsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsv2_analysis_rank_0,&
      hipsparseDbsrsv2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseCbsrsv2_analysis")
#else
    function hipsparseCbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseCbsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsv2_analysis_rank_0,&
      hipsparseCbsrsv2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsv2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseZbsrsv2_analysis")
#else
    function hipsparseZbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseZbsrsv2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsv2_analysis_rank_0,&
      hipsparseZbsrsv2_analysis_rank_1
#endif
  end interface
  interface hipsparseSbsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseSbsrsv2_solve")
#else
    function hipsparseSbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseSbsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsv2_solve_rank_0,&
      hipsparseSbsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseDbsrsv2_solve")
#else
    function hipsparseDbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseDbsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsv2_solve_rank_0,&
      hipsparseDbsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseCbsrsv2_solve")
#else
    function hipsparseCbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseCbsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsv2_solve_rank_0,&
      hipsparseCbsrsv2_solve_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsv2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="cusparseZbsrsv2_solve")
#else
    function hipsparseZbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer) bind(c, name="hipsparseZbsrsv2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: f
      type(c_ptr),value :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsv2_solve_rank_0,&
      hipsparseZbsrsv2_solve_rank_1
#endif
  end interface
  interface hipsparseSgemvi_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="cusparseSgemvi_bufferSize")
#else
    function hipsparseSgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="hipsparseSgemvi_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemvi_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      integer(c_int) :: pBufferSize
    end function

  end interface
  
  interface hipsparseDgemvi_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="cusparseDgemvi_bufferSize")
#else
    function hipsparseDgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="hipsparseDgemvi_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemvi_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      integer(c_int) :: pBufferSize
    end function

  end interface
  
  interface hipsparseCgemvi_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="cusparseCgemvi_bufferSize")
#else
    function hipsparseCgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="hipsparseCgemvi_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemvi_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      integer(c_int) :: pBufferSize
    end function

  end interface
  
  interface hipsparseZgemvi_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="cusparseZgemvi_bufferSize")
#else
    function hipsparseZgemvi_bufferSize_(handle,transA,m,n,nnz,pBufferSize) bind(c, name="hipsparseZgemvi_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemvi_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      integer(c_int) :: pBufferSize
    end function

  end interface
  interface hipsparseSgemvi
#ifdef USE_CUDA_NAMES
    function hipsparseSgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="cusparseSgemvi")
#else
    function hipsparseSgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="hipsparseSgemvi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemvi_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_float) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      integer(c_int),value :: nnz
      type(c_ptr),value :: x
      type(c_ptr),value :: xInd
      real(c_float) :: beta
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgemvi_full_rank,&
      hipsparseSgemvi_rank_0,&
      hipsparseSgemvi_rank_1
#endif
  end interface
  
  interface hipsparseDgemvi
#ifdef USE_CUDA_NAMES
    function hipsparseDgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="cusparseDgemvi")
#else
    function hipsparseDgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="hipsparseDgemvi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemvi_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_double) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      integer(c_int),value :: nnz
      type(c_ptr),value :: x
      type(c_ptr),value :: xInd
      real(c_double) :: beta
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgemvi_full_rank,&
      hipsparseDgemvi_rank_0,&
      hipsparseDgemvi_rank_1
#endif
  end interface
  
  interface hipsparseCgemvi
#ifdef USE_CUDA_NAMES
    function hipsparseCgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="cusparseCgemvi")
#else
    function hipsparseCgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="hipsparseCgemvi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemvi_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      integer(c_int),value :: nnz
      type(c_ptr),value :: x
      type(c_ptr),value :: xInd
      complex(c_float_complex) :: beta
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgemvi_full_rank,&
      hipsparseCgemvi_rank_0,&
      hipsparseCgemvi_rank_1
#endif
  end interface
  
  interface hipsparseZgemvi
#ifdef USE_CUDA_NAMES
    function hipsparseZgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="cusparseZgemvi")
#else
    function hipsparseZgemvi_(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer) bind(c, name="hipsparseZgemvi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemvi_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      integer(c_int),value :: nnz
      type(c_ptr),value :: x
      type(c_ptr),value :: xInd
      complex(c_double_complex) :: beta
      type(c_ptr),value :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgemvi_full_rank,&
      hipsparseZgemvi_rank_0,&
      hipsparseZgemvi_rank_1
#endif
  end interface
  interface hipsparseSbsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="cusparseSbsrmm")
#else
    function hipsparseSbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="hipsparseSbsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: mb
      integer(c_int),value :: n
      integer(c_int),value :: kb
      integer(c_int),value :: nnzb
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      real(c_float) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrmm_full_rank,&
      hipsparseSbsrmm_rank_0,&
      hipsparseSbsrmm_rank_1
#endif
  end interface
  
  interface hipsparseDbsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="cusparseDbsrmm")
#else
    function hipsparseDbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="hipsparseDbsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: mb
      integer(c_int),value :: n
      integer(c_int),value :: kb
      integer(c_int),value :: nnzb
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      real(c_double) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrmm_full_rank,&
      hipsparseDbsrmm_rank_0,&
      hipsparseDbsrmm_rank_1
#endif
  end interface
  
  interface hipsparseCbsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="cusparseCbsrmm")
#else
    function hipsparseCbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="hipsparseCbsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: mb
      integer(c_int),value :: n
      integer(c_int),value :: kb
      integer(c_int),value :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      complex(c_float_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrmm_full_rank,&
      hipsparseCbsrmm_rank_0,&
      hipsparseCbsrmm_rank_1
#endif
  end interface
  
  interface hipsparseZbsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="cusparseZbsrmm")
#else
    function hipsparseZbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc) bind(c, name="hipsparseZbsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: mb
      integer(c_int),value :: n
      integer(c_int),value :: kb
      integer(c_int),value :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      complex(c_double_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrmm_full_rank,&
      hipsparseZbsrmm_rank_0,&
      hipsparseZbsrmm_rank_1
#endif
  end interface
  
  interface hipsparseScsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseScsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseScsrmm")
#else
    function hipsparseScsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseScsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      real(c_float) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrmm_full_rank,&
      hipsparseScsrmm_rank_0,&
      hipsparseScsrmm_rank_1
#endif
  end interface
  
  interface hipsparseDcsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseDcsrmm")
#else
    function hipsparseDcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseDcsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      real(c_double) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrmm_full_rank,&
      hipsparseDcsrmm_rank_0,&
      hipsparseDcsrmm_rank_1
#endif
  end interface
  
  interface hipsparseCcsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseCcsrmm")
#else
    function hipsparseCcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseCcsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      complex(c_float_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrmm_full_rank,&
      hipsparseCcsrmm_rank_0,&
      hipsparseCcsrmm_rank_1
#endif
  end interface
  
  interface hipsparseZcsrmm
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseZcsrmm")
#else
    function hipsparseZcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseZcsrmm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      complex(c_double_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrmm_full_rank,&
      hipsparseZcsrmm_rank_0,&
      hipsparseZcsrmm_rank_1
#endif
  end interface
  
  interface hipsparseScsrmm2
#ifdef USE_CUDA_NAMES
    function hipsparseScsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseScsrmm2")
#else
    function hipsparseScsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseScsrmm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm2_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      real(c_float) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrmm2_full_rank,&
      hipsparseScsrmm2_rank_0,&
      hipsparseScsrmm2_rank_1
#endif
  end interface
  
  interface hipsparseDcsrmm2
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseDcsrmm2")
#else
    function hipsparseDcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseDcsrmm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm2_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      real(c_double) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrmm2_full_rank,&
      hipsparseDcsrmm2_rank_0,&
      hipsparseDcsrmm2_rank_1
#endif
  end interface
  
  interface hipsparseCcsrmm2
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseCcsrmm2")
#else
    function hipsparseCcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseCcsrmm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm2_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      complex(c_float_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrmm2_full_rank,&
      hipsparseCcsrmm2_rank_0,&
      hipsparseCcsrmm2_rank_1
#endif
  end interface
  
  interface hipsparseZcsrmm2
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="cusparseZcsrmm2")
#else
    function hipsparseZcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc) bind(c, name="hipsparseZcsrmm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm2_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      complex(c_double_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrmm2_full_rank,&
      hipsparseZcsrmm2_rank_0,&
      hipsparseZcsrmm2_rank_1
#endif
  end interface
  !>  \ingroup level3_module
  !>   \brief Sparse triangular system solve using BSR storage format
  !> 
  !>   \details
  !>   \p hipsparseXbsrsm2_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXbsrsm2_analysis() or
  !>   hipsparseXbsrsm2_solve() computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$
  !>   is stored in \p position, using same index base as the BSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note \p hipsparseXbsrsm2_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXbsrsm2_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXbsrsm2_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXbsrsm2_zeroPivot")
#else
    function hipsparseXbsrsm2_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXbsrsm2_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXbsrsm2_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseSbsrsm2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseSbsrsm2_bufferSize")
#else
    function hipsparseSbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseSbsrsm2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsm2_bufferSize_rank_0,&
      hipsparseSbsrsm2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsm2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDbsrsm2_bufferSize")
#else
    function hipsparseDbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDbsrsm2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsm2_bufferSize_rank_0,&
      hipsparseDbsrsm2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsm2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCbsrsm2_bufferSize")
#else
    function hipsparseCbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCbsrsm2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsm2_bufferSize_rank_0,&
      hipsparseCbsrsm2_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsm2_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZbsrsm2_bufferSize")
#else
    function hipsparseZbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZbsrsm2_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsm2_bufferSize_rank_0,&
      hipsparseZbsrsm2_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSbsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseSbsrsm2_analysis")
#else
    function hipsparseSbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseSbsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsm2_analysis_rank_0,&
      hipsparseSbsrsm2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseDbsrsm2_analysis")
#else
    function hipsparseDbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseDbsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsm2_analysis_rank_0,&
      hipsparseDbsrsm2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseCbsrsm2_analysis")
#else
    function hipsparseCbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseCbsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsm2_analysis_rank_0,&
      hipsparseCbsrsm2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseZbsrsm2_analysis")
#else
    function hipsparseZbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseZbsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsm2_analysis_rank_0,&
      hipsparseZbsrsm2_analysis_rank_1
#endif
  end interface
  interface hipsparseSbsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="cusparseSbsrsm2_solve")
#else
    function hipsparseSbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="hipsparseSbsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: X
      integer(c_int),value :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrsm2_solve_full_rank,&
      hipsparseSbsrsm2_solve_rank_0,&
      hipsparseSbsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseDbsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="cusparseDbsrsm2_solve")
#else
    function hipsparseDbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="hipsparseDbsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: X
      integer(c_int),value :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrsm2_solve_full_rank,&
      hipsparseDbsrsm2_solve_rank_0,&
      hipsparseDbsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseCbsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="cusparseCbsrsm2_solve")
#else
    function hipsparseCbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="hipsparseCbsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: X
      integer(c_int),value :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrsm2_solve_full_rank,&
      hipsparseCbsrsm2_solve_rank_0,&
      hipsparseCbsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseZbsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="cusparseZbsrsm2_solve")
#else
    function hipsparseZbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer) bind(c, name="hipsparseZbsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transX
      integer(c_int),value :: mb
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: X
      integer(c_int),value :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrsm2_solve_full_rank,&
      hipsparseZbsrsm2_solve_rank_0,&
      hipsparseZbsrsm2_solve_rank_1
#endif
  end interface
  !>  \ingroup level3_module
  !>   \brief Sparse triangular system solve using CSR storage format
  !> 
  !>   \details
  !>   \p hipsparseXcsrsm2_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXcsrsm2_analysis() or
  !>   hipsparseXcsrsm2_solve() computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$
  !>   is stored in \p position, using same index base as the CSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note \p hipsparseXcsrsm2_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXcsrsm2_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrsm2_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXcsrsm2_zeroPivot")
#else
    function hipsparseXcsrsm2_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXcsrsm2_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsm2_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseScsrsm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="cusparseScsrsm2_bufferSizeExt")
#else
    function hipsparseScsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="hipsparseScsrsm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsm2_bufferSizeExt_full_rank,&
      hipsparseScsrsm2_bufferSizeExt_rank_0,&
      hipsparseScsrsm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="cusparseDcsrsm2_bufferSizeExt")
#else
    function hipsparseDcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="hipsparseDcsrsm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsm2_bufferSizeExt_full_rank,&
      hipsparseDcsrsm2_bufferSizeExt_rank_0,&
      hipsparseDcsrsm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="cusparseCcsrsm2_bufferSizeExt")
#else
    function hipsparseCcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="hipsparseCcsrsm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsm2_bufferSizeExt_full_rank,&
      hipsparseCcsrsm2_bufferSizeExt_rank_0,&
      hipsparseCcsrsm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="cusparseZcsrsm2_bufferSizeExt")
#else
    function hipsparseZcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize) bind(c, name="hipsparseZcsrsm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsm2_bufferSizeExt_full_rank,&
      hipsparseZcsrsm2_bufferSizeExt_rank_0,&
      hipsparseZcsrsm2_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseScsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseScsrsm2_analysis")
#else
    function hipsparseScsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseScsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsm2_analysis_full_rank,&
      hipsparseScsrsm2_analysis_rank_0,&
      hipsparseScsrsm2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseDcsrsm2_analysis")
#else
    function hipsparseDcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsm2_analysis_full_rank,&
      hipsparseDcsrsm2_analysis_rank_0,&
      hipsparseDcsrsm2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseCcsrsm2_analysis")
#else
    function hipsparseCcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsm2_analysis_full_rank,&
      hipsparseCcsrsm2_analysis_rank_0,&
      hipsparseCcsrsm2_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsm2_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseZcsrsm2_analysis")
#else
    function hipsparseZcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsrsm2_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsm2_analysis_full_rank,&
      hipsparseZcsrsm2_analysis_rank_0,&
      hipsparseZcsrsm2_analysis_rank_1
#endif
  end interface
  interface hipsparseScsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseScsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseScsrsm2_solve")
#else
    function hipsparseScsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseScsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_solve_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrsm2_solve_full_rank,&
      hipsparseScsrsm2_solve_rank_0,&
      hipsparseScsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseDcsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseDcsrsm2_solve")
#else
    function hipsparseDcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_solve_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrsm2_solve_full_rank,&
      hipsparseDcsrsm2_solve_rank_0,&
      hipsparseDcsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseCcsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseCcsrsm2_solve")
#else
    function hipsparseCcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_solve_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrsm2_solve_full_rank,&
      hipsparseCcsrsm2_solve_rank_0,&
      hipsparseCcsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseZcsrsm2_solve
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="cusparseZcsrsm2_solve")
#else
    function hipsparseZcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsrsm2_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_solve_
      type(c_ptr),value :: handle
      integer(c_int),value :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: nrhs
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrsm2_solve_full_rank,&
      hipsparseZcsrsm2_solve_rank_0,&
      hipsparseZcsrsm2_solve_rank_1
#endif
  end interface
  
  interface hipsparseSgemmi
#ifdef USE_CUDA_NAMES
    function hipsparseSgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="cusparseSgemmi")
#else
    function hipsparseSgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="hipsparseSgemmi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemmi_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      real(c_float) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: cscValB
      type(c_ptr),value :: cscColPtrB
      type(c_ptr),value :: cscRowIndB
      real(c_float) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgemmi_full_rank,&
      hipsparseSgemmi_rank_0,&
      hipsparseSgemmi_rank_1
#endif
  end interface
  
  interface hipsparseDgemmi
#ifdef USE_CUDA_NAMES
    function hipsparseDgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="cusparseDgemmi")
#else
    function hipsparseDgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="hipsparseDgemmi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemmi_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      real(c_double) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: cscValB
      type(c_ptr),value :: cscColPtrB
      type(c_ptr),value :: cscRowIndB
      real(c_double) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgemmi_full_rank,&
      hipsparseDgemmi_rank_0,&
      hipsparseDgemmi_rank_1
#endif
  end interface
  
  interface hipsparseCgemmi
#ifdef USE_CUDA_NAMES
    function hipsparseCgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="cusparseCgemmi")
#else
    function hipsparseCgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="hipsparseCgemmi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemmi_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: cscValB
      type(c_ptr),value :: cscColPtrB
      type(c_ptr),value :: cscRowIndB
      complex(c_float_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgemmi_full_rank,&
      hipsparseCgemmi_rank_0,&
      hipsparseCgemmi_rank_1
#endif
  end interface
  
  interface hipsparseZgemmi
#ifdef USE_CUDA_NAMES
    function hipsparseZgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="cusparseZgemmi")
#else
    function hipsparseZgemmi_(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc) bind(c, name="hipsparseZgemmi")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemmi_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      integer(c_int),value :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: cscValB
      type(c_ptr),value :: cscColPtrB
      type(c_ptr),value :: cscRowIndB
      complex(c_double_complex) :: beta
      type(c_ptr),value :: C
      integer(c_int),value :: ldc
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgemmi_full_rank,&
      hipsparseZgemmi_rank_0,&
      hipsparseZgemmi_rank_1
#endif
  end interface
  
  interface hipsparseXcsrgeamNnz
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrgeamNnz_(handle,m,n,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr) bind(c, name="cusparseXcsrgeamNnz")
#else
    function hipsparseXcsrgeamNnz_(handle,m,n,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr) bind(c, name="hipsparseXcsrgeamNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgeamNnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsrgeamNnz_rank_0,&
      hipsparseXcsrgeamNnz_rank_1
#endif
  end interface
  
  interface hipsparseScsrgeam
#ifdef USE_CUDA_NAMES
    function hipsparseScsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseScsrgeam")
#else
    function hipsparseScsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseScsrgeam")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrgeam_rank_0,&
      hipsparseScsrgeam_rank_1
#endif
  end interface
  
  interface hipsparseDcsrgeam
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseDcsrgeam")
#else
    function hipsparseDcsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseDcsrgeam")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrgeam_rank_0,&
      hipsparseDcsrgeam_rank_1
#endif
  end interface
  
  interface hipsparseCcsrgeam
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseCcsrgeam")
#else
    function hipsparseCcsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseCcsrgeam")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      complex(c_float_complex) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrgeam_rank_0,&
      hipsparseCcsrgeam_rank_1
#endif
  end interface
  
  interface hipsparseZcsrgeam
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseZcsrgeam")
#else
    function hipsparseZcsrgeam_(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseZcsrgeam")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      complex(c_double_complex) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrgeam_rank_0,&
      hipsparseZcsrgeam_rank_1
#endif
  end interface
  interface hipsparseScsrgeam2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="cusparseScsrgeam2_bufferSizeExt")
#else
    function hipsparseScsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="hipsparseScsrgeam2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      real(c_float) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrgeam2_bufferSizeExt_rank_0,&
      hipsparseScsrgeam2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsrgeam2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="cusparseDcsrgeam2_bufferSizeExt")
#else
    function hipsparseDcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="hipsparseDcsrgeam2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      real(c_double) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrgeam2_bufferSizeExt_rank_0,&
      hipsparseDcsrgeam2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsrgeam2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="cusparseCcsrgeam2_bufferSizeExt")
#else
    function hipsparseCcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="hipsparseCcsrgeam2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      complex(c_float_complex) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrgeam2_bufferSizeExt_rank_0,&
      hipsparseCcsrgeam2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsrgeam2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="cusparseZcsrgeam2_bufferSizeExt")
#else
    function hipsparseZcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes) bind(c, name="hipsparseZcsrgeam2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      complex(c_double_complex) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrgeam2_bufferSizeExt_rank_0,&
      hipsparseZcsrgeam2_bufferSizeExt_rank_1
#endif
  end interface
  !>  \ingroup extra_module
  !>   \brief Sparse matrix sparse matrix addition using CSR storage format
  !> 
  !>   \details
  !>   \p hipsparseXcsrgeam2Nnz computes the total CSR non-zero elements and the CSR row
  !>   offsets, that point to the start of every row of the sparse CSR matrix, of the
  !>   resulting matrix C. It is assumed that \p csr_row_ptr_C has been allocated with
  !>   size \p m + 1.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  !>   \note
  !>   Currently, only \p HIPSPARSE_MATRIX_TYPE_GENERAL is supported.
  interface hipsparseXcsrgeam2Nnz
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrgeam2Nnz_(handle,m,n,descrA,nnzA,csrSortedRowPtrA,csrSortedColIndA,descrB,nnzB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedRowPtrC,nnzTotalDevHostPtr,workspace) bind(c, name="cusparseXcsrgeam2Nnz")
#else
    function hipsparseXcsrgeam2Nnz_(handle,m,n,descrA,nnzA,csrSortedRowPtrA,csrSortedColIndA,descrB,nnzB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedRowPtrC,nnzTotalDevHostPtr,workspace) bind(c, name="hipsparseXcsrgeam2Nnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgeam2Nnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: workspace
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsrgeam2Nnz_rank_0,&
      hipsparseXcsrgeam2Nnz_rank_1
#endif
  end interface
  interface hipsparseScsrgeam2
#ifdef USE_CUDA_NAMES
    function hipsparseScsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="cusparseScsrgeam2")
#else
    function hipsparseScsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="hipsparseScsrgeam2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      real(c_float) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrgeam2_rank_0,&
      hipsparseScsrgeam2_rank_1
#endif
  end interface
  
  interface hipsparseDcsrgeam2
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="cusparseDcsrgeam2")
#else
    function hipsparseDcsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="hipsparseDcsrgeam2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      real(c_double) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrgeam2_rank_0,&
      hipsparseDcsrgeam2_rank_1
#endif
  end interface
  
  interface hipsparseCcsrgeam2
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="cusparseCcsrgeam2")
#else
    function hipsparseCcsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="hipsparseCcsrgeam2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      complex(c_float_complex) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrgeam2_rank_0,&
      hipsparseCcsrgeam2_rank_1
#endif
  end interface
  
  interface hipsparseZcsrgeam2
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="cusparseZcsrgeam2")
#else
    function hipsparseZcsrgeam2_(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer) bind(c, name="hipsparseZcsrgeam2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      complex(c_double_complex) :: beta
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrSortedValB
      type(c_ptr),value :: csrSortedRowPtrB
      type(c_ptr),value :: csrSortedColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrSortedValC
      type(c_ptr),value :: csrSortedRowPtrC
      type(c_ptr),value :: csrSortedColIndC
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrgeam2_rank_0,&
      hipsparseZcsrgeam2_rank_1
#endif
  end interface
  
  interface hipsparseXcsrgemmNnz
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrgemmNnz_(handle,transA,transB,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr) bind(c, name="cusparseXcsrgemmNnz")
#else
    function hipsparseXcsrgemmNnz_(handle,transA,transB,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr) bind(c, name="hipsparseXcsrgemmNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgemmNnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsrgemmNnz_rank_0,&
      hipsparseXcsrgemmNnz_rank_1
#endif
  end interface
  
  interface hipsparseScsrgemm
#ifdef USE_CUDA_NAMES
    function hipsparseScsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseScsrgemm")
#else
    function hipsparseScsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseScsrgemm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrgemm_rank_0,&
      hipsparseScsrgemm_rank_1
#endif
  end interface
  
  interface hipsparseDcsrgemm
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseDcsrgemm")
#else
    function hipsparseDcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseDcsrgemm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrgemm_rank_0,&
      hipsparseDcsrgemm_rank_1
#endif
  end interface
  
  interface hipsparseCcsrgemm
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseCcsrgemm")
#else
    function hipsparseCcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseCcsrgemm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrgemm_rank_0,&
      hipsparseCcsrgemm_rank_1
#endif
  end interface
  
  interface hipsparseZcsrgemm
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseZcsrgemm")
#else
    function hipsparseZcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseZcsrgemm")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: transB
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrgemm_rank_0,&
      hipsparseZcsrgemm_rank_1
#endif
  end interface
  
  interface hipsparseScsrgemm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="cusparseScsrgemm2_bufferSizeExt")
#else
    function hipsparseScsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseScsrgemm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      real(c_float) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrgemm2_bufferSizeExt_rank_0,&
      hipsparseScsrgemm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsrgemm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDcsrgemm2_bufferSizeExt")
#else
    function hipsparseDcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDcsrgemm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      real(c_double) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrgemm2_bufferSizeExt_rank_0,&
      hipsparseDcsrgemm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsrgemm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCcsrgemm2_bufferSizeExt")
#else
    function hipsparseCcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCcsrgemm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      complex(c_float_complex) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrgemm2_bufferSizeExt_rank_0,&
      hipsparseCcsrgemm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsrgemm2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZcsrgemm2_bufferSizeExt")
#else
    function hipsparseZcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZcsrgemm2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      complex(c_double_complex) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrgemm2_bufferSizeExt_rank_0,&
      hipsparseZcsrgemm2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseXcsrgemm2Nnz
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrgemm2Nnz_(handle,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrD,nnzD,csrRowPtrD,csrColIndD,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,pBuffer) bind(c, name="cusparseXcsrgemm2Nnz")
#else
    function hipsparseXcsrgemm2Nnz_(handle,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrD,nnzD,csrRowPtrD,csrColIndD,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,pBuffer) bind(c, name="hipsparseXcsrgemm2Nnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgemm2Nnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsrgemm2Nnz_rank_0,&
      hipsparseXcsrgemm2Nnz_rank_1
#endif
  end interface
  
  interface hipsparseScsrgemm2
#ifdef USE_CUDA_NAMES
    function hipsparseScsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="cusparseScsrgemm2")
#else
    function hipsparseScsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="hipsparseScsrgemm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      real(c_float) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      real(c_float) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrValD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrgemm2_rank_0,&
      hipsparseScsrgemm2_rank_1
#endif
  end interface
  
  interface hipsparseDcsrgemm2
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="cusparseDcsrgemm2")
#else
    function hipsparseDcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="hipsparseDcsrgemm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      real(c_double) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      real(c_double) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrValD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrgemm2_rank_0,&
      hipsparseDcsrgemm2_rank_1
#endif
  end interface
  
  interface hipsparseCcsrgemm2
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="cusparseCcsrgemm2")
#else
    function hipsparseCcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="hipsparseCcsrgemm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      complex(c_float_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      complex(c_float_complex) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrValD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrgemm2_rank_0,&
      hipsparseCcsrgemm2_rank_1
#endif
  end interface
  
  interface hipsparseZcsrgemm2
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="cusparseZcsrgemm2")
#else
    function hipsparseZcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer) bind(c, name="hipsparseZcsrgemm2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: k
      complex(c_double_complex) :: alpha
      type(c_ptr),value :: descrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: descrB
      integer(c_int),value :: nnzB
      type(c_ptr),value :: csrValB
      type(c_ptr),value :: csrRowPtrB
      type(c_ptr),value :: csrColIndB
      complex(c_double_complex) :: beta
      type(c_ptr),value :: descrD
      integer(c_int),value :: nnzD
      type(c_ptr),value :: csrValD
      type(c_ptr),value :: csrRowPtrD
      type(c_ptr),value :: csrColIndD
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrgemm2_rank_0,&
      hipsparseZcsrgemm2_rank_1
#endif
  end interface
  !>  \ingroup precond_module
  !>   \brief Incomplete LU factorization with 0 fill-ins and no pivoting using BSR storage
  !>   format
  !> 
  !>   \details
  !>   \p hipsparseXbsrilu02_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXbsrilu02_analysis() or
  !>   hipsparseXbsrilu02() computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$ is
  !>   stored in \p position, using same index base as the BSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note
  !>   If a zero pivot is found, \p position \f$=j\f$ means that either the diagonal block
  !>   \f$A_{j,j}\f$ is missing (structural zero) or the diagonal block \f$A_{j,j}\f$ is not
  !>   invertible (numerical zero).
  !> 
  !>   \note \p hipsparseXbsrilu02_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXbsrilu02_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXbsrilu02_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXbsrilu02_zeroPivot")
#else
    function hipsparseXbsrilu02_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXbsrilu02_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXbsrilu02_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseSbsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseSbsrilu02_numericBoost")
#else
    function hipsparseSbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseSbsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      real(c_float) :: boost_val
    end function

  end interface
  
  interface hipsparseDbsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseDbsrilu02_numericBoost")
#else
    function hipsparseDbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseDbsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      real(c_double) :: boost_val
    end function

  end interface
  
  interface hipsparseCbsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseCbsrilu02_numericBoost")
#else
    function hipsparseCbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseCbsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      complex(c_float_complex) :: boost_val
    end function

  end interface
  
  interface hipsparseZbsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseZbsrilu02_numericBoost")
#else
    function hipsparseZbsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseZbsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      complex(c_double_complex) :: boost_val
    end function

  end interface
  interface hipsparseSbsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseSbsrilu02_bufferSize")
#else
    function hipsparseSbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseSbsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrilu02_bufferSize_rank_0,&
      hipsparseSbsrilu02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDbsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDbsrilu02_bufferSize")
#else
    function hipsparseDbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDbsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrilu02_bufferSize_rank_0,&
      hipsparseDbsrilu02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCbsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCbsrilu02_bufferSize")
#else
    function hipsparseCbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCbsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrilu02_bufferSize_rank_0,&
      hipsparseCbsrilu02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZbsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZbsrilu02_bufferSize")
#else
    function hipsparseZbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZbsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrilu02_bufferSize_rank_0,&
      hipsparseZbsrilu02_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSbsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseSbsrilu02_analysis")
#else
    function hipsparseSbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseSbsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrilu02_analysis_rank_0,&
      hipsparseSbsrilu02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDbsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseDbsrilu02_analysis")
#else
    function hipsparseDbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseDbsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrilu02_analysis_rank_0,&
      hipsparseDbsrilu02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCbsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseCbsrilu02_analysis")
#else
    function hipsparseCbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseCbsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrilu02_analysis_rank_0,&
      hipsparseCbsrilu02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZbsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseZbsrilu02_analysis")
#else
    function hipsparseZbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseZbsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrilu02_analysis_rank_0,&
      hipsparseZbsrilu02_analysis_rank_1
#endif
  end interface
  interface hipsparseSbsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseSbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseSbsrilu02")
#else
    function hipsparseSbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseSbsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA_valM
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsrilu02_rank_0,&
      hipsparseSbsrilu02_rank_1
#endif
  end interface
  
  interface hipsparseDbsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseDbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseDbsrilu02")
#else
    function hipsparseDbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseDbsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA_valM
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsrilu02_rank_0,&
      hipsparseDbsrilu02_rank_1
#endif
  end interface
  
  interface hipsparseCbsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseCbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseCbsrilu02")
#else
    function hipsparseCbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseCbsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA_valM
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsrilu02_rank_0,&
      hipsparseCbsrilu02_rank_1
#endif
  end interface
  
  interface hipsparseZbsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseZbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseZbsrilu02")
#else
    function hipsparseZbsrilu02_(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseZbsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrSortedValA_valM
      type(c_ptr),value :: bsrSortedRowPtrA
      type(c_ptr),value :: bsrSortedColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsrilu02_rank_0,&
      hipsparseZbsrilu02_rank_1
#endif
  end interface
  !>  \ingroup precond_module
  !>   \brief Incomplete LU factorization with 0 fill-ins and no pivoting using CSR
  !>   storage format
  !> 
  !>   \details
  !>   \p hipsparseXcsrilu02_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXcsrilu02() computation.
  !>   The first zero pivot \f$j\f$ at \f$A_{j,j}\f$ is stored in \p position, using same
  !>   index base as the CSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note \p hipsparseXcsrilu02_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXcsrilu02_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrilu02_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXcsrilu02_zeroPivot")
#else
    function hipsparseXcsrilu02_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXcsrilu02_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrilu02_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseScsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseScsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseScsrilu02_numericBoost")
#else
    function hipsparseScsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseScsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      real(c_float) :: boost_val
    end function

  end interface
  
  interface hipsparseDcsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseDcsrilu02_numericBoost")
#else
    function hipsparseDcsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseDcsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      real(c_double) :: boost_val
    end function

  end interface
  
  interface hipsparseCcsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseCcsrilu02_numericBoost")
#else
    function hipsparseCcsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseCcsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      complex(c_float_complex) :: boost_val
    end function

  end interface
  
  interface hipsparseZcsrilu02_numericBoost
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="cusparseZcsrilu02_numericBoost")
#else
    function hipsparseZcsrilu02_numericBoost_(handle,myInfo,enable_boost,tol,boost_val) bind(c, name="hipsparseZcsrilu02_numericBoost")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_numericBoost_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int),value :: enable_boost
      real(c_double) :: tol
      complex(c_double_complex) :: boost_val
    end function

  end interface
  interface hipsparseScsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseScsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseScsrilu02_bufferSize")
#else
    function hipsparseScsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseScsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrilu02_bufferSize_rank_0,&
      hipsparseScsrilu02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDcsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDcsrilu02_bufferSize")
#else
    function hipsparseDcsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDcsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrilu02_bufferSize_rank_0,&
      hipsparseDcsrilu02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCcsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCcsrilu02_bufferSize")
#else
    function hipsparseCcsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCcsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrilu02_bufferSize_rank_0,&
      hipsparseCcsrilu02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZcsrilu02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZcsrilu02_bufferSize")
#else
    function hipsparseZcsrilu02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZcsrilu02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrilu02_bufferSize_rank_0,&
      hipsparseZcsrilu02_bufferSize_rank_1
#endif
  end interface
  interface hipsparseScsrilu02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseScsrilu02_bufferSizeExt")
#else
    function hipsparseScsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseScsrilu02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrilu02_bufferSizeExt_rank_0,&
      hipsparseScsrilu02_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsrilu02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseDcsrilu02_bufferSizeExt")
#else
    function hipsparseDcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseDcsrilu02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrilu02_bufferSizeExt_rank_0,&
      hipsparseDcsrilu02_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsrilu02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseCcsrilu02_bufferSizeExt")
#else
    function hipsparseCcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseCcsrilu02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrilu02_bufferSizeExt_rank_0,&
      hipsparseCcsrilu02_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsrilu02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseZcsrilu02_bufferSizeExt")
#else
    function hipsparseZcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseZcsrilu02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrilu02_bufferSizeExt_rank_0,&
      hipsparseZcsrilu02_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseScsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseScsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseScsrilu02_analysis")
#else
    function hipsparseScsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseScsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrilu02_analysis_rank_0,&
      hipsparseScsrilu02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDcsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseDcsrilu02_analysis")
#else
    function hipsparseDcsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrilu02_analysis_rank_0,&
      hipsparseDcsrilu02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCcsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseCcsrilu02_analysis")
#else
    function hipsparseCcsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrilu02_analysis_rank_0,&
      hipsparseCcsrilu02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZcsrilu02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseZcsrilu02_analysis")
#else
    function hipsparseZcsrilu02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsrilu02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrilu02_analysis_rank_0,&
      hipsparseZcsrilu02_analysis_rank_1
#endif
  end interface
  interface hipsparseScsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseScsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseScsrilu02")
#else
    function hipsparseScsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseScsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrilu02_rank_0,&
      hipsparseScsrilu02_rank_1
#endif
  end interface
  
  interface hipsparseDcsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseDcsrilu02")
#else
    function hipsparseDcsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrilu02_rank_0,&
      hipsparseDcsrilu02_rank_1
#endif
  end interface
  
  interface hipsparseCcsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseCcsrilu02")
#else
    function hipsparseCcsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrilu02_rank_0,&
      hipsparseCcsrilu02_rank_1
#endif
  end interface
  
  interface hipsparseZcsrilu02
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseZcsrilu02")
#else
    function hipsparseZcsrilu02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsrilu02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrilu02_rank_0,&
      hipsparseZcsrilu02_rank_1
#endif
  end interface
  !>  \ingroup precond_module
  !>   \brief Incomplete Cholesky factorization with 0 fill-ins and no pivoting using BSR
  !>   storage format
  !> 
  !>   \details
  !>   \p hipsparseXbsric02_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXbsric02_analysis() or
  !>   hipsparseXbsric02() computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$ is
  !>   stored in \p position, using same index base as the BSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note
  !>   If a zero pivot is found, \p position=j means that either the diagonal block \p A(j,j)
  !>   is missing (structural zero) or the diagonal block \p A(j,j) is not positive definite
  !>   (numerical zero).
  !> 
  !>   \note \p hipsparseXbsric02_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXbsric02_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXbsric02_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXbsric02_zeroPivot")
#else
    function hipsparseXbsric02_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXbsric02_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXbsric02_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseSbsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseSbsric02_bufferSize")
#else
    function hipsparseSbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseSbsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsric02_bufferSize_rank_0,&
      hipsparseSbsric02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDbsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDbsric02_bufferSize")
#else
    function hipsparseDbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDbsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsric02_bufferSize_rank_0,&
      hipsparseDbsric02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCbsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCbsric02_bufferSize")
#else
    function hipsparseCbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCbsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsric02_bufferSize_rank_0,&
      hipsparseCbsric02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZbsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZbsric02_bufferSize")
#else
    function hipsparseZbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZbsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsric02_bufferSize_rank_0,&
      hipsparseZbsric02_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSbsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseSbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseSbsric02_analysis")
#else
    function hipsparseSbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseSbsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsric02_analysis_rank_0,&
      hipsparseSbsric02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDbsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseDbsric02_analysis")
#else
    function hipsparseDbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseDbsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsric02_analysis_rank_0,&
      hipsparseDbsric02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCbsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseCbsric02_analysis")
#else
    function hipsparseCbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseCbsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsric02_analysis_rank_0,&
      hipsparseCbsric02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZbsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseZbsric02_analysis")
#else
    function hipsparseZbsric02_analysis_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseZbsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsric02_analysis_rank_0,&
      hipsparseZbsric02_analysis_rank_1
#endif
  end interface
  interface hipsparseSbsric02
#ifdef USE_CUDA_NAMES
    function hipsparseSbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseSbsric02")
#else
    function hipsparseSbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseSbsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsric02_rank_0,&
      hipsparseSbsric02_rank_1
#endif
  end interface
  
  interface hipsparseDbsric02
#ifdef USE_CUDA_NAMES
    function hipsparseDbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseDbsric02")
#else
    function hipsparseDbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseDbsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsric02_rank_0,&
      hipsparseDbsric02_rank_1
#endif
  end interface
  
  interface hipsparseCbsric02
#ifdef USE_CUDA_NAMES
    function hipsparseCbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseCbsric02")
#else
    function hipsparseCbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseCbsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsric02_rank_0,&
      hipsparseCbsric02_rank_1
#endif
  end interface
  
  interface hipsparseZbsric02
#ifdef USE_CUDA_NAMES
    function hipsparseZbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="cusparseZbsric02")
#else
    function hipsparseZbsric02_(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer) bind(c, name="hipsparseZbsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsric02_rank_0,&
      hipsparseZbsric02_rank_1
#endif
  end interface
  !>  \ingroup precond_module
  !>   \brief Incomplete Cholesky factorization with 0 fill-ins and no pivoting using CSR
  !>   storage format
  !> 
  !>   \details
  !>   \p hipsparseXcsric02_zeroPivot returns \p HIPSPARSE_STATUS_ZERO_PIVOT, if either a
  !>   structural or numerical zero has been found during hipsparseXcsric02_analysis() or
  !>   hipsparseXcsric02() computation. The first zero pivot \f$j\f$ at \f$A_{j,j}\f$
  !>   is stored in \p position, using same index base as the CSR matrix.
  !> 
  !>   \p position can be in host or device memory. If no zero pivot has been found,
  !>   \p position is set to -1 and \p HIPSPARSE_STATUS_SUCCESS is returned instead.
  !> 
  !>   \note \p hipsparseXcsric02_zeroPivot is a blocking function. It might influence
  !>   performance negatively.
  interface hipsparseXcsric02_zeroPivot
#ifdef USE_CUDA_NAMES
    function hipsparseXcsric02_zeroPivot_(handle,myInfo,position) bind(c, name="cusparseXcsric02_zeroPivot")
#else
    function hipsparseXcsric02_zeroPivot_(handle,myInfo,position) bind(c, name="hipsparseXcsric02_zeroPivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsric02_zeroPivot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: myInfo
      integer(c_int) :: position
    end function

  end interface
  interface hipsparseScsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseScsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseScsric02_bufferSize")
#else
    function hipsparseScsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseScsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsric02_bufferSize_rank_0,&
      hipsparseScsric02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDcsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDcsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDcsric02_bufferSize")
#else
    function hipsparseDcsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDcsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsric02_bufferSize_rank_0,&
      hipsparseDcsric02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCcsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCcsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCcsric02_bufferSize")
#else
    function hipsparseCcsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCcsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsric02_bufferSize_rank_0,&
      hipsparseCcsric02_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZcsric02_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZcsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZcsric02_bufferSize")
#else
    function hipsparseZcsric02_bufferSize_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZcsric02_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_int) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsric02_bufferSize_rank_0,&
      hipsparseZcsric02_bufferSize_rank_1
#endif
  end interface
  interface hipsparseScsric02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseScsric02_bufferSizeExt")
#else
    function hipsparseScsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseScsric02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsric02_bufferSizeExt_rank_0,&
      hipsparseScsric02_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsric02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseDcsric02_bufferSizeExt")
#else
    function hipsparseDcsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseDcsric02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsric02_bufferSizeExt_rank_0,&
      hipsparseDcsric02_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsric02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseCcsric02_bufferSizeExt")
#else
    function hipsparseCcsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseCcsric02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsric02_bufferSizeExt_rank_0,&
      hipsparseCcsric02_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsric02_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="cusparseZcsric02_bufferSizeExt")
#else
    function hipsparseZcsric02_bufferSizeExt_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize) bind(c, name="hipsparseZcsric02_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsric02_bufferSizeExt_rank_0,&
      hipsparseZcsric02_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseScsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseScsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseScsric02_analysis")
#else
    function hipsparseScsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseScsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsric02_analysis_rank_0,&
      hipsparseScsric02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseDcsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDcsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseDcsric02_analysis")
#else
    function hipsparseDcsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsric02_analysis_rank_0,&
      hipsparseDcsric02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseCcsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseCcsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseCcsric02_analysis")
#else
    function hipsparseCcsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsric02_analysis_rank_0,&
      hipsparseCcsric02_analysis_rank_1
#endif
  end interface
  
  interface hipsparseZcsric02_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseZcsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseZcsric02_analysis")
#else
    function hipsparseZcsric02_analysis_(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsric02_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_analysis_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsric02_analysis_rank_0,&
      hipsparseZcsric02_analysis_rank_1
#endif
  end interface
  interface hipsparseScsric02
#ifdef USE_CUDA_NAMES
    function hipsparseScsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseScsric02")
#else
    function hipsparseScsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseScsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsric02_rank_0,&
      hipsparseScsric02_rank_1
#endif
  end interface
  
  interface hipsparseDcsric02
#ifdef USE_CUDA_NAMES
    function hipsparseDcsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseDcsric02")
#else
    function hipsparseDcsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseDcsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsric02_rank_0,&
      hipsparseDcsric02_rank_1
#endif
  end interface
  
  interface hipsparseCcsric02
#ifdef USE_CUDA_NAMES
    function hipsparseCcsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseCcsric02")
#else
    function hipsparseCcsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseCcsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsric02_rank_0,&
      hipsparseCcsric02_rank_1
#endif
  end interface
  
  interface hipsparseZcsric02
#ifdef USE_CUDA_NAMES
    function hipsparseZcsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="cusparseZcsric02")
#else
    function hipsparseZcsric02_(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer) bind(c, name="hipsparseZcsric02")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA_valM
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)),value :: policy
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsric02_rank_0,&
      hipsparseZcsric02_rank_1
#endif
  end interface
  interface hipsparseSgtsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="cusparseSgtsv2_bufferSizeExt")
#else
    function hipsparseSgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="hipsparseSgtsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgtsv2_bufferSizeExt_full_rank,&
      hipsparseSgtsv2_bufferSizeExt_rank_0,&
      hipsparseSgtsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDgtsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes) bind(c, name="cusparseDgtsv2_bufferSizeExt")
#else
    function hipsparseDgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes) bind(c, name="hipsparseDgtsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: db
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgtsv2_bufferSizeExt_full_rank,&
      hipsparseDgtsv2_bufferSizeExt_rank_0,&
      hipsparseDgtsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCgtsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="cusparseCgtsv2_bufferSizeExt")
#else
    function hipsparseCgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="hipsparseCgtsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgtsv2_bufferSizeExt_full_rank,&
      hipsparseCgtsv2_bufferSizeExt_rank_0,&
      hipsparseCgtsv2_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZgtsv2_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="cusparseZgtsv2_bufferSizeExt")
#else
    function hipsparseZgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="hipsparseZgtsv2_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgtsv2_bufferSizeExt_full_rank,&
      hipsparseZgtsv2_bufferSizeExt_rank_0,&
      hipsparseZgtsv2_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSgtsv2
#ifdef USE_CUDA_NAMES
    function hipsparseSgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseSgtsv2")
#else
    function hipsparseSgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseSgtsv2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgtsv2_full_rank,&
      hipsparseSgtsv2_rank_0,&
      hipsparseSgtsv2_rank_1
#endif
  end interface
  
  interface hipsparseDgtsv2
#ifdef USE_CUDA_NAMES
    function hipsparseDgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseDgtsv2")
#else
    function hipsparseDgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseDgtsv2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgtsv2_full_rank,&
      hipsparseDgtsv2_rank_0,&
      hipsparseDgtsv2_rank_1
#endif
  end interface
  
  interface hipsparseCgtsv2
#ifdef USE_CUDA_NAMES
    function hipsparseCgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseCgtsv2")
#else
    function hipsparseCgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseCgtsv2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgtsv2_full_rank,&
      hipsparseCgtsv2_rank_0,&
      hipsparseCgtsv2_rank_1
#endif
  end interface
  
  interface hipsparseZgtsv2
#ifdef USE_CUDA_NAMES
    function hipsparseZgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseZgtsv2")
#else
    function hipsparseZgtsv2_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseZgtsv2")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgtsv2_full_rank,&
      hipsparseZgtsv2_rank_0,&
      hipsparseZgtsv2_rank_1
#endif
  end interface
  interface hipsparseSgtsv2_nopivot_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="cusparseSgtsv2_nopivot_bufferSizeExt")
#else
    function hipsparseSgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="hipsparseSgtsv2_nopivot_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgtsv2_nopivot_bufferSizeExt_full_rank,&
      hipsparseSgtsv2_nopivot_bufferSizeExt_rank_0,&
      hipsparseSgtsv2_nopivot_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDgtsv2_nopivot_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes) bind(c, name="cusparseDgtsv2_nopivot_bufferSizeExt")
#else
    function hipsparseDgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes) bind(c, name="hipsparseDgtsv2_nopivot_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: db
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgtsv2_nopivot_bufferSizeExt_full_rank,&
      hipsparseDgtsv2_nopivot_bufferSizeExt_rank_0,&
      hipsparseDgtsv2_nopivot_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCgtsv2_nopivot_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="cusparseCgtsv2_nopivot_bufferSizeExt")
#else
    function hipsparseCgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="hipsparseCgtsv2_nopivot_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgtsv2_nopivot_bufferSizeExt_full_rank,&
      hipsparseCgtsv2_nopivot_bufferSizeExt_rank_0,&
      hipsparseCgtsv2_nopivot_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZgtsv2_nopivot_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="cusparseZgtsv2_nopivot_bufferSizeExt")
#else
    function hipsparseZgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes) bind(c, name="hipsparseZgtsv2_nopivot_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgtsv2_nopivot_bufferSizeExt_full_rank,&
      hipsparseZgtsv2_nopivot_bufferSizeExt_rank_0,&
      hipsparseZgtsv2_nopivot_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSgtsv2_nopivot
#ifdef USE_CUDA_NAMES
    function hipsparseSgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseSgtsv2_nopivot")
#else
    function hipsparseSgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseSgtsv2_nopivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgtsv2_nopivot_full_rank,&
      hipsparseSgtsv2_nopivot_rank_0,&
      hipsparseSgtsv2_nopivot_rank_1
#endif
  end interface
  
  interface hipsparseDgtsv2_nopivot
#ifdef USE_CUDA_NAMES
    function hipsparseDgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseDgtsv2_nopivot")
#else
    function hipsparseDgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseDgtsv2_nopivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgtsv2_nopivot_full_rank,&
      hipsparseDgtsv2_nopivot_rank_0,&
      hipsparseDgtsv2_nopivot_rank_1
#endif
  end interface
  
  interface hipsparseCgtsv2_nopivot
#ifdef USE_CUDA_NAMES
    function hipsparseCgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseCgtsv2_nopivot")
#else
    function hipsparseCgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseCgtsv2_nopivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgtsv2_nopivot_full_rank,&
      hipsparseCgtsv2_nopivot_rank_0,&
      hipsparseCgtsv2_nopivot_rank_1
#endif
  end interface
  
  interface hipsparseZgtsv2_nopivot
#ifdef USE_CUDA_NAMES
    function hipsparseZgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="cusparseZgtsv2_nopivot")
#else
    function hipsparseZgtsv2_nopivot_(handle,m,n,dl,d,du,B,ldb,pBuffer) bind(c, name="hipsparseZgtsv2_nopivot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: B
      integer(c_int),value :: ldb
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgtsv2_nopivot_full_rank,&
      hipsparseZgtsv2_nopivot_rank_0,&
      hipsparseZgtsv2_nopivot_rank_1
#endif
  end interface
  interface hipsparseSgtsv2StridedBatch_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="cusparseSgtsv2StridedBatch_bufferSizeExt")
#else
    function hipsparseSgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="hipsparseSgtsv2StridedBatch_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2StridedBatch_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_0,&
      hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDgtsv2StridedBatch_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="cusparseDgtsv2StridedBatch_bufferSizeExt")
#else
    function hipsparseDgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="hipsparseDgtsv2StridedBatch_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2StridedBatch_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_0,&
      hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCgtsv2StridedBatch_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="cusparseCgtsv2StridedBatch_bufferSizeExt")
#else
    function hipsparseCgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="hipsparseCgtsv2StridedBatch_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2StridedBatch_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_0,&
      hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZgtsv2StridedBatch_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="cusparseZgtsv2StridedBatch_bufferSizeExt")
#else
    function hipsparseZgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes) bind(c, name="hipsparseZgtsv2StridedBatch_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2StridedBatch_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_0,&
      hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSgtsv2StridedBatch
#ifdef USE_CUDA_NAMES
    function hipsparseSgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="cusparseSgtsv2StridedBatch")
#else
    function hipsparseSgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="hipsparseSgtsv2StridedBatch")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2StridedBatch_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgtsv2StridedBatch_rank_0,&
      hipsparseSgtsv2StridedBatch_rank_1
#endif
  end interface
  
  interface hipsparseDgtsv2StridedBatch
#ifdef USE_CUDA_NAMES
    function hipsparseDgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="cusparseDgtsv2StridedBatch")
#else
    function hipsparseDgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="hipsparseDgtsv2StridedBatch")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2StridedBatch_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgtsv2StridedBatch_rank_0,&
      hipsparseDgtsv2StridedBatch_rank_1
#endif
  end interface
  
  interface hipsparseCgtsv2StridedBatch
#ifdef USE_CUDA_NAMES
    function hipsparseCgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="cusparseCgtsv2StridedBatch")
#else
    function hipsparseCgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="hipsparseCgtsv2StridedBatch")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2StridedBatch_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgtsv2StridedBatch_rank_0,&
      hipsparseCgtsv2StridedBatch_rank_1
#endif
  end interface
  
  interface hipsparseZgtsv2StridedBatch
#ifdef USE_CUDA_NAMES
    function hipsparseZgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="cusparseZgtsv2StridedBatch")
#else
    function hipsparseZgtsv2StridedBatch_(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer) bind(c, name="hipsparseZgtsv2StridedBatch")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2StridedBatch_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: dl
      type(c_ptr),value :: d
      type(c_ptr),value :: du
      type(c_ptr),value :: x
      integer(c_int),value :: batchCount
      integer(c_int),value :: batchStride
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgtsv2StridedBatch_rank_0,&
      hipsparseZgtsv2StridedBatch_rank_1
#endif
  end interface
  interface hipsparseSnnz
#ifdef USE_CUDA_NAMES
    function hipsparseSnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="cusparseSnnz")
#else
    function hipsparseSnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="hipsparseSnnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSnnz_full_rank,&
      hipsparseSnnz_rank_0,&
      hipsparseSnnz_rank_1
#endif
  end interface
  
  interface hipsparseDnnz
#ifdef USE_CUDA_NAMES
    function hipsparseDnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="cusparseDnnz")
#else
    function hipsparseDnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="hipsparseDnnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDnnz_full_rank,&
      hipsparseDnnz_rank_0,&
      hipsparseDnnz_rank_1
#endif
  end interface
  
  interface hipsparseCnnz
#ifdef USE_CUDA_NAMES
    function hipsparseCnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="cusparseCnnz")
#else
    function hipsparseCnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="hipsparseCnnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCnnz_full_rank,&
      hipsparseCnnz_rank_0,&
      hipsparseCnnz_rank_1
#endif
  end interface
  
  interface hipsparseZnnz
#ifdef USE_CUDA_NAMES
    function hipsparseZnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="cusparseZnnz")
#else
    function hipsparseZnnz_(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr) bind(c, name="hipsparseZnnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      type(c_ptr),value :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZnnz_full_rank,&
      hipsparseZnnz_rank_0,&
      hipsparseZnnz_rank_1
#endif
  end interface
  interface hipsparseSdense2csr
#ifdef USE_CUDA_NAMES
    function hipsparseSdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="cusparseSdense2csr")
#else
    function hipsparseSdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="hipsparseSdense2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_rows
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSdense2csr_full_rank,&
      hipsparseSdense2csr_rank_0,&
      hipsparseSdense2csr_rank_1
#endif
  end interface
  
  interface hipsparseDdense2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="cusparseDdense2csr")
#else
    function hipsparseDdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="hipsparseDdense2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_rows
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDdense2csr_full_rank,&
      hipsparseDdense2csr_rank_0,&
      hipsparseDdense2csr_rank_1
#endif
  end interface
  
  interface hipsparseCdense2csr
#ifdef USE_CUDA_NAMES
    function hipsparseCdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="cusparseCdense2csr")
#else
    function hipsparseCdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="hipsparseCdense2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_rows
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCdense2csr_full_rank,&
      hipsparseCdense2csr_rank_0,&
      hipsparseCdense2csr_rank_1
#endif
  end interface
  
  interface hipsparseZdense2csr
#ifdef USE_CUDA_NAMES
    function hipsparseZdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="cusparseZdense2csr")
#else
    function hipsparseZdense2csr_(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind) bind(c, name="hipsparseZdense2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_rows
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZdense2csr_full_rank,&
      hipsparseZdense2csr_rank_0,&
      hipsparseZdense2csr_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csr_bufferSize_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="cusparseSpruneDense2csr_bufferSize")
#else
    function hipsparseSpruneDense2csr_bufferSize_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="hipsparseSpruneDense2csr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csr_bufferSize_full_rank,&
      hipsparseSpruneDense2csr_bufferSize_rank_0,&
      hipsparseSpruneDense2csr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csr_bufferSize_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="cusparseDpruneDense2csr_bufferSize")
#else
    function hipsparseDpruneDense2csr_bufferSize_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="hipsparseDpruneDense2csr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csr_bufferSize_full_rank,&
      hipsparseDpruneDense2csr_bufferSize_rank_0,&
      hipsparseDpruneDense2csr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseSpruneDense2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csr_bufferSizeExt_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="cusparseSpruneDense2csr_bufferSizeExt")
#else
    function hipsparseSpruneDense2csr_bufferSizeExt_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="hipsparseSpruneDense2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csr_bufferSizeExt_full_rank,&
      hipsparseSpruneDense2csr_bufferSizeExt_rank_0,&
      hipsparseSpruneDense2csr_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csr_bufferSizeExt_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="cusparseDpruneDense2csr_bufferSizeExt")
#else
    function hipsparseDpruneDense2csr_bufferSizeExt_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize) bind(c, name="hipsparseDpruneDense2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csr_bufferSizeExt_full_rank,&
      hipsparseDpruneDense2csr_bufferSizeExt_rank_0,&
      hipsparseDpruneDense2csr_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csrNnz_(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer) bind(c, name="cusparseSpruneDense2csrNnz")
#else
    function hipsparseSpruneDense2csrNnz_(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer) bind(c, name="hipsparseSpruneDense2csrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csrNnz_full_rank,&
      hipsparseSpruneDense2csrNnz_rank_0,&
      hipsparseSpruneDense2csrNnz_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csrNnz_(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer) bind(c, name="cusparseDpruneDense2csrNnz")
#else
    function hipsparseDpruneDense2csrNnz_(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer) bind(c, name="hipsparseDpruneDense2csrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csrNnz_full_rank,&
      hipsparseDpruneDense2csrNnz_rank_0,&
      hipsparseDpruneDense2csrNnz_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csr
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csr_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer) bind(c, name="cusparseSpruneDense2csr")
#else
    function hipsparseSpruneDense2csr_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer) bind(c, name="hipsparseSpruneDense2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csr_full_rank,&
      hipsparseSpruneDense2csr_rank_0,&
      hipsparseSpruneDense2csr_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csr_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer) bind(c, name="cusparseDpruneDense2csr")
#else
    function hipsparseDpruneDense2csr_(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer) bind(c, name="hipsparseDpruneDense2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double) :: threshold
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csr_full_rank,&
      hipsparseDpruneDense2csr_rank_0,&
      hipsparseDpruneDense2csr_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csrByPercentage_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csrByPercentage_bufferSize_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="cusparseSpruneDense2csrByPercentage_bufferSize")
#else
    function hipsparseSpruneDense2csrByPercentage_bufferSize_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="hipsparseSpruneDense2csrByPercentage_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csrByPercentage_bufferSize_full_rank,&
      hipsparseSpruneDense2csrByPercentage_bufferSize_rank_0,&
      hipsparseSpruneDense2csrByPercentage_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csrByPercentage_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csrByPercentage_bufferSize_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="cusparseDpruneDense2csrByPercentage_bufferSize")
#else
    function hipsparseDpruneDense2csrByPercentage_bufferSize_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="hipsparseDpruneDense2csrByPercentage_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csrByPercentage_bufferSize_full_rank,&
      hipsparseDpruneDense2csrByPercentage_bufferSize_rank_0,&
      hipsparseDpruneDense2csrByPercentage_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csrByPercentage_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="cusparseSpruneDense2csrByPercentage_bufferSizeExt")
#else
    function hipsparseSpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="hipsparseSpruneDense2csrByPercentage_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csrByPercentage_bufferSizeExt_full_rank,&
      hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_0,&
      hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csrByPercentage_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="cusparseDpruneDense2csrByPercentage_bufferSizeExt")
#else
    function hipsparseDpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize) bind(c, name="hipsparseDpruneDense2csrByPercentage_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csrByPercentage_bufferSizeExt_full_rank,&
      hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_0,&
      hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csrNnzByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csrNnzByPercentage_(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="cusparseSpruneDense2csrNnzByPercentage")
#else
    function hipsparseSpruneDense2csrNnzByPercentage_(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="hipsparseSpruneDense2csrNnzByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnzByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csrNnzByPercentage_full_rank,&
      hipsparseSpruneDense2csrNnzByPercentage_rank_0,&
      hipsparseSpruneDense2csrNnzByPercentage_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csrNnzByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csrNnzByPercentage_(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="cusparseDpruneDense2csrNnzByPercentage")
#else
    function hipsparseDpruneDense2csrNnzByPercentage_(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="hipsparseDpruneDense2csrNnzByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnzByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csrNnzByPercentage_full_rank,&
      hipsparseDpruneDense2csrNnzByPercentage_rank_0,&
      hipsparseDpruneDense2csrNnzByPercentage_rank_1
#endif
  end interface
  interface hipsparseSpruneDense2csrByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneDense2csrByPercentage_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer) bind(c, name="cusparseSpruneDense2csrByPercentage")
#else
    function hipsparseSpruneDense2csrByPercentage_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer) bind(c, name="hipsparseSpruneDense2csrByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_float),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneDense2csrByPercentage_full_rank,&
      hipsparseSpruneDense2csrByPercentage_rank_0,&
      hipsparseSpruneDense2csrByPercentage_rank_1
#endif
  end interface
  
  interface hipsparseDpruneDense2csrByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneDense2csrByPercentage_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer) bind(c, name="cusparseDpruneDense2csrByPercentage")
#else
    function hipsparseDpruneDense2csrByPercentage_(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer) bind(c, name="hipsparseDpruneDense2csrByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: A
      integer(c_int),value :: lda
      real(c_double),value :: percentage
      type(c_ptr),value :: descr
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneDense2csrByPercentage_full_rank,&
      hipsparseDpruneDense2csrByPercentage_rank_0,&
      hipsparseDpruneDense2csrByPercentage_rank_1
#endif
  end interface
  interface hipsparseSdense2csc
#ifdef USE_CUDA_NAMES
    function hipsparseSdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="cusparseSdense2csc")
#else
    function hipsparseSdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="hipsparseSdense2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_columns
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSdense2csc_full_rank,&
      hipsparseSdense2csc_rank_0,&
      hipsparseSdense2csc_rank_1
#endif
  end interface
  
  interface hipsparseDdense2csc
#ifdef USE_CUDA_NAMES
    function hipsparseDdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="cusparseDdense2csc")
#else
    function hipsparseDdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="hipsparseDdense2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_columns
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDdense2csc_full_rank,&
      hipsparseDdense2csc_rank_0,&
      hipsparseDdense2csc_rank_1
#endif
  end interface
  
  interface hipsparseCdense2csc
#ifdef USE_CUDA_NAMES
    function hipsparseCdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="cusparseCdense2csc")
#else
    function hipsparseCdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="hipsparseCdense2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_columns
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCdense2csc_full_rank,&
      hipsparseCdense2csc_rank_0,&
      hipsparseCdense2csc_rank_1
#endif
  end interface
  
  interface hipsparseZdense2csc
#ifdef USE_CUDA_NAMES
    function hipsparseZdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="cusparseZdense2csc")
#else
    function hipsparseZdense2csc_(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr) bind(c, name="hipsparseZdense2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
      type(c_ptr),value :: nnz_per_columns
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZdense2csc_full_rank,&
      hipsparseZdense2csc_rank_0,&
      hipsparseZdense2csc_rank_1
#endif
  end interface
  interface hipsparseScsr2dense
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="cusparseScsr2dense")
#else
    function hipsparseScsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="hipsparseScsr2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2dense_full_rank,&
      hipsparseScsr2dense_rank_0,&
      hipsparseScsr2dense_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2dense
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="cusparseDcsr2dense")
#else
    function hipsparseDcsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="hipsparseDcsr2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2dense_full_rank,&
      hipsparseDcsr2dense_rank_0,&
      hipsparseDcsr2dense_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2dense
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="cusparseCcsr2dense")
#else
    function hipsparseCcsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="hipsparseCcsr2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2dense_full_rank,&
      hipsparseCcsr2dense_rank_0,&
      hipsparseCcsr2dense_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2dense
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="cusparseZcsr2dense")
#else
    function hipsparseZcsr2dense_(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld) bind(c, name="hipsparseZcsr2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2dense_full_rank,&
      hipsparseZcsr2dense_rank_0,&
      hipsparseZcsr2dense_rank_1
#endif
  end interface
  interface hipsparseScsc2dense
#ifdef USE_CUDA_NAMES
    function hipsparseScsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="cusparseScsc2dense")
#else
    function hipsparseScsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="hipsparseScsc2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsc2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsc2dense_full_rank,&
      hipsparseScsc2dense_rank_0,&
      hipsparseScsc2dense_rank_1
#endif
  end interface
  
  interface hipsparseDcsc2dense
#ifdef USE_CUDA_NAMES
    function hipsparseDcsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="cusparseDcsc2dense")
#else
    function hipsparseDcsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="hipsparseDcsc2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsc2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsc2dense_full_rank,&
      hipsparseDcsc2dense_rank_0,&
      hipsparseDcsc2dense_rank_1
#endif
  end interface
  
  interface hipsparseCcsc2dense
#ifdef USE_CUDA_NAMES
    function hipsparseCcsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="cusparseCcsc2dense")
#else
    function hipsparseCcsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="hipsparseCcsc2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsc2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsc2dense_full_rank,&
      hipsparseCcsc2dense_rank_0,&
      hipsparseCcsc2dense_rank_1
#endif
  end interface
  
  interface hipsparseZcsc2dense
#ifdef USE_CUDA_NAMES
    function hipsparseZcsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="cusparseZcsc2dense")
#else
    function hipsparseZcsc2dense_(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld) bind(c, name="hipsparseZcsc2dense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsc2dense_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descr
      type(c_ptr),value :: csc_val
      type(c_ptr),value :: csc_row_ind
      type(c_ptr),value :: csc_col_ptr
      type(c_ptr),value :: A
      integer(c_int),value :: ld
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsc2dense_full_rank,&
      hipsparseZcsc2dense_rank_0,&
      hipsparseZcsc2dense_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief
  !>   This function computes the number of nonzero block columns per row and the total number of nonzero blocks in a sparse
  !>   BSR matrix given a sparse CSR matrix as input.
  !> 
  !>   \details
  !>   The routine does support asynchronous execution if the pointer mode is set to device.
  interface hipsparseXcsr2bsrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseXcsr2bsrNnz_(handle,dirA,m,n,descrA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrRowPtrC,bsrNnzb) bind(c, name="cusparseXcsr2bsrNnz")
#else
    function hipsparseXcsr2bsrNnz_(handle,dirA,m,n,descrA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrRowPtrC,bsrNnzb) bind(c, name="hipsparseXcsr2bsrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2bsrNnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrNnzb
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsr2bsrNnz_rank_0,&
      hipsparseXcsr2bsrNnz_rank_1
#endif
  end interface
  interface hipsparseSnnz_compress
#ifdef USE_CUDA_NAMES
    function hipsparseSnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="cusparseSnnz_compress")
#else
    function hipsparseSnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="hipsparseSnnz_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: nnzC
      real(c_float),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSnnz_compress_rank_0,&
      hipsparseSnnz_compress_rank_1
#endif
  end interface
  
  interface hipsparseDnnz_compress
#ifdef USE_CUDA_NAMES
    function hipsparseDnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="cusparseDnnz_compress")
#else
    function hipsparseDnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="hipsparseDnnz_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: nnzC
      real(c_double),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDnnz_compress_rank_0,&
      hipsparseDnnz_compress_rank_1
#endif
  end interface
  
  interface hipsparseCnnz_compress
#ifdef USE_CUDA_NAMES
    function hipsparseCnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="cusparseCnnz_compress")
#else
    function hipsparseCnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="hipsparseCnnz_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: nnzC
      complex(c_float_complex),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCnnz_compress_rank_0,&
      hipsparseCnnz_compress_rank_1
#endif
  end interface
  
  interface hipsparseZnnz_compress
#ifdef USE_CUDA_NAMES
    function hipsparseZnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="cusparseZnnz_compress")
#else
    function hipsparseZnnz_compress_(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol) bind(c, name="hipsparseZnnz_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: nnzC
      complex(c_double_complex),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZnnz_compress_rank_0,&
      hipsparseZnnz_compress_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Convert a sparse CSR matrix into a sparse COO matrix
  !> 
  !>   \details
  !>   \p hipsparseXcsr2coo converts the CSR array containing the row offsets, that point
  !>   to the start of every row, into a COO array of row indices.
  !> 
  !>   \note
  !>   It can also be used to convert a CSC array containing the column offsets into a COO
  !>   array of column indices.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseXcsr2coo
#ifdef USE_CUDA_NAMES
    function hipsparseXcsr2coo_(handle,csrRowPtr,nnz,m,cooRowInd,idxBase) bind(c, name="cusparseXcsr2coo")
#else
    function hipsparseXcsr2coo_(handle,csrRowPtr,nnz,m,cooRowInd,idxBase) bind(c, name="hipsparseXcsr2coo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2coo_
      type(c_ptr),value :: handle
      type(c_ptr),value :: csrRowPtr
      integer(c_int),value :: nnz
      integer(c_int),value :: m
      type(c_ptr),value :: cooRowInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsr2coo_rank_0,&
      hipsparseXcsr2coo_rank_1
#endif
  end interface
  
  interface hipsparseScsr2csc
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="cusparseScsr2csc")
#else
    function hipsparseScsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="hipsparseScsr2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrSortedVal
      type(c_ptr),value :: csrSortedRowPtr
      type(c_ptr),value :: csrSortedColInd
      type(c_ptr),value :: cscSortedVal
      type(c_ptr),value :: cscSortedRowInd
      type(c_ptr),value :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2csc_rank_0,&
      hipsparseScsr2csc_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2csc
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="cusparseDcsr2csc")
#else
    function hipsparseDcsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="hipsparseDcsr2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrSortedVal
      type(c_ptr),value :: csrSortedRowPtr
      type(c_ptr),value :: csrSortedColInd
      type(c_ptr),value :: cscSortedVal
      type(c_ptr),value :: cscSortedRowInd
      type(c_ptr),value :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2csc_rank_0,&
      hipsparseDcsr2csc_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2csc
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="cusparseCcsr2csc")
#else
    function hipsparseCcsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="hipsparseCcsr2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrSortedVal
      type(c_ptr),value :: csrSortedRowPtr
      type(c_ptr),value :: csrSortedColInd
      type(c_ptr),value :: cscSortedVal
      type(c_ptr),value :: cscSortedRowInd
      type(c_ptr),value :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2csc_rank_0,&
      hipsparseCcsr2csc_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2csc
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="cusparseZcsr2csc")
#else
    function hipsparseZcsr2csc_(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase) bind(c, name="hipsparseZcsr2csc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csc_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrSortedVal
      type(c_ptr),value :: csrSortedRowPtr
      type(c_ptr),value :: csrSortedColInd
      type(c_ptr),value :: cscSortedVal
      type(c_ptr),value :: cscSortedRowInd
      type(c_ptr),value :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2csc_rank_0,&
      hipsparseZcsr2csc_rank_1
#endif
  end interface
  
  interface hipsparseScsr2hyb
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="cusparseScsr2hyb")
#else
    function hipsparseScsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="hipsparseScsr2hyb")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2hyb_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: hybA
      integer(c_int),value :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)),value :: partitionType
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2hyb_rank_0,&
      hipsparseScsr2hyb_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2hyb
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="cusparseDcsr2hyb")
#else
    function hipsparseDcsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="hipsparseDcsr2hyb")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2hyb_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: hybA
      integer(c_int),value :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)),value :: partitionType
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2hyb_rank_0,&
      hipsparseDcsr2hyb_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2hyb
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="cusparseCcsr2hyb")
#else
    function hipsparseCcsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="hipsparseCcsr2hyb")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2hyb_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: hybA
      integer(c_int),value :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)),value :: partitionType
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2hyb_rank_0,&
      hipsparseCcsr2hyb_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2hyb
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="cusparseZcsr2hyb")
#else
    function hipsparseZcsr2hyb_(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType) bind(c, name="hipsparseZcsr2hyb")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2hyb_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
      type(c_ptr),value :: hybA
      integer(c_int),value :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)),value :: partitionType
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2hyb_rank_0,&
      hipsparseZcsr2hyb_rank_1
#endif
  end interface
  interface hipsparseSgebsr2gebsc_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseSgebsr2gebsc_bufferSize")
#else
    function hipsparseSgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseSgebsr2gebsc_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsc_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

  end interface
  
  interface hipsparseDgebsr2gebsc_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseDgebsr2gebsc_bufferSize")
#else
    function hipsparseDgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseDgebsr2gebsc_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsc_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

  end interface
  
  interface hipsparseCgebsr2gebsc_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseCgebsr2gebsc_bufferSize")
#else
    function hipsparseCgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseCgebsr2gebsc_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsc_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

  end interface
  
  interface hipsparseZgebsr2gebsc_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseZgebsr2gebsc_bufferSize")
#else
    function hipsparseZgebsr2gebsc_bufferSize_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseZgebsr2gebsc_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsc_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

  end interface
  interface hipsparseSgebsr2gebsc
#ifdef USE_CUDA_NAMES
    function hipsparseSgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="cusparseSgebsr2gebsc")
#else
    function hipsparseSgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="hipsparseSgebsr2gebsc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsc_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: bsc_val
      type(c_ptr),value :: bsc_row_ind
      type(c_ptr),value :: bsc_col_ptr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copy_values
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idx_base
      type(c_ptr),value :: temp_buffer
    end function

  end interface
  
  interface hipsparseDgebsr2gebsc
#ifdef USE_CUDA_NAMES
    function hipsparseDgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="cusparseDgebsr2gebsc")
#else
    function hipsparseDgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="hipsparseDgebsr2gebsc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsc_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: bsc_val
      type(c_ptr),value :: bsc_row_ind
      type(c_ptr),value :: bsc_col_ptr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copy_values
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idx_base
      type(c_ptr),value :: temp_buffer
    end function

  end interface
  
  interface hipsparseCgebsr2gebsc
#ifdef USE_CUDA_NAMES
    function hipsparseCgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="cusparseCgebsr2gebsc")
#else
    function hipsparseCgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="hipsparseCgebsr2gebsc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsc_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: bsc_val
      type(c_ptr),value :: bsc_row_ind
      type(c_ptr),value :: bsc_col_ptr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copy_values
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idx_base
      type(c_ptr),value :: temp_buffer
    end function

  end interface
  
  interface hipsparseZgebsr2gebsc
#ifdef USE_CUDA_NAMES
    function hipsparseZgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="cusparseZgebsr2gebsc")
#else
    function hipsparseZgebsr2gebsc_(handle,mb,nb,nnzb,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,bsc_val,bsc_row_ind,bsc_col_ptr,copy_values,idx_base,temp_buffer) bind(c, name="hipsparseZgebsr2gebsc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsc_
      type(c_ptr),value :: handle
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: bsc_val
      type(c_ptr),value :: bsc_row_ind
      type(c_ptr),value :: bsc_col_ptr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)),value :: copy_values
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idx_base
      type(c_ptr),value :: temp_buffer
    end function

  end interface
  interface hipsparseScsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseScsr2gebsr_bufferSize")
#else
    function hipsparseScsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseScsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2gebsr_bufferSize_rank_0,&
      hipsparseScsr2gebsr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseDcsr2gebsr_bufferSize")
#else
    function hipsparseDcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseDcsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2gebsr_bufferSize_rank_0,&
      hipsparseDcsr2gebsr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseCcsr2gebsr_bufferSize")
#else
    function hipsparseCcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseCcsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2gebsr_bufferSize_rank_0,&
      hipsparseCcsr2gebsr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="cusparseZcsr2gebsr_bufferSize")
#else
    function hipsparseZcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size) bind(c, name="hipsparseZcsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer_size
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2gebsr_bufferSize_rank_0,&
      hipsparseZcsr2gebsr_bufferSize_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief
  !>   This function computes the number of nonzero block columns per row and the total number of nonzero blocks in a sparse
  !>   GEneral BSR matrix given a sparse CSR matrix as input.
  !>
  interface hipsparseXcsr2gebsrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseXcsr2gebsrNnz_(handle,dir,m,n,csr_descr,csr_row_ptr,csr_col_ind,bsr_descr,bsr_row_ptr,row_block_dim,col_block_dim,bsr_nnz_devhost,p_buffer) bind(c, name="cusparseXcsr2gebsrNnz")
#else
    function hipsparseXcsr2gebsrNnz_(handle,dir,m,n,csr_descr,csr_row_ptr,csr_col_ind,bsr_descr,bsr_row_ptr,row_block_dim,col_block_dim,bsr_nnz_devhost,p_buffer) bind(c, name="hipsparseXcsr2gebsrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2gebsrNnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: bsr_descr
      type(c_ptr),value :: bsr_row_ptr
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: bsr_nnz_devhost
      type(c_ptr),value :: p_buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsr2gebsrNnz_rank_0,&
      hipsparseXcsr2gebsrNnz_rank_1
#endif
  end interface
  interface hipsparseScsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="cusparseScsr2gebsr")
#else
    function hipsparseScsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="hipsparseScsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: bsr_descr
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2gebsr_rank_0,&
      hipsparseScsr2gebsr_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="cusparseDcsr2gebsr")
#else
    function hipsparseDcsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="hipsparseDcsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: bsr_descr
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2gebsr_rank_0,&
      hipsparseDcsr2gebsr_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="cusparseCcsr2gebsr")
#else
    function hipsparseCcsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="hipsparseCcsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: bsr_descr
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2gebsr_rank_0,&
      hipsparseCcsr2gebsr_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="cusparseZcsr2gebsr")
#else
    function hipsparseZcsr2gebsr_(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer) bind(c, name="hipsparseZcsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dir
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: csr_descr
      type(c_ptr),value :: csr_val
      type(c_ptr),value :: csr_row_ptr
      type(c_ptr),value :: csr_col_ind
      type(c_ptr),value :: bsr_descr
      type(c_ptr),value :: bsr_val
      type(c_ptr),value :: bsr_row_ptr
      type(c_ptr),value :: bsr_col_ind
      integer(c_int),value :: row_block_dim
      integer(c_int),value :: col_block_dim
      type(c_ptr),value :: p_buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2gebsr_rank_0,&
      hipsparseZcsr2gebsr_rank_1
#endif
  end interface
  interface hipsparseScsr2bsr
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="cusparseScsr2bsr")
#else
    function hipsparseScsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="hipsparseScsr2bsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2bsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2bsr_rank_0,&
      hipsparseScsr2bsr_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2bsr
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="cusparseDcsr2bsr")
#else
    function hipsparseDcsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="hipsparseDcsr2bsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2bsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2bsr_rank_0,&
      hipsparseDcsr2bsr_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2bsr
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="cusparseCcsr2bsr")
#else
    function hipsparseCcsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="hipsparseCcsr2bsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2bsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2bsr_rank_0,&
      hipsparseCcsr2bsr_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2bsr
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="cusparseZcsr2bsr")
#else
    function hipsparseZcsr2bsr_(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC) bind(c, name="hipsparseZcsr2bsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2bsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2bsr_rank_0,&
      hipsparseZcsr2bsr_rank_1
#endif
  end interface
  interface hipsparseSbsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseSbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseSbsr2csr")
#else
    function hipsparseSbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseSbsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSbsr2csr_rank_0,&
      hipsparseSbsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseDbsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseDbsr2csr")
#else
    function hipsparseDbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseDbsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDbsr2csr_rank_0,&
      hipsparseDbsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseCbsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseCbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseCbsr2csr")
#else
    function hipsparseCbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseCbsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCbsr2csr_rank_0,&
      hipsparseCbsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseZbsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseZbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseZbsr2csr")
#else
    function hipsparseZbsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseZbsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: blockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZbsr2csr_rank_0,&
      hipsparseZbsr2csr_rank_1
#endif
  end interface
  interface hipsparseSgebsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseSgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseSgebsr2csr")
#else
    function hipsparseSgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseSgebsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDim
      integer(c_int),value :: colBlockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgebsr2csr_rank_0,&
      hipsparseSgebsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseDgebsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseDgebsr2csr")
#else
    function hipsparseDgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseDgebsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDim
      integer(c_int),value :: colBlockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgebsr2csr_rank_0,&
      hipsparseDgebsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseCgebsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseCgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseCgebsr2csr")
#else
    function hipsparseCgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseCgebsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDim
      integer(c_int),value :: colBlockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgebsr2csr_rank_0,&
      hipsparseCgebsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseZgebsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseZgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="cusparseZgebsr2csr")
#else
    function hipsparseZgebsr2csr_(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC) bind(c, name="hipsparseZgebsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2csr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDim
      integer(c_int),value :: colBlockDim
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgebsr2csr_rank_0,&
      hipsparseZgebsr2csr_rank_1
#endif
  end interface
  interface hipsparseScsr2csr_compress
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="cusparseScsr2csr_compress")
#else
    function hipsparseScsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="hipsparseScsr2csr_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csr_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: csrRowPtrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: csrRowPtrC
      real(c_float),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2csr_compress_rank_0,&
      hipsparseScsr2csr_compress_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2csr_compress
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="cusparseDcsr2csr_compress")
#else
    function hipsparseDcsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="hipsparseDcsr2csr_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csr_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: csrRowPtrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: csrRowPtrC
      real(c_double),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2csr_compress_rank_0,&
      hipsparseDcsr2csr_compress_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2csr_compress
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="cusparseCcsr2csr_compress")
#else
    function hipsparseCcsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="hipsparseCcsr2csr_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csr_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: csrRowPtrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: csrRowPtrC
      complex(c_float_complex),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2csr_compress_rank_0,&
      hipsparseCcsr2csr_compress_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2csr_compress
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="cusparseZcsr2csr_compress")
#else
    function hipsparseZcsr2csr_compress_(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol) bind(c, name="hipsparseZcsr2csr_compress")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csr_compress_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: csrRowPtrA
      integer(c_int),value :: nnzA
      type(c_ptr),value :: nnzPerRow
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: csrRowPtrC
      complex(c_double_complex),value :: tol
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2csr_compress_rank_0,&
      hipsparseZcsr2csr_compress_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="cusparseSpruneCsr2csr_bufferSize")
#else
    function hipsparseSpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="hipsparseSpruneCsr2csr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csr_bufferSize_rank_0,&
      hipsparseSpruneCsr2csr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="cusparseDpruneCsr2csr_bufferSize")
#else
    function hipsparseDpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="hipsparseDpruneCsr2csr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csr_bufferSize_rank_0,&
      hipsparseDpruneCsr2csr_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="cusparseSpruneCsr2csr_bufferSizeExt")
#else
    function hipsparseSpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="hipsparseSpruneCsr2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csr_bufferSizeExt_rank_0,&
      hipsparseSpruneCsr2csr_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="cusparseDpruneCsr2csr_bufferSizeExt")
#else
    function hipsparseDpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize) bind(c, name="hipsparseDpruneCsr2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csr_bufferSizeExt_rank_0,&
      hipsparseDpruneCsr2csr_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer) bind(c, name="cusparseSpruneCsr2csrNnz")
#else
    function hipsparseSpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer) bind(c, name="hipsparseSpruneCsr2csrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrNnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csrNnz_rank_0,&
      hipsparseSpruneCsr2csrNnz_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer) bind(c, name="cusparseDpruneCsr2csrNnz")
#else
    function hipsparseDpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer) bind(c, name="hipsparseDpruneCsr2csrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrNnz_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csrNnz_rank_0,&
      hipsparseDpruneCsr2csrNnz_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csr_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer) bind(c, name="cusparseSpruneCsr2csr")
#else
    function hipsparseSpruneCsr2csr_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer) bind(c, name="hipsparseSpruneCsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csr_rank_0,&
      hipsparseSpruneCsr2csr_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csr_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer) bind(c, name="cusparseDpruneCsr2csr")
#else
    function hipsparseDpruneCsr2csr_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer) bind(c, name="hipsparseDpruneCsr2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csr_rank_0,&
      hipsparseDpruneCsr2csr_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csrByPercentage_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="cusparseSpruneCsr2csrByPercentage_bufferSize")
#else
    function hipsparseSpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="hipsparseSpruneCsr2csrByPercentage_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_0,&
      hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csrByPercentage_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="cusparseDpruneCsr2csrByPercentage_bufferSize")
#else
    function hipsparseDpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="hipsparseDpruneCsr2csrByPercentage_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_bufferSize_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_0,&
      hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csrByPercentage_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="cusparseSpruneCsr2csrByPercentage_bufferSizeExt")
#else
    function hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="hipsparseSpruneCsr2csrByPercentage_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_0,&
      hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csrByPercentage_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="cusparseDpruneCsr2csrByPercentage_bufferSizeExt")
#else
    function hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize) bind(c, name="hipsparseDpruneCsr2csrByPercentage_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_0,&
      hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csrNnzByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="cusparseSpruneCsr2csrNnzByPercentage")
#else
    function hipsparseSpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="hipsparseSpruneCsr2csrNnzByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrNnzByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csrNnzByPercentage_rank_0,&
      hipsparseSpruneCsr2csrNnzByPercentage_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csrNnzByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="cusparseDpruneCsr2csrNnzByPercentage")
#else
    function hipsparseDpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer) bind(c, name="hipsparseDpruneCsr2csrNnzByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrNnzByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csrNnzByPercentage_rank_0,&
      hipsparseDpruneCsr2csrNnzByPercentage_rank_1
#endif
  end interface
  interface hipsparseSpruneCsr2csrByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseSpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer) bind(c, name="cusparseSpruneCsr2csrByPercentage")
#else
    function hipsparseSpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer) bind(c, name="hipsparseSpruneCsr2csrByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_float),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSpruneCsr2csrByPercentage_rank_0,&
      hipsparseSpruneCsr2csrByPercentage_rank_1
#endif
  end interface
  
  interface hipsparseDpruneCsr2csrByPercentage
#ifdef USE_CUDA_NAMES
    function hipsparseDpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer) bind(c, name="cusparseDpruneCsr2csrByPercentage")
#else
    function hipsparseDpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer) bind(c, name="hipsparseDpruneCsr2csrByPercentage")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnzA
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      real(c_double),value :: percentage
      type(c_ptr),value :: descrC
      type(c_ptr),value :: csrValC
      type(c_ptr),value :: csrRowPtrC
      type(c_ptr),value :: csrColIndC
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDpruneCsr2csrByPercentage_rank_0,&
      hipsparseDpruneCsr2csrByPercentage_rank_1
#endif
  end interface
  
  interface hipsparseShyb2csr
#ifdef USE_CUDA_NAMES
    function hipsparseShyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="cusparseShyb2csr")
#else
    function hipsparseShyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="hipsparseShyb2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseShyb2csr_
      type(c_ptr),value :: handle
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseShyb2csr_rank_0,&
      hipsparseShyb2csr_rank_1
#endif
  end interface
  
  interface hipsparseDhyb2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDhyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="cusparseDhyb2csr")
#else
    function hipsparseDhyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="hipsparseDhyb2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDhyb2csr_
      type(c_ptr),value :: handle
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDhyb2csr_rank_0,&
      hipsparseDhyb2csr_rank_1
#endif
  end interface
  
  interface hipsparseChyb2csr
#ifdef USE_CUDA_NAMES
    function hipsparseChyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="cusparseChyb2csr")
#else
    function hipsparseChyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="hipsparseChyb2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseChyb2csr_
      type(c_ptr),value :: handle
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseChyb2csr_rank_0,&
      hipsparseChyb2csr_rank_1
#endif
  end interface
  
  interface hipsparseZhyb2csr
#ifdef USE_CUDA_NAMES
    function hipsparseZhyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="cusparseZhyb2csr")
#else
    function hipsparseZhyb2csr_(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA) bind(c, name="hipsparseZhyb2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZhyb2csr_
      type(c_ptr),value :: handle
      type(c_ptr),value :: descrA
      type(c_ptr),value :: hybA
      type(c_ptr),value :: csrSortedValA
      type(c_ptr),value :: csrSortedRowPtrA
      type(c_ptr),value :: csrSortedColIndA
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZhyb2csr_rank_0,&
      hipsparseZhyb2csr_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Convert a sparse COO matrix into a sparse CSR matrix
  !> 
  !>   \details
  !>   \p hipsparseXcoo2csr converts the COO array containing the row indices into a
  !>   CSR array of row offsets, that point to the start of every row.
  !>   It is assumed that the COO row index array is sorted.
  !> 
  !>   \note It can also be used, to convert a COO array containing the column indices into
  !>   a CSC array of column offsets, that point to the start of every column. Then, it is
  !>   assumed that the COO column index array is sorted, instead.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseXcoo2csr
#ifdef USE_CUDA_NAMES
    function hipsparseXcoo2csr_(handle,cooRowInd,nnz,m,csrRowPtr,idxBase) bind(c, name="cusparseXcoo2csr")
#else
    function hipsparseXcoo2csr_(handle,cooRowInd,nnz,m,csrRowPtr,idxBase) bind(c, name="hipsparseXcoo2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoo2csr_
      type(c_ptr),value :: handle
      type(c_ptr),value :: cooRowInd
      integer(c_int),value :: nnz
      integer(c_int),value :: m
      type(c_ptr),value :: csrRowPtr
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcoo2csr_rank_0,&
      hipsparseXcoo2csr_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Create the identity map
  !> 
  !>   \details
  !>   \p hipsparseCreateIdentityPermutation stores the identity map in \p p, such that
  !>   \f$p = 0:1:(n-1)\f$.
  !> 
  !>   \code{.c}
  !>       for(i = 0; i < n; ++i)
  !>       {
  !>           p[i] = i;
  !>       }
  !>   \endcode
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseCreateIdentityPermutation
#ifdef USE_CUDA_NAMES
    function hipsparseCreateIdentityPermutation_(handle,n,p) bind(c, name="cusparseCreateIdentityPermutation")
#else
    function hipsparseCreateIdentityPermutation_(handle,n,p) bind(c, name="hipsparseCreateIdentityPermutation")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateIdentityPermutation_
      type(c_ptr),value :: handle
      integer(c_int),value :: n
      type(c_ptr),value :: p
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCreateIdentityPermutation_rank_0,&
      hipsparseCreateIdentityPermutation_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse CSR matrix
  !> 
  !>   \details
  !>   \p hipsparseXcsrsort_bufferSizeExt returns the size of the temporary storage buffer
  !>   required by hipsparseXcsrsort(). The temporary storage buffer must be allocated by
  !>   the user.
  interface hipsparseXcsrsort_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrsort_bufferSizeExt_(handle,m,n,nnz,csrRowPtr,csrColInd,pBufferSizeInBytes) bind(c, name="cusparseXcsrsort_bufferSizeExt")
#else
    function hipsparseXcsrsort_bufferSizeExt_(handle,m,n,nnz,csrRowPtr,csrColInd,pBufferSizeInBytes) bind(c, name="hipsparseXcsrsort_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsrsort_bufferSizeExt_rank_0,&
      hipsparseXcsrsort_bufferSizeExt_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse CSR matrix
  !> 
  !>   \details
  !>   \p hipsparseXcsrsort sorts a matrix in CSR format. The sorted permutation vector
  !>   \p perm can be used to obtain sorted \p csr_val array. In this case, \p perm must be
  !>   initialized as the identity permutation, see hipsparseCreateIdentityPermutation().
  !> 
  !>   \p hipsparseXcsrsort requires extra temporary storage buffer that has to be allocated by
  !>   the user. Storage buffer size can be determined by hipsparseXcsrsort_bufferSizeExt().
  !> 
  !>   \note
  !>   \p perm can be \p NULL if a sorted permutation vector is not required.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseXcsrsort
#ifdef USE_CUDA_NAMES
    function hipsparseXcsrsort_(handle,m,n,nnz,descrA,csrRowPtr,csrColInd,P,pBuffer) bind(c, name="cusparseXcsrsort")
#else
    function hipsparseXcsrsort_(handle,m,n,nnz,descrA,csrRowPtr,csrColInd,P,pBuffer) bind(c, name="hipsparseXcsrsort")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: P
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcsrsort_full_rank,&
      hipsparseXcsrsort_rank_0,&
      hipsparseXcsrsort_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse CSC matrix
  !> 
  !>   \details
  !>   \p hipsparseXcscsort_bufferSizeExt returns the size of the temporary storage buffer
  !>   required by hipsparseXcscsort(). The temporary storage buffer must be allocated by
  !>   the user.
  interface hipsparseXcscsort_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseXcscsort_bufferSizeExt_(handle,m,n,nnz,cscColPtr,cscRowInd,pBufferSizeInBytes) bind(c, name="cusparseXcscsort_bufferSizeExt")
#else
    function hipsparseXcscsort_bufferSizeExt_(handle,m,n,nnz,cscColPtr,cscRowInd,pBufferSizeInBytes) bind(c, name="hipsparseXcscsort_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: cscColPtr
      type(c_ptr),value :: cscRowInd
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcscsort_bufferSizeExt_rank_0,&
      hipsparseXcscsort_bufferSizeExt_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse CSC matrix
  !> 
  !>   \details
  !>   \p hipsparseXcscsort sorts a matrix in CSC format. The sorted permutation vector
  !>   \p perm can be used to obtain sorted \p csc_val array. In this case, \p perm must be
  !>   initialized as the identity permutation, see hipsparseCreateIdentityPermutation().
  !> 
  !>   \p hipsparseXcscsort requires extra temporary storage buffer that has to be allocated by
  !>   the user. Storage buffer size can be determined by hipsparseXcscsort_bufferSizeExt().
  !> 
  !>   \note
  !>   \p perm can be \p NULL if a sorted permutation vector is not required.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseXcscsort
#ifdef USE_CUDA_NAMES
    function hipsparseXcscsort_(handle,m,n,nnz,descrA,cscColPtr,cscRowInd,P,pBuffer) bind(c, name="cusparseXcscsort")
#else
    function hipsparseXcscsort_(handle,m,n,nnz,descrA,cscColPtr,cscRowInd,P,pBuffer) bind(c, name="hipsparseXcscsort")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: cscColPtr
      type(c_ptr),value :: cscRowInd
      type(c_ptr),value :: P
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcscsort_full_rank,&
      hipsparseXcscsort_rank_0,&
      hipsparseXcscsort_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse COO matrix
  !> 
  !>   \details
  !>   \p hipsparseXcoosort_bufferSizeExt returns the size of the temporary storage buffer
  !>   required by hipsparseXcoosort(). The temporary storage buffer must be allocated by
  !>   the user.
  interface hipsparseXcoosort_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseXcoosort_bufferSizeExt_(handle,m,n,nnz,cooRows,cooCols,pBufferSizeInBytes) bind(c, name="cusparseXcoosort_bufferSizeExt")
#else
    function hipsparseXcoosort_bufferSizeExt_(handle,m,n,nnz,cooRows,cooCols,pBufferSizeInBytes) bind(c, name="hipsparseXcoosort_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosort_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: cooRows
      type(c_ptr),value :: cooCols
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcoosort_bufferSizeExt_rank_0,&
      hipsparseXcoosort_bufferSizeExt_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse COO matrix by row
  !> 
  !>   \details
  !>   \p hipsparseXcoosortByRow sorts a matrix in COO format by row. The sorted
  !>   permutation vector \p perm can be used to obtain sorted \p coo_val array. In this
  !>   case, \p perm must be initialized as the identity permutation, see
  !>   hipsparseCreateIdentityPermutation().
  !> 
  !>   \p hipsparseXcoosortByRow requires extra temporary storage buffer that has to be
  !>   allocated by the user. Storage buffer size can be determined by
  !>   hipsparseXcoosort_bufferSizeExt().
  !> 
  !>   \note
  !>   \p perm can be \p NULL if a sorted permutation vector is not required.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseXcoosortByRow
#ifdef USE_CUDA_NAMES
    function hipsparseXcoosortByRow_(handle,m,n,nnz,cooRows,cooCols,P,pBuffer) bind(c, name="cusparseXcoosortByRow")
#else
    function hipsparseXcoosortByRow_(handle,m,n,nnz,cooRows,cooCols,P,pBuffer) bind(c, name="hipsparseXcoosortByRow")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByRow_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: cooRows
      type(c_ptr),value :: cooCols
      type(c_ptr),value :: P
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcoosortByRow_full_rank,&
      hipsparseXcoosortByRow_rank_0,&
      hipsparseXcoosortByRow_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief Sort a sparse COO matrix by column
  !> 
  !>   \details
  !>   \p hipsparseXcoosortByColumn sorts a matrix in COO format by column. The sorted
  !>   permutation vector \p perm can be used to obtain sorted \p coo_val array. In this
  !>   case, \p perm must be initialized as the identity permutation, see
  !>   hipsparseCreateIdentityPermutation().
  !> 
  !>   \p hipsparseXcoosortByColumn requires extra temporary storage buffer that has to be
  !>   allocated by the user. Storage buffer size can be determined by
  !>   hipsparseXcoosort_bufferSizeExt().
  !> 
  !>   \note
  !>   \p perm can be \p NULL if a sorted permutation vector is not required.
  !> 
  !>   \note
  !>   This function is non blocking and executed asynchronously with respect to the host.
  !>   It may return before the actual computation has finished.
  interface hipsparseXcoosortByColumn
#ifdef USE_CUDA_NAMES
    function hipsparseXcoosortByColumn_(handle,m,n,nnz,cooRows,cooCols,P,pBuffer) bind(c, name="cusparseXcoosortByColumn")
#else
    function hipsparseXcoosortByColumn_(handle,m,n,nnz,cooRows,cooCols,P,pBuffer) bind(c, name="hipsparseXcoosortByColumn")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByColumn_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: cooRows
      type(c_ptr),value :: cooCols
      type(c_ptr),value :: P
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXcoosortByColumn_full_rank,&
      hipsparseXcoosortByColumn_rank_0,&
      hipsparseXcoosortByColumn_rank_1
#endif
  end interface
  interface hipsparseSgebsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="cusparseSgebsr2gebsr_bufferSize")
#else
    function hipsparseSgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="hipsparseSgebsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgebsr2gebsr_bufferSize_rank_0,&
      hipsparseSgebsr2gebsr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDgebsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="cusparseDgebsr2gebsr_bufferSize")
#else
    function hipsparseDgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="hipsparseDgebsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgebsr2gebsr_bufferSize_rank_0,&
      hipsparseDgebsr2gebsr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseCgebsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseCgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="cusparseCgebsr2gebsr_bufferSize")
#else
    function hipsparseCgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="hipsparseCgebsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgebsr2gebsr_bufferSize_rank_0,&
      hipsparseCgebsr2gebsr_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseZgebsr2gebsr_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseZgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="cusparseZgebsr2gebsr_bufferSize")
#else
    function hipsparseZgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize) bind(c, name="hipsparseZgebsr2gebsr_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsr_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgebsr2gebsr_bufferSize_rank_0,&
      hipsparseZgebsr2gebsr_bufferSize_rank_1
#endif
  end interface
  !>  \ingroup conv_module
  !>   \brief This function is used when converting a general BSR sparse matrix \p A to another general BSR sparse matrix \p C.
  !>   Specifically, this function determines the number of non-zero blocks that will exist in \p C (stored using either a host
  !>   or device pointer), and computes the row pointer array for \p C.
  !> 
  !>   \details
  !>   The routine does support asynchronous execution.
  interface hipsparseXgebsr2gebsrNnz
#ifdef USE_CUDA_NAMES
    function hipsparseXgebsr2gebsrNnz_(handle,dirA,mb,nb,nnzb,descrA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrRowPtrC,rowBlockDimC,colBlockDimC,nnzTotalDevHostPtr,buffer) bind(c, name="cusparseXgebsr2gebsrNnz")
#else
    function hipsparseXgebsr2gebsrNnz_(handle,dirA,mb,nb,nnzb,descrA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrRowPtrC,rowBlockDimC,colBlockDimC,nnzTotalDevHostPtr,buffer) bind(c, name="hipsparseXgebsr2gebsrNnz")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXgebsr2gebsrNnz_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrRowPtrC
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseXgebsr2gebsrNnz_rank_0,&
      hipsparseXgebsr2gebsrNnz_rank_1
#endif
  end interface
  interface hipsparseSgebsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseSgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="cusparseSgebsr2gebsr")
#else
    function hipsparseSgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="hipsparseSgebsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSgebsr2gebsr_rank_0,&
      hipsparseSgebsr2gebsr_rank_1
#endif
  end interface
  
  interface hipsparseDgebsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseDgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="cusparseDgebsr2gebsr")
#else
    function hipsparseDgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="hipsparseDgebsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDgebsr2gebsr_rank_0,&
      hipsparseDgebsr2gebsr_rank_1
#endif
  end interface
  
  interface hipsparseCgebsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseCgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="cusparseCgebsr2gebsr")
#else
    function hipsparseCgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="hipsparseCgebsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCgebsr2gebsr_rank_0,&
      hipsparseCgebsr2gebsr_rank_1
#endif
  end interface
  
  interface hipsparseZgebsr2gebsr
#ifdef USE_CUDA_NAMES
    function hipsparseZgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="cusparseZgebsr2gebsr")
#else
    function hipsparseZgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer) bind(c, name="hipsparseZgebsr2gebsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsr_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)),value :: dirA
      integer(c_int),value :: mb
      integer(c_int),value :: nb
      integer(c_int),value :: nnzb
      type(c_ptr),value :: descrA
      type(c_ptr),value :: bsrValA
      type(c_ptr),value :: bsrRowPtrA
      type(c_ptr),value :: bsrColIndA
      integer(c_int),value :: rowBlockDimA
      integer(c_int),value :: colBlockDimA
      type(c_ptr),value :: descrC
      type(c_ptr),value :: bsrValC
      type(c_ptr),value :: bsrRowPtrC
      type(c_ptr),value :: bsrColIndC
      integer(c_int),value :: rowBlockDimC
      integer(c_int),value :: colBlockDimC
      type(c_ptr),value :: buffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZgebsr2gebsr_rank_0,&
      hipsparseZgebsr2gebsr_rank_1
#endif
  end interface
  interface hipsparseScsru2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseScsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="cusparseScsru2csr_bufferSizeExt")
#else
    function hipsparseScsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseScsru2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsru2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsru2csr_bufferSizeExt_rank_0,&
      hipsparseScsru2csr_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseDcsru2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseDcsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="cusparseDcsru2csr_bufferSizeExt")
#else
    function hipsparseDcsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseDcsru2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsru2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsru2csr_bufferSizeExt_rank_0,&
      hipsparseDcsru2csr_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseCcsru2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseCcsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="cusparseCcsru2csr_bufferSizeExt")
#else
    function hipsparseCcsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseCcsru2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsru2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsru2csr_bufferSizeExt_rank_0,&
      hipsparseCcsru2csr_bufferSizeExt_rank_1
#endif
  end interface
  
  interface hipsparseZcsru2csr_bufferSizeExt
#ifdef USE_CUDA_NAMES
    function hipsparseZcsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="cusparseZcsru2csr_bufferSizeExt")
#else
    function hipsparseZcsru2csr_bufferSizeExt_(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes) bind(c, name="hipsparseZcsru2csr_bufferSizeExt")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsru2csr_bufferSizeExt_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsru2csr_bufferSizeExt_rank_0,&
      hipsparseZcsru2csr_bufferSizeExt_rank_1
#endif
  end interface
  interface hipsparseScsru2csr
#ifdef USE_CUDA_NAMES
    function hipsparseScsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseScsru2csr")
#else
    function hipsparseScsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseScsru2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsru2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsru2csr_rank_0,&
      hipsparseScsru2csr_rank_1
#endif
  end interface
  
  interface hipsparseDcsru2csr
#ifdef USE_CUDA_NAMES
    function hipsparseDcsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseDcsru2csr")
#else
    function hipsparseDcsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseDcsru2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsru2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsru2csr_rank_0,&
      hipsparseDcsru2csr_rank_1
#endif
  end interface
  
  interface hipsparseCcsru2csr
#ifdef USE_CUDA_NAMES
    function hipsparseCcsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseCcsru2csr")
#else
    function hipsparseCcsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseCcsru2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsru2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsru2csr_rank_0,&
      hipsparseCcsru2csr_rank_1
#endif
  end interface
  
  interface hipsparseZcsru2csr
#ifdef USE_CUDA_NAMES
    function hipsparseZcsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseZcsru2csr")
#else
    function hipsparseZcsru2csr_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseZcsru2csr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsru2csr_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsru2csr_rank_0,&
      hipsparseZcsru2csr_rank_1
#endif
  end interface
  interface hipsparseScsr2csru
#ifdef USE_CUDA_NAMES
    function hipsparseScsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseScsr2csru")
#else
    function hipsparseScsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseScsr2csru")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csru_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsr2csru_rank_0,&
      hipsparseScsr2csru_rank_1
#endif
  end interface
  
  interface hipsparseDcsr2csru
#ifdef USE_CUDA_NAMES
    function hipsparseDcsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseDcsr2csru")
#else
    function hipsparseDcsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseDcsr2csru")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csru_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsr2csru_rank_0,&
      hipsparseDcsr2csru_rank_1
#endif
  end interface
  
  interface hipsparseCcsr2csru
#ifdef USE_CUDA_NAMES
    function hipsparseCcsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseCcsr2csru")
#else
    function hipsparseCcsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseCcsr2csru")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csru_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsr2csru_rank_0,&
      hipsparseCcsr2csru_rank_1
#endif
  end interface
  
  interface hipsparseZcsr2csru
#ifdef USE_CUDA_NAMES
    function hipsparseZcsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="cusparseZcsr2csru")
#else
    function hipsparseZcsr2csru_(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer) bind(c, name="hipsparseZcsr2csru")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csru_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: n
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrVal
      type(c_ptr),value :: csrRowPtr
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: myInfo
      type(c_ptr),value :: pBuffer
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsr2csru_rank_0,&
      hipsparseZcsr2csru_rank_1
#endif
  end interface
  interface hipsparseScsrcolor
#ifdef USE_CUDA_NAMES
    function hipsparseScsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="cusparseScsrcolor")
#else
    function hipsparseScsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="hipsparseScsrcolor")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrcolor_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr),value :: myInfo
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseScsrcolor_rank_0,&
      hipsparseScsrcolor_rank_1
#endif
  end interface
  
  interface hipsparseDcsrcolor
#ifdef USE_CUDA_NAMES
    function hipsparseDcsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="cusparseDcsrcolor")
#else
    function hipsparseDcsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="hipsparseDcsrcolor")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrcolor_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr),value :: myInfo
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDcsrcolor_rank_0,&
      hipsparseDcsrcolor_rank_1
#endif
  end interface
  
  interface hipsparseCcsrcolor
#ifdef USE_CUDA_NAMES
    function hipsparseCcsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="cusparseCcsrcolor")
#else
    function hipsparseCcsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="hipsparseCcsrcolor")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrcolor_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr),value :: myInfo
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseCcsrcolor_rank_0,&
      hipsparseCcsrcolor_rank_1
#endif
  end interface
  
  interface hipsparseZcsrcolor
#ifdef USE_CUDA_NAMES
    function hipsparseZcsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="cusparseZcsrcolor")
#else
    function hipsparseZcsrcolor_(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo) bind(c, name="hipsparseZcsrcolor")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrcolor_
      type(c_ptr),value :: handle
      integer(c_int),value :: m
      integer(c_int),value :: nnz
      type(c_ptr),value :: descrA
      type(c_ptr),value :: csrValA
      type(c_ptr),value :: csrRowPtrA
      type(c_ptr),value :: csrColIndA
      type(c_ptr),value :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr),value :: myInfo
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseZcsrcolor_rank_0,&
      hipsparseZcsrcolor_rank_1
#endif
  end interface
  
  interface hipsparseCreateSpVec
#ifdef USE_CUDA_NAMES
    function hipsparseCreateSpVec_(spVecDescr,mySize,nnz,indices,values,idxType,idxBase,valueType) bind(c, name="cusparseCreateSpVec")
#else
    function hipsparseCreateSpVec_(spVecDescr,mySize,nnz,indices,values,idxType,idxBase,valueType) bind(c, name="hipsparseCreateSpVec")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateSpVec_
      type(c_ptr) :: spVecDescr
      integer(c_int64_t),value :: mySize
      integer(c_int64_t),value :: nnz
      type(c_ptr),value :: indices
      type(c_ptr),value :: values
      integer(kind(HIPSPARSE_INDEX_16U)),value :: idxType
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseDestroySpVec
#ifdef USE_CUDA_NAMES
    function hipsparseDestroySpVec_(spVecDescr) bind(c, name="cusparseDestroySpVec")
#else
    function hipsparseDestroySpVec_(spVecDescr) bind(c, name="hipsparseDestroySpVec")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroySpVec_
      type(c_ptr),value :: spVecDescr
    end function

  end interface
  
  interface hipsparseSpVecGet
#ifdef USE_CUDA_NAMES
    function hipsparseSpVecGet_(spVecDescr,mySize,nnz,indices,values,idxType,idxBase,valueType) bind(c, name="cusparseSpVecGet")
#else
    function hipsparseSpVecGet_(spVecDescr,mySize,nnz,indices,values,idxType,idxBase,valueType) bind(c, name="hipsparseSpVecGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpVecGet_
      type(c_ptr),value :: spVecDescr
      type(c_ptr),value :: mySize
      type(c_ptr),value :: nnz
      type(c_ptr) :: indices
      type(c_ptr) :: values
      type(c_ptr),value :: idxType
      type(c_ptr),value :: idxBase
      type(c_ptr),value :: valueType
    end function

  end interface
  
  interface hipsparseSpVecGetIndexBase
#ifdef USE_CUDA_NAMES
    function hipsparseSpVecGetIndexBase_(spVecDescr,idxBase) bind(c, name="cusparseSpVecGetIndexBase")
#else
    function hipsparseSpVecGetIndexBase_(spVecDescr,idxBase) bind(c, name="hipsparseSpVecGetIndexBase")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpVecGetIndexBase_
      type(c_ptr),value :: spVecDescr
      type(c_ptr),value :: idxBase
    end function

  end interface
  
  interface hipsparseSpVecGetValues
#ifdef USE_CUDA_NAMES
    function hipsparseSpVecGetValues_(spVecDescr,values) bind(c, name="cusparseSpVecGetValues")
#else
    function hipsparseSpVecGetValues_(spVecDescr,values) bind(c, name="hipsparseSpVecGetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpVecGetValues_
      type(c_ptr),value :: spVecDescr
      type(c_ptr) :: values
    end function

  end interface
  
  interface hipsparseSpVecSetValues
#ifdef USE_CUDA_NAMES
    function hipsparseSpVecSetValues_(spVecDescr,values) bind(c, name="cusparseSpVecSetValues")
#else
    function hipsparseSpVecSetValues_(spVecDescr,values) bind(c, name="hipsparseSpVecSetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpVecSetValues_
      type(c_ptr),value :: spVecDescr
      type(c_ptr),value :: values
    end function

  end interface
  
  interface hipsparseCreateCoo
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCoo_(spMatDescr,rows,cols,nnz,cooRowInd,cooColInd,cooValues,cooIdxType,idxBase,valueType) bind(c, name="cusparseCreateCoo")
#else
    function hipsparseCreateCoo_(spMatDescr,rows,cols,nnz,cooRowInd,cooColInd,cooValues,cooIdxType,idxBase,valueType) bind(c, name="hipsparseCreateCoo")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCoo_
      type(c_ptr) :: spMatDescr
      integer(c_int64_t),value :: rows
      integer(c_int64_t),value :: cols
      integer(c_int64_t),value :: nnz
      type(c_ptr),value :: cooRowInd
      type(c_ptr),value :: cooColInd
      type(c_ptr),value :: cooValues
      integer(kind(HIPSPARSE_INDEX_16U)),value :: cooIdxType
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseCreateCooAoS
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCooAoS_(spMatDescr,rows,cols,nnz,cooInd,cooValues,cooIdxType,idxBase,valueType) bind(c, name="cusparseCreateCooAoS")
#else
    function hipsparseCreateCooAoS_(spMatDescr,rows,cols,nnz,cooInd,cooValues,cooIdxType,idxBase,valueType) bind(c, name="hipsparseCreateCooAoS")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCooAoS_
      type(c_ptr) :: spMatDescr
      integer(c_int64_t),value :: rows
      integer(c_int64_t),value :: cols
      integer(c_int64_t),value :: nnz
      type(c_ptr),value :: cooInd
      type(c_ptr),value :: cooValues
      integer(kind(HIPSPARSE_INDEX_16U)),value :: cooIdxType
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseCreateCsr
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsr_(spMatDescr,rows,cols,nnz,csrRowOffsets,csrColInd,csrValues,csrRowOffsetsType,csrColIndType,idxBase,valueType) bind(c, name="cusparseCreateCsr")
#else
    function hipsparseCreateCsr_(spMatDescr,rows,cols,nnz,csrRowOffsets,csrColInd,csrValues,csrRowOffsetsType,csrColIndType,idxBase,valueType) bind(c, name="hipsparseCreateCsr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsr_
      type(c_ptr) :: spMatDescr
      integer(c_int64_t),value :: rows
      integer(c_int64_t),value :: cols
      integer(c_int64_t),value :: nnz
      type(c_ptr),value :: csrRowOffsets
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: csrValues
      integer(kind(HIPSPARSE_INDEX_16U)),value :: csrRowOffsetsType
      integer(kind(HIPSPARSE_INDEX_16U)),value :: csrColIndType
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseCreateCsc
#ifdef USE_CUDA_NAMES
    function hipsparseCreateCsc_(spMatDescr,rows,cols,nnz,cscColOffsets,cscRowInd,cscValues,cscColOffsetsType,cscRowIndType,idxBase,valueType) bind(c, name="cusparseCreateCsc")
#else
    function hipsparseCreateCsc_(spMatDescr,rows,cols,nnz,cscColOffsets,cscRowInd,cscValues,cscColOffsetsType,cscRowIndType,idxBase,valueType) bind(c, name="hipsparseCreateCsc")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateCsc_
      type(c_ptr) :: spMatDescr
      integer(c_int64_t),value :: rows
      integer(c_int64_t),value :: cols
      integer(c_int64_t),value :: nnz
      type(c_ptr),value :: cscColOffsets
      type(c_ptr),value :: cscRowInd
      type(c_ptr),value :: cscValues
      integer(kind(HIPSPARSE_INDEX_16U)),value :: cscColOffsetsType
      integer(kind(HIPSPARSE_INDEX_16U)),value :: cscRowIndType
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseCreateBlockedEll
#ifdef USE_CUDA_NAMES
    function hipsparseCreateBlockedEll_(spMatDescr,rows,cols,ellBlockSize,ellCols,ellColInd,ellValue,ellIdxType,idxBase,valueType) bind(c, name="cusparseCreateBlockedEll")
#else
    function hipsparseCreateBlockedEll_(spMatDescr,rows,cols,ellBlockSize,ellCols,ellColInd,ellValue,ellIdxType,idxBase,valueType) bind(c, name="hipsparseCreateBlockedEll")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateBlockedEll_
      type(c_ptr) :: spMatDescr
      integer(c_int64_t),value :: rows
      integer(c_int64_t),value :: cols
      integer(c_int64_t),value :: ellBlockSize
      integer(c_int64_t),value :: ellCols
      type(c_ptr),value :: ellColInd
      type(c_ptr),value :: ellValue
      integer(kind(HIPSPARSE_INDEX_16U)),value :: ellIdxType
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)),value :: idxBase
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseDestroySpMat
#ifdef USE_CUDA_NAMES
    function hipsparseDestroySpMat_(spMatDescr) bind(c, name="cusparseDestroySpMat")
#else
    function hipsparseDestroySpMat_(spMatDescr) bind(c, name="hipsparseDestroySpMat")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroySpMat_
      type(c_ptr),value :: spMatDescr
    end function

  end interface
  
  interface hipsparseCooGet
#ifdef USE_CUDA_NAMES
    function hipsparseCooGet_(spMatDescr,rows,cols,nnz,cooRowInd,cooColInd,cooValues,idxType,idxBase,valueType) bind(c, name="cusparseCooGet")
#else
    function hipsparseCooGet_(spMatDescr,rows,cols,nnz,cooRowInd,cooColInd,cooValues,idxType,idxBase,valueType) bind(c, name="hipsparseCooGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCooGet_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: rows
      type(c_ptr),value :: cols
      type(c_ptr),value :: nnz
      type(c_ptr) :: cooRowInd
      type(c_ptr) :: cooColInd
      type(c_ptr) :: cooValues
      type(c_ptr),value :: idxType
      type(c_ptr),value :: idxBase
      type(c_ptr),value :: valueType
    end function

  end interface
  
  interface hipsparseCooAoSGet
#ifdef USE_CUDA_NAMES
    function hipsparseCooAoSGet_(spMatDescr,rows,cols,nnz,cooInd,cooValues,idxType,idxBase,valueType) bind(c, name="cusparseCooAoSGet")
#else
    function hipsparseCooAoSGet_(spMatDescr,rows,cols,nnz,cooInd,cooValues,idxType,idxBase,valueType) bind(c, name="hipsparseCooAoSGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCooAoSGet_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: rows
      type(c_ptr),value :: cols
      type(c_ptr),value :: nnz
      type(c_ptr) :: cooInd
      type(c_ptr) :: cooValues
      type(c_ptr),value :: idxType
      type(c_ptr),value :: idxBase
      type(c_ptr),value :: valueType
    end function

  end interface
  
  interface hipsparseCsrGet
#ifdef USE_CUDA_NAMES
    function hipsparseCsrGet_(spMatDescr,rows,cols,nnz,csrRowOffsets,csrColInd,csrValues,csrRowOffsetsType,csrColIndType,idxBase,valueType) bind(c, name="cusparseCsrGet")
#else
    function hipsparseCsrGet_(spMatDescr,rows,cols,nnz,csrRowOffsets,csrColInd,csrValues,csrRowOffsetsType,csrColIndType,idxBase,valueType) bind(c, name="hipsparseCsrGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCsrGet_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: rows
      type(c_ptr),value :: cols
      type(c_ptr),value :: nnz
      type(c_ptr) :: csrRowOffsets
      type(c_ptr) :: csrColInd
      type(c_ptr) :: csrValues
      type(c_ptr),value :: csrRowOffsetsType
      type(c_ptr),value :: csrColIndType
      type(c_ptr),value :: idxBase
      type(c_ptr),value :: valueType
    end function

  end interface
  
  interface hipsparseBlockedEllGet
#ifdef USE_CUDA_NAMES
    function hipsparseBlockedEllGet_(spMatDescr,rows,cols,ellBlockSize,ellCols,ellColInd,ellValue,ellIdxType,idxBase,valueType) bind(c, name="cusparseBlockedEllGet")
#else
    function hipsparseBlockedEllGet_(spMatDescr,rows,cols,ellBlockSize,ellCols,ellColInd,ellValue,ellIdxType,idxBase,valueType) bind(c, name="hipsparseBlockedEllGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseBlockedEllGet_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: rows
      type(c_ptr),value :: cols
      type(c_ptr),value :: ellBlockSize
      type(c_ptr),value :: ellCols
      type(c_ptr) :: ellColInd
      type(c_ptr) :: ellValue
      type(c_ptr),value :: ellIdxType
      type(c_ptr),value :: idxBase
      type(c_ptr),value :: valueType
    end function

  end interface
  
  interface hipsparseCsrSetPointers
#ifdef USE_CUDA_NAMES
    function hipsparseCsrSetPointers_(spMatDescr,csrRowOffsets,csrColInd,csrValues) bind(c, name="cusparseCsrSetPointers")
#else
    function hipsparseCsrSetPointers_(spMatDescr,csrRowOffsets,csrColInd,csrValues) bind(c, name="hipsparseCsrSetPointers")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCsrSetPointers_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: csrRowOffsets
      type(c_ptr),value :: csrColInd
      type(c_ptr),value :: csrValues
    end function

  end interface
  
  interface hipsparseCscSetPointers
#ifdef USE_CUDA_NAMES
    function hipsparseCscSetPointers_(spMatDescr,cscColOffsets,cscRowInd,cscValues) bind(c, name="cusparseCscSetPointers")
#else
    function hipsparseCscSetPointers_(spMatDescr,cscColOffsets,cscRowInd,cscValues) bind(c, name="hipsparseCscSetPointers")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCscSetPointers_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: cscColOffsets
      type(c_ptr),value :: cscRowInd
      type(c_ptr),value :: cscValues
    end function

  end interface
  
  interface hipsparseCooSetPointers
#ifdef USE_CUDA_NAMES
    function hipsparseCooSetPointers_(spMatDescr,cooRowInd,cooColInd,cooValues) bind(c, name="cusparseCooSetPointers")
#else
    function hipsparseCooSetPointers_(spMatDescr,cooRowInd,cooColInd,cooValues) bind(c, name="hipsparseCooSetPointers")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCooSetPointers_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: cooRowInd
      type(c_ptr),value :: cooColInd
      type(c_ptr),value :: cooValues
    end function

  end interface
  
  interface hipsparseSpMatGetSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatGetSize_(spMatDescr,rows,cols,nnz) bind(c, name="cusparseSpMatGetSize")
#else
    function hipsparseSpMatGetSize_(spMatDescr,rows,cols,nnz) bind(c, name="hipsparseSpMatGetSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatGetSize_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: rows
      type(c_ptr),value :: cols
      type(c_ptr),value :: nnz
    end function

  end interface
  
  interface hipsparseSpMatGetFormat
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatGetFormat_(spMatDescr,myFormat) bind(c, name="cusparseSpMatGetFormat")
#else
    function hipsparseSpMatGetFormat_(spMatDescr,myFormat) bind(c, name="hipsparseSpMatGetFormat")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatGetFormat_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: myFormat
    end function

  end interface
  
  interface hipsparseSpMatGetIndexBase
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatGetIndexBase_(spMatDescr,idxBase) bind(c, name="cusparseSpMatGetIndexBase")
#else
    function hipsparseSpMatGetIndexBase_(spMatDescr,idxBase) bind(c, name="hipsparseSpMatGetIndexBase")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatGetIndexBase_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: idxBase
    end function

  end interface
  
  interface hipsparseSpMatGetValues
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatGetValues_(spMatDescr,values) bind(c, name="cusparseSpMatGetValues")
#else
    function hipsparseSpMatGetValues_(spMatDescr,values) bind(c, name="hipsparseSpMatGetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatGetValues_
      type(c_ptr),value :: spMatDescr
      type(c_ptr) :: values
    end function

  end interface
  
  interface hipsparseSpMatSetValues
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatSetValues_(spMatDescr,values) bind(c, name="cusparseSpMatSetValues")
#else
    function hipsparseSpMatSetValues_(spMatDescr,values) bind(c, name="hipsparseSpMatSetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatSetValues_
      type(c_ptr),value :: spMatDescr
      type(c_ptr),value :: values
    end function

  end interface
  
  interface hipsparseCreateDnVec
#ifdef USE_CUDA_NAMES
    function hipsparseCreateDnVec_(dnVecDescr,mySize,values,valueType) bind(c, name="cusparseCreateDnVec")
#else
    function hipsparseCreateDnVec_(dnVecDescr,mySize,values,valueType) bind(c, name="hipsparseCreateDnVec")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateDnVec_
      type(c_ptr) :: dnVecDescr
      integer(c_int64_t),value :: mySize
      type(c_ptr),value :: values
      integer(kind(HIP_R_16F)),value :: valueType
    end function

  end interface
  
  interface hipsparseDestroyDnVec
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyDnVec_(dnVecDescr) bind(c, name="cusparseDestroyDnVec")
#else
    function hipsparseDestroyDnVec_(dnVecDescr) bind(c, name="hipsparseDestroyDnVec")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyDnVec_
      type(c_ptr),value :: dnVecDescr
    end function

  end interface
  
  interface hipsparseDnVecGet
#ifdef USE_CUDA_NAMES
    function hipsparseDnVecGet_(dnVecDescr,mySize,values,valueType) bind(c, name="cusparseDnVecGet")
#else
    function hipsparseDnVecGet_(dnVecDescr,mySize,values,valueType) bind(c, name="hipsparseDnVecGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnVecGet_
      type(c_ptr),value :: dnVecDescr
      type(c_ptr),value :: mySize
      type(c_ptr) :: values
      type(c_ptr),value :: valueType
    end function

  end interface
  
  interface hipsparseDnVecGetValues
#ifdef USE_CUDA_NAMES
    function hipsparseDnVecGetValues_(dnVecDescr,values) bind(c, name="cusparseDnVecGetValues")
#else
    function hipsparseDnVecGetValues_(dnVecDescr,values) bind(c, name="hipsparseDnVecGetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnVecGetValues_
      type(c_ptr),value :: dnVecDescr
      type(c_ptr) :: values
    end function

  end interface
  
  interface hipsparseDnVecSetValues
#ifdef USE_CUDA_NAMES
    function hipsparseDnVecSetValues_(dnVecDescr,values) bind(c, name="cusparseDnVecSetValues")
#else
    function hipsparseDnVecSetValues_(dnVecDescr,values) bind(c, name="hipsparseDnVecSetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnVecSetValues_
      type(c_ptr),value :: dnVecDescr
      type(c_ptr),value :: values
    end function

  end interface
  
  interface hipsparseCreateDnMat
#ifdef USE_CUDA_NAMES
    function hipsparseCreateDnMat_(dnMatDescr,rows,cols,ld,values,valueType,order) bind(c, name="cusparseCreateDnMat")
#else
    function hipsparseCreateDnMat_(dnMatDescr,rows,cols,ld,values,valueType,order) bind(c, name="hipsparseCreateDnMat")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateDnMat_
      type(c_ptr) :: dnMatDescr
      integer(c_int64_t),value :: rows
      integer(c_int64_t),value :: cols
      integer(c_int64_t),value :: ld
      type(c_ptr),value :: values
      integer(kind(HIP_R_16F)),value :: valueType
      integer(kind(HIPSPARSE_ORDER_COLUMN)),value :: order
    end function

  end interface
  
  interface hipsparseDestroyDnMat
#ifdef USE_CUDA_NAMES
    function hipsparseDestroyDnMat_(dnMatDescr) bind(c, name="cusparseDestroyDnMat")
#else
    function hipsparseDestroyDnMat_(dnMatDescr) bind(c, name="hipsparseDestroyDnMat")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDestroyDnMat_
      type(c_ptr),value :: dnMatDescr
    end function

  end interface
  
  interface hipsparseDnMatGet
#ifdef USE_CUDA_NAMES
    function hipsparseDnMatGet_(dnMatDescr,rows,cols,ld,values,valueType,order) bind(c, name="cusparseDnMatGet")
#else
    function hipsparseDnMatGet_(dnMatDescr,rows,cols,ld,values,valueType,order) bind(c, name="hipsparseDnMatGet")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnMatGet_
      type(c_ptr),value :: dnMatDescr
      type(c_ptr),value :: rows
      type(c_ptr),value :: cols
      type(c_ptr),value :: ld
      type(c_ptr) :: values
      type(c_ptr),value :: valueType
      type(c_ptr),value :: order
    end function

  end interface
  
  interface hipsparseDnMatGetValues
#ifdef USE_CUDA_NAMES
    function hipsparseDnMatGetValues_(dnMatDescr,values) bind(c, name="cusparseDnMatGetValues")
#else
    function hipsparseDnMatGetValues_(dnMatDescr,values) bind(c, name="hipsparseDnMatGetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnMatGetValues_
      type(c_ptr),value :: dnMatDescr
      type(c_ptr) :: values
    end function

  end interface
  
  interface hipsparseDnMatSetValues
#ifdef USE_CUDA_NAMES
    function hipsparseDnMatSetValues_(dnMatDescr,values) bind(c, name="cusparseDnMatSetValues")
#else
    function hipsparseDnMatSetValues_(dnMatDescr,values) bind(c, name="hipsparseDnMatSetValues")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnMatSetValues_
      type(c_ptr),value :: dnMatDescr
      type(c_ptr),value :: values
    end function

  end interface
  
  interface hipsparseSpMatGetAttribute
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatGetAttribute_(spMatDescr,attribute,myData,dataSize) bind(c, name="cusparseSpMatGetAttribute")
#else
    function hipsparseSpMatGetAttribute_(spMatDescr,attribute,myData,dataSize) bind(c, name="hipsparseSpMatGetAttribute")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatGetAttribute_
      type(c_ptr),value :: spMatDescr
      integer(kind(HIPSPARSE_SPMAT_FILL_MODE)),value :: attribute
      type(c_ptr),value :: myData
      integer(c_size_t),value :: dataSize
    end function

  end interface
  
  interface hipsparseSpMatSetAttribute
#ifdef USE_CUDA_NAMES
    function hipsparseSpMatSetAttribute_(spMatDescr,attribute,myData,dataSize) bind(c, name="cusparseSpMatSetAttribute")
#else
    function hipsparseSpMatSetAttribute_(spMatDescr,attribute,myData,dataSize) bind(c, name="hipsparseSpMatSetAttribute")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMatSetAttribute_
      type(c_ptr),value :: spMatDescr
      integer(kind(HIPSPARSE_SPMAT_FILL_MODE)),value :: attribute
      type(c_ptr),value :: myData
      integer(c_size_t),value :: dataSize
    end function

  end interface
  
  interface hipsparseAxpby
#ifdef USE_CUDA_NAMES
    function hipsparseAxpby_(handle,alpha,vecX,beta,vecY) bind(c, name="cusparseAxpby")
#else
    function hipsparseAxpby_(handle,alpha,vecX,beta,vecY) bind(c, name="hipsparseAxpby")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseAxpby_
      type(c_ptr),value :: handle
      type(c_ptr),value :: alpha
      type(c_ptr),value :: vecX
      type(c_ptr),value :: beta
      type(c_ptr),value :: vecY
    end function

  end interface
  
  interface hipsparseGather
#ifdef USE_CUDA_NAMES
    function hipsparseGather_(handle,vecY,vecX) bind(c, name="cusparseGather")
#else
    function hipsparseGather_(handle,vecY,vecX) bind(c, name="hipsparseGather")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseGather_
      type(c_ptr),value :: handle
      type(c_ptr),value :: vecY
      type(c_ptr),value :: vecX
    end function

  end interface
  
  interface hipsparseScatter
#ifdef USE_CUDA_NAMES
    function hipsparseScatter_(handle,vecX,vecY) bind(c, name="cusparseScatter")
#else
    function hipsparseScatter_(handle,vecX,vecY) bind(c, name="hipsparseScatter")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScatter_
      type(c_ptr),value :: handle
      type(c_ptr),value :: vecX
      type(c_ptr),value :: vecY
    end function

  end interface
  
  interface hipsparseRot
#ifdef USE_CUDA_NAMES
    function hipsparseRot_(handle,c_coeff,s_coeff,vecX,vecY) bind(c, name="cusparseRot")
#else
    function hipsparseRot_(handle,c_coeff,s_coeff,vecX,vecY) bind(c, name="hipsparseRot")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseRot_
      type(c_ptr),value :: handle
      type(c_ptr),value :: c_coeff
      type(c_ptr),value :: s_coeff
      type(c_ptr),value :: vecX
      type(c_ptr),value :: vecY
    end function

  end interface
  
  interface hipsparseSparseToDense_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSparseToDense_bufferSize_(handle,matA,matB,alg,bufferSize) bind(c, name="cusparseSparseToDense_bufferSize")
#else
    function hipsparseSparseToDense_bufferSize_(handle,matA,matB,alg,bufferSize) bind(c, name="hipsparseSparseToDense_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSparseToDense_bufferSize_
      type(c_ptr),value :: handle
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      integer(kind(HIPSPARSE_SPARSETODENSE_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseSparseToDense_bufferSize_rank_0,&
      hipsparseSparseToDense_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseSparseToDense
#ifdef USE_CUDA_NAMES
    function hipsparseSparseToDense_(handle,matA,matB,alg,externalBuffer) bind(c, name="cusparseSparseToDense")
#else
    function hipsparseSparseToDense_(handle,matA,matB,alg,externalBuffer) bind(c, name="hipsparseSparseToDense")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSparseToDense_
      type(c_ptr),value :: handle
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      integer(kind(HIPSPARSE_SPARSETODENSE_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseDenseToSparse_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseDenseToSparse_bufferSize_(handle,matA,matB,alg,bufferSize) bind(c, name="cusparseDenseToSparse_bufferSize")
#else
    function hipsparseDenseToSparse_bufferSize_(handle,matA,matB,alg,bufferSize) bind(c, name="hipsparseDenseToSparse_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDenseToSparse_bufferSize_
      type(c_ptr),value :: handle
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      integer(kind(HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: bufferSize
    end function

#ifdef USE_FPOINTER_INTERFACES
    module procedure &
      hipsparseDenseToSparse_bufferSize_rank_0,&
      hipsparseDenseToSparse_bufferSize_rank_1
#endif
  end interface
  
  interface hipsparseDenseToSparse_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseDenseToSparse_analysis_(handle,matA,matB,alg,externalBuffer) bind(c, name="cusparseDenseToSparse_analysis")
#else
    function hipsparseDenseToSparse_analysis_(handle,matA,matB,alg,externalBuffer) bind(c, name="hipsparseDenseToSparse_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDenseToSparse_analysis_
      type(c_ptr),value :: handle
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      integer(kind(HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseDenseToSparse_convert
#ifdef USE_CUDA_NAMES
    function hipsparseDenseToSparse_convert_(handle,matA,matB,alg,externalBuffer) bind(c, name="cusparseDenseToSparse_convert")
#else
    function hipsparseDenseToSparse_convert_(handle,matA,matB,alg,externalBuffer) bind(c, name="hipsparseDenseToSparse_convert")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDenseToSparse_convert_
      type(c_ptr),value :: handle
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      integer(kind(HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseSpVV_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpVV_bufferSize_(handle,opX,vecX,vecY,myResult,computeType,bufferSize) bind(c, name="cusparseSpVV_bufferSize")
#else
    function hipsparseSpVV_bufferSize_(handle,opX,vecX,vecY,myResult,computeType,bufferSize) bind(c, name="hipsparseSpVV_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpVV_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opX
      type(c_ptr),value :: vecX
      type(c_ptr),value :: vecY
      type(c_ptr),value :: myResult
      integer(kind(HIP_R_16F)),value :: computeType
      type(c_ptr),value :: bufferSize
    end function

  end interface
  
  interface hipsparseSpVV
#ifdef USE_CUDA_NAMES
    function hipsparseSpVV_(handle,opX,vecX,vecY,myResult,computeType,externalBuffer) bind(c, name="cusparseSpVV")
#else
    function hipsparseSpVV_(handle,opX,vecX,vecY,myResult,computeType,externalBuffer) bind(c, name="hipsparseSpVV")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpVV_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opX
      type(c_ptr),value :: vecX
      type(c_ptr),value :: vecY
      type(c_ptr),value :: myResult
      integer(kind(HIP_R_16F)),value :: computeType
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseSpMV_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpMV_bufferSize_(handle,opA,alpha,matA,vecX,beta,vecY,computeType,alg,bufferSize) bind(c, name="cusparseSpMV_bufferSize")
#else
    function hipsparseSpMV_bufferSize_(handle,opA,alpha,matA,vecX,beta,vecY,computeType,alg,bufferSize) bind(c, name="hipsparseSpMV_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMV_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: vecX
      type(c_ptr),value :: beta
      type(c_ptr),value :: vecY
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_MV_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: bufferSize
    end function

  end interface
  
  interface hipsparseSpMV
#ifdef USE_CUDA_NAMES
    function hipsparseSpMV_(handle,opA,alpha,matA,vecX,beta,vecY,computeType,alg,externalBuffer) bind(c, name="cusparseSpMV")
#else
    function hipsparseSpMV_(handle,opA,alpha,matA,vecX,beta,vecY,computeType,alg,externalBuffer) bind(c, name="hipsparseSpMV")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMV_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: vecX
      type(c_ptr),value :: beta
      type(c_ptr),value :: vecY
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_MV_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseSpMM_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpMM_bufferSize_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,bufferSize) bind(c, name="cusparseSpMM_bufferSize")
#else
    function hipsparseSpMM_bufferSize_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,bufferSize) bind(c, name="hipsparseSpMM_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMM_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: beta
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_MM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: bufferSize
    end function

  end interface
  !>  Description: Preprocess step of the sparse matrix multiplication with a dense matrix.
  interface hipsparseSpMM_preprocess
#ifdef USE_CUDA_NAMES
    function hipsparseSpMM_preprocess_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,externalBuffer) bind(c, name="cusparseSpMM_preprocess")
#else
    function hipsparseSpMM_preprocess_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,externalBuffer) bind(c, name="hipsparseSpMM_preprocess")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMM_preprocess_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: beta
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_MM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  !>  Description: Compute the sparse matrix multiplication with a dense matrix
  interface hipsparseSpMM
#ifdef USE_CUDA_NAMES
    function hipsparseSpMM_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,externalBuffer) bind(c, name="cusparseSpMM")
#else
    function hipsparseSpMM_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,externalBuffer) bind(c, name="hipsparseSpMM")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpMM_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: beta
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_MM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseSpGEMM_createDescr
#ifdef USE_CUDA_NAMES
    function hipsparseSpGEMM_createDescr_(descr) bind(c, name="cusparseSpGEMM_createDescr")
#else
    function hipsparseSpGEMM_createDescr_(descr) bind(c, name="hipsparseSpGEMM_createDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpGEMM_createDescr_
      type(c_ptr) :: descr
    end function

  end interface
  
  interface hipsparseSpGEMM_destroyDescr
#ifdef USE_CUDA_NAMES
    function hipsparseSpGEMM_destroyDescr_(descr) bind(c, name="cusparseSpGEMM_destroyDescr")
#else
    function hipsparseSpGEMM_destroyDescr_(descr) bind(c, name="hipsparseSpGEMM_destroyDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpGEMM_destroyDescr_
      type(c_ptr),value :: descr
    end function

  end interface
  
  interface hipsparseSpGEMM_workEstimation
#ifdef USE_CUDA_NAMES
    function hipsparseSpGEMM_workEstimation_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,spgemmDescr,bufferSize1,externalBuffer1) bind(c, name="cusparseSpGEMM_workEstimation")
#else
    function hipsparseSpGEMM_workEstimation_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,spgemmDescr,bufferSize1,externalBuffer1) bind(c, name="hipsparseSpGEMM_workEstimation")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpGEMM_workEstimation_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: beta
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPGEMM_DEFAULT)),value :: alg
      type(c_ptr),value :: spgemmDescr
      type(c_ptr),value :: bufferSize1
      type(c_ptr),value :: externalBuffer1
    end function

  end interface
  
  interface hipsparseSpGEMM_compute
#ifdef USE_CUDA_NAMES
    function hipsparseSpGEMM_compute_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,spgemmDescr,bufferSize2,externalBuffer2) bind(c, name="cusparseSpGEMM_compute")
#else
    function hipsparseSpGEMM_compute_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,spgemmDescr,bufferSize2,externalBuffer2) bind(c, name="hipsparseSpGEMM_compute")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpGEMM_compute_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: beta
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPGEMM_DEFAULT)),value :: alg
      type(c_ptr),value :: spgemmDescr
      type(c_ptr),value :: bufferSize2
      type(c_ptr),value :: externalBuffer2
    end function

  end interface
  
  interface hipsparseSpGEMM_copy
#ifdef USE_CUDA_NAMES
    function hipsparseSpGEMM_copy_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,spgemmDescr) bind(c, name="cusparseSpGEMM_copy")
#else
    function hipsparseSpGEMM_copy_(handle,opA,opB,alpha,matA,matB,beta,matC,computeType,alg,spgemmDescr) bind(c, name="hipsparseSpGEMM_copy")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpGEMM_copy_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: beta
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPGEMM_DEFAULT)),value :: alg
      type(c_ptr),value :: spgemmDescr
    end function

  end interface
  
  interface hipsparseSDDMM
#ifdef USE_CUDA_NAMES
    function hipsparseSDDMM_(handle,opA,opB,alpha,A,B,beta,C,computeType,alg,tempBuffer) bind(c, name="cusparseSDDMM")
#else
    function hipsparseSDDMM_(handle,opA,opB,alpha,A,B,beta,C,computeType,alg,tempBuffer) bind(c, name="hipsparseSDDMM")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSDDMM_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: A
      type(c_ptr),value :: B
      type(c_ptr),value :: beta
      type(c_ptr),value :: C
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SDDMM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: tempBuffer
    end function

  end interface
  
  interface hipsparseSDDMM_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSDDMM_bufferSize_(handle,opA,opB,alpha,A,B,beta,C,computeType,alg,bufferSize) bind(c, name="cusparseSDDMM_bufferSize")
#else
    function hipsparseSDDMM_bufferSize_(handle,opA,opB,alpha,A,B,beta,C,computeType,alg,bufferSize) bind(c, name="hipsparseSDDMM_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSDDMM_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: A
      type(c_ptr),value :: B
      type(c_ptr),value :: beta
      type(c_ptr),value :: C
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SDDMM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: bufferSize
    end function

  end interface
  
  interface hipsparseSDDMM_preprocess
#ifdef USE_CUDA_NAMES
    function hipsparseSDDMM_preprocess_(handle,opA,opB,alpha,A,B,beta,C,computeType,alg,tempBuffer) bind(c, name="cusparseSDDMM_preprocess")
#else
    function hipsparseSDDMM_preprocess_(handle,opA,opB,alpha,A,B,beta,C,computeType,alg,tempBuffer) bind(c, name="hipsparseSDDMM_preprocess")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSDDMM_preprocess_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: A
      type(c_ptr),value :: B
      type(c_ptr),value :: beta
      type(c_ptr),value :: C
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SDDMM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: tempBuffer
    end function

  end interface
  
  interface hipsparseSpSV_createDescr
#ifdef USE_CUDA_NAMES
    function hipsparseSpSV_createDescr_(descr) bind(c, name="cusparseSpSV_createDescr")
#else
    function hipsparseSpSV_createDescr_(descr) bind(c, name="hipsparseSpSV_createDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSV_createDescr_
      type(c_ptr) :: descr
    end function

  end interface
  
  interface hipsparseSpSV_destroyDescr
#ifdef USE_CUDA_NAMES
    function hipsparseSpSV_destroyDescr_(descr) bind(c, name="cusparseSpSV_destroyDescr")
#else
    function hipsparseSpSV_destroyDescr_(descr) bind(c, name="hipsparseSpSV_destroyDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSV_destroyDescr_
      type(c_ptr),value :: descr
    end function

  end interface
  
  interface hipsparseSpSV_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpSV_bufferSize_(handle,opA,alpha,matA,x,y,computeType,alg,spsvDescr,bufferSize) bind(c, name="cusparseSpSV_bufferSize")
#else
    function hipsparseSpSV_bufferSize_(handle,opA,alpha,matA,x,y,computeType,alg,spsvDescr,bufferSize) bind(c, name="hipsparseSpSV_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSV_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: x
      type(c_ptr),value :: y
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPSV_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: spsvDescr
      type(c_ptr),value :: bufferSize
    end function

  end interface
  !>  Description: Analysis step of solution of triangular linear system op(A) * Y = alpha * X,
  !> where A is a sparse matrix in CSR storage format, x and Y are dense vectors.
  interface hipsparseSpSV_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseSpSV_analysis_(handle,opA,alpha,matA,x,y,computeType,alg,spsvDescr,externalBuffer) bind(c, name="cusparseSpSV_analysis")
#else
    function hipsparseSpSV_analysis_(handle,opA,alpha,matA,x,y,computeType,alg,spsvDescr,externalBuffer) bind(c, name="hipsparseSpSV_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSV_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: x
      type(c_ptr),value :: y
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPSV_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: spsvDescr
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  !>  Description: Solve step of solution of triangular linear system op(A) * Y = alpha * X,
  !> where A is a sparse matrix in CSR storage format, x and Y are dense vectors.
  interface hipsparseSpSV_solve
#ifdef USE_CUDA_NAMES
    function hipsparseSpSV_solve_(handle,opA,alpha,matA,x,y,computeType,alg,spsvDescr,externalBuffer) bind(c, name="cusparseSpSV_solve")
#else
    function hipsparseSpSV_solve_(handle,opA,alpha,matA,x,y,computeType,alg,spsvDescr,externalBuffer) bind(c, name="hipsparseSpSV_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSV_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: x
      type(c_ptr),value :: y
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPSV_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: spsvDescr
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  
  interface hipsparseSpSM_createDescr
#ifdef USE_CUDA_NAMES
    function hipsparseSpSM_createDescr_(descr) bind(c, name="cusparseSpSM_createDescr")
#else
    function hipsparseSpSM_createDescr_(descr) bind(c, name="hipsparseSpSM_createDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSM_createDescr_
      type(c_ptr) :: descr
    end function

  end interface
  
  interface hipsparseSpSM_destroyDescr
#ifdef USE_CUDA_NAMES
    function hipsparseSpSM_destroyDescr_(descr) bind(c, name="cusparseSpSM_destroyDescr")
#else
    function hipsparseSpSM_destroyDescr_(descr) bind(c, name="hipsparseSpSM_destroyDescr")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSM_destroyDescr_
      type(c_ptr),value :: descr
    end function

  end interface
  
  interface hipsparseSpSM_bufferSize
#ifdef USE_CUDA_NAMES
    function hipsparseSpSM_bufferSize_(handle,opA,opB,alpha,matA,matB,matC,computeType,alg,spsmDescr,bufferSize) bind(c, name="cusparseSpSM_bufferSize")
#else
    function hipsparseSpSM_bufferSize_(handle,opA,opB,alpha,matA,matB,matC,computeType,alg,spsmDescr,bufferSize) bind(c, name="hipsparseSpSM_bufferSize")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSM_bufferSize_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPSM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: spsmDescr
      type(c_ptr),value :: bufferSize
    end function

  end interface
  !>  Description: Analysis step of solution of triangular linear system op(A) * C = alpha * op(B),
  !> where A is a sparse matrix in CSR storage format, B and C are dense vectors.
  interface hipsparseSpSM_analysis
#ifdef USE_CUDA_NAMES
    function hipsparseSpSM_analysis_(handle,opA,opB,alpha,matA,matB,matC,computeType,alg,spsmDescr,externalBuffer) bind(c, name="cusparseSpSM_analysis")
#else
    function hipsparseSpSM_analysis_(handle,opA,opB,alpha,matA,matB,matC,computeType,alg,spsmDescr,externalBuffer) bind(c, name="hipsparseSpSM_analysis")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSM_analysis_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPSM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: spsmDescr
      type(c_ptr),value :: externalBuffer
    end function

  end interface
  !>  Description: Solve step of solution of triangular linear system op(A) * C = alpha * op(B),
  !> where A is a sparse matrix in CSR storage format, B and C are dense vectors.
  interface hipsparseSpSM_solve
#ifdef USE_CUDA_NAMES
    function hipsparseSpSM_solve_(handle,opA,opB,alpha,matA,matB,matC,computeType,alg,spsmDescr,externalBuffer) bind(c, name="cusparseSpSM_solve")
#else
    function hipsparseSpSM_solve_(handle,opA,opB,alpha,matA,matB,matC,computeType,alg,spsmDescr,externalBuffer) bind(c, name="hipsparseSpSM_solve")
#endif
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpSM_solve_
      type(c_ptr),value :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)),value :: opB
      type(c_ptr),value :: alpha
      type(c_ptr),value :: matA
      type(c_ptr),value :: matB
      type(c_ptr),value :: matC
      integer(kind(HIP_R_16F)),value :: computeType
      integer(kind(HIPSPARSE_SPSM_ALG_DEFAULT)),value :: alg
      type(c_ptr),value :: spsmDescr
      type(c_ptr),value :: externalBuffer
    end function

  end interface

#ifdef USE_FPOINTER_INTERFACES
  contains
    function hipsparseSaxpyi_rank_0(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSaxpyi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float) :: alpha
      real(c_float),target :: xVal
      integer(c_int),target :: xInd
      real(c_float),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSaxpyi_rank_0 = hipsparseSaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseSaxpyi_rank_1(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSaxpyi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float) :: alpha
      real(c_float),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_float),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSaxpyi_rank_1 = hipsparseSaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseDaxpyi_rank_0(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDaxpyi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double) :: alpha
      real(c_double),target :: xVal
      integer(c_int),target :: xInd
      real(c_double),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDaxpyi_rank_0 = hipsparseDaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseDaxpyi_rank_1(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDaxpyi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double) :: alpha
      real(c_double),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_double),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDaxpyi_rank_1 = hipsparseDaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseCaxpyi_rank_0(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCaxpyi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_float_complex),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCaxpyi_rank_0 = hipsparseCaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseCaxpyi_rank_1(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCaxpyi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_float_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCaxpyi_rank_1 = hipsparseCaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseZaxpyi_rank_0(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZaxpyi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_double_complex),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZaxpyi_rank_0 = hipsparseZaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseZaxpyi_rank_1(handle,nnz,alpha,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZaxpyi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_double_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZaxpyi_rank_1 = hipsparseZaxpyi_(handle,nnz,alpha,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseSdoti_rank_0(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdoti_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target :: xVal
      integer(c_int),target :: xInd
      real(c_float),target :: y
      real(c_float),target :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSdoti_rank_0 = hipsparseSdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseSdoti_rank_1(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdoti_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_float),target,dimension(:) :: y
      real(c_float),target,dimension(:) :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSdoti_rank_1 = hipsparseSdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseDdoti_rank_0(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdoti_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target :: xVal
      integer(c_int),target :: xInd
      real(c_double),target :: y
      real(c_double),target :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDdoti_rank_0 = hipsparseDdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseDdoti_rank_1(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdoti_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_double),target,dimension(:) :: y
      real(c_double),target,dimension(:) :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDdoti_rank_1 = hipsparseDdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseCdoti_rank_0(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdoti_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_float_complex),target :: y
      complex(c_float_complex),target :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCdoti_rank_0 = hipsparseCdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseCdoti_rank_1(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdoti_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_float_complex),target,dimension(:) :: y
      complex(c_float_complex),target,dimension(:) :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCdoti_rank_1 = hipsparseCdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseZdoti_rank_0(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdoti_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_double_complex),target :: y
      complex(c_double_complex),target :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZdoti_rank_0 = hipsparseZdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseZdoti_rank_1(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdoti_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_double_complex),target,dimension(:) :: y
      complex(c_double_complex),target,dimension(:) :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZdoti_rank_1 = hipsparseZdoti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseCdotci_rank_0(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdotci_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_float_complex),target :: y
      complex(c_float_complex),target :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCdotci_rank_0 = hipsparseCdotci_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseCdotci_rank_1(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdotci_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_float_complex),target,dimension(:) :: y
      complex(c_float_complex),target,dimension(:) :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCdotci_rank_1 = hipsparseCdotci_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseZdotci_rank_0(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdotci_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_double_complex),target :: y
      complex(c_double_complex),target :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZdotci_rank_0 = hipsparseZdotci_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseZdotci_rank_1(handle,nnz,xVal,xInd,y,myResult,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdotci_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_double_complex),target,dimension(:) :: y
      complex(c_double_complex),target,dimension(:) :: myResult
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZdotci_rank_1 = hipsparseZdotci_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c_loc(myResult),idxBase)
    end function

    function hipsparseSgthr_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgthr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target :: y
      real(c_float),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSgthr_rank_0 = hipsparseSgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseSgthr_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgthr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: y
      real(c_float),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSgthr_rank_1 = hipsparseSgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseDgthr_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgthr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target :: y
      real(c_double),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDgthr_rank_0 = hipsparseDgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseDgthr_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgthr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: y
      real(c_double),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDgthr_rank_1 = hipsparseDgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseCgthr_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgthr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target :: y
      complex(c_float_complex),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCgthr_rank_0 = hipsparseCgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseCgthr_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgthr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: y
      complex(c_float_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCgthr_rank_1 = hipsparseCgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseZgthr_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgthr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target :: y
      complex(c_double_complex),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZgthr_rank_0 = hipsparseZgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseZgthr_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgthr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: y
      complex(c_double_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZgthr_rank_1 = hipsparseZgthr_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseSgthrz_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgthrz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target :: y
      real(c_float),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSgthrz_rank_0 = hipsparseSgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseSgthrz_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgthrz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: y
      real(c_float),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSgthrz_rank_1 = hipsparseSgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseDgthrz_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgthrz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target :: y
      real(c_double),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDgthrz_rank_0 = hipsparseDgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseDgthrz_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgthrz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: y
      real(c_double),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDgthrz_rank_1 = hipsparseDgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseCgthrz_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgthrz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target :: y
      complex(c_float_complex),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCgthrz_rank_0 = hipsparseCgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseCgthrz_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgthrz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: y
      complex(c_float_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCgthrz_rank_1 = hipsparseCgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseZgthrz_rank_0(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgthrz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target :: y
      complex(c_double_complex),target :: xVal
      integer(c_int),target :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZgthrz_rank_0 = hipsparseZgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseZgthrz_rank_1(handle,nnz,y,xVal,xInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgthrz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: y
      complex(c_double_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZgthrz_rank_1 = hipsparseZgthrz_(handle,nnz,c_loc(y),c_loc(xVal),c_loc(xInd),idxBase)
    end function

    function hipsparseSroti_rank_0(handle,nnz,xVal,xInd,y,c,s,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSroti_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target :: xVal
      integer(c_int),target :: xInd
      real(c_float),target :: y
      real(c_float) :: c
      real(c_float) :: s
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSroti_rank_0 = hipsparseSroti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c,s,idxBase)
    end function

    function hipsparseSroti_rank_1(handle,nnz,xVal,xInd,y,c,s,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSroti_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_float),target,dimension(:) :: y
      real(c_float) :: c
      real(c_float) :: s
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSroti_rank_1 = hipsparseSroti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c,s,idxBase)
    end function

    function hipsparseDroti_rank_0(handle,nnz,xVal,xInd,y,c,s,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDroti_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target :: xVal
      integer(c_int),target :: xInd
      real(c_double),target :: y
      real(c_double) :: c
      real(c_double) :: s
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDroti_rank_0 = hipsparseDroti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c,s,idxBase)
    end function

    function hipsparseDroti_rank_1(handle,nnz,xVal,xInd,y,c,s,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDroti_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_double),target,dimension(:) :: y
      real(c_double) :: c
      real(c_double) :: s
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDroti_rank_1 = hipsparseDroti_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),c,s,idxBase)
    end function

    function hipsparseSsctr_rank_0(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSsctr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target :: xVal
      integer(c_int),target :: xInd
      real(c_float),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSsctr_rank_0 = hipsparseSsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseSsctr_rank_1(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSsctr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_float),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseSsctr_rank_1 = hipsparseSsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseDsctr_rank_0(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDsctr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target :: xVal
      integer(c_int),target :: xInd
      real(c_double),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDsctr_rank_0 = hipsparseDsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseDsctr_rank_1(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDsctr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      real(c_double),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDsctr_rank_1 = hipsparseDsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseCsctr_rank_0(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCsctr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_float_complex),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCsctr_rank_0 = hipsparseCsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseCsctr_rank_1(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCsctr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_float_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCsctr_rank_1 = hipsparseCsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseZsctr_rank_0(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZsctr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target :: xVal
      integer(c_int),target :: xInd
      complex(c_double_complex),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZsctr_rank_0 = hipsparseZsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseZsctr_rank_1(handle,nnz,xVal,xInd,y,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZsctr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: xVal
      integer(c_int),target,dimension(:) :: xInd
      complex(c_double_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZsctr_rank_1 = hipsparseZsctr_(handle,nnz,c_loc(xVal),c_loc(xInd),c_loc(y),idxBase)
    end function

    function hipsparseScsrmv_rank_0(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float),target :: x
      real(c_float) :: beta
      real(c_float),target :: y
      !
      hipsparseScsrmv_rank_0 = hipsparseScsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseScsrmv_rank_1(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:) :: x
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: y
      !
      hipsparseScsrmv_rank_1 = hipsparseScsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDcsrmv_rank_0(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double),target :: x
      real(c_double) :: beta
      real(c_double),target :: y
      !
      hipsparseDcsrmv_rank_0 = hipsparseDcsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDcsrmv_rank_1(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:) :: x
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: y
      !
      hipsparseDcsrmv_rank_1 = hipsparseDcsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseCcsrmv_rank_0(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex),target :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: y
      !
      hipsparseCcsrmv_rank_0 = hipsparseCcsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseCcsrmv_rank_1(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:) :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: y
      !
      hipsparseCcsrmv_rank_1 = hipsparseCcsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZcsrmv_rank_0(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex),target :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: y
      !
      hipsparseZcsrmv_rank_0 = hipsparseZcsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZcsrmv_rank_1(handle,transA,m,n,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:) :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: y
      !
      hipsparseZcsrmv_rank_1 = hipsparseZcsrmv_(handle,transA,m,n,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(x),beta,c_loc(y))
    end function

    function hipsparseScsrsv2_bufferSize_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseScsrsv2_bufferSize_rank_0 = hipsparseScsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsrsv2_bufferSize_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseScsrsv2_bufferSize_rank_1 = hipsparseScsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsrsv2_bufferSize_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDcsrsv2_bufferSize_rank_0 = hipsparseDcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsrsv2_bufferSize_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDcsrsv2_bufferSize_rank_1 = hipsparseDcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsrsv2_bufferSize_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCcsrsv2_bufferSize_rank_0 = hipsparseCcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsrsv2_bufferSize_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCcsrsv2_bufferSize_rank_1 = hipsparseCcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsrsv2_bufferSize_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZcsrsv2_bufferSize_rank_0 = hipsparseZcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsrsv2_bufferSize_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZcsrsv2_bufferSize_rank_1 = hipsparseZcsrsv2_bufferSize_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsrsv2_bufferSizeExt_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrsv2_bufferSizeExt_rank_0 = hipsparseScsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseScsrsv2_bufferSizeExt_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrsv2_bufferSizeExt_rank_1 = hipsparseScsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseDcsrsv2_bufferSizeExt_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrsv2_bufferSizeExt_rank_0 = hipsparseDcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseDcsrsv2_bufferSizeExt_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrsv2_bufferSizeExt_rank_1 = hipsparseDcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseCcsrsv2_bufferSizeExt_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrsv2_bufferSizeExt_rank_0 = hipsparseCcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseCcsrsv2_bufferSizeExt_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrsv2_bufferSizeExt_rank_1 = hipsparseCcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseZcsrsv2_bufferSizeExt_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrsv2_bufferSizeExt_rank_0 = hipsparseZcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseZcsrsv2_bufferSizeExt_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrsv2_bufferSizeExt_rank_1 = hipsparseZcsrsv2_bufferSizeExt_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseScsrsv2_analysis_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsv2_analysis_rank_0 = hipsparseScsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsv2_analysis_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsv2_analysis_rank_1 = hipsparseScsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsv2_analysis_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsv2_analysis_rank_0 = hipsparseDcsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsv2_analysis_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsv2_analysis_rank_1 = hipsparseDcsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsv2_analysis_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsv2_analysis_rank_0 = hipsparseCcsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsv2_analysis_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsv2_analysis_rank_1 = hipsparseCcsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsv2_analysis_rank_0(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsv2_analysis_rank_0 = hipsparseZcsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsv2_analysis_rank_1(handle,transA,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsv2_analysis_rank_1 = hipsparseZcsrsv2_analysis_(handle,transA,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsv2_solve_rank_0(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      real(c_float),target :: f
      real(c_float),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsv2_solve_rank_0 = hipsparseScsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseScsrsv2_solve_rank_1(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      real(c_float),target,dimension(:) :: f
      real(c_float),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsv2_solve_rank_1 = hipsparseScsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseDcsrsv2_solve_rank_0(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      real(c_double),target :: f
      real(c_double),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsv2_solve_rank_0 = hipsparseDcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseDcsrsv2_solve_rank_1(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      real(c_double),target,dimension(:) :: f
      real(c_double),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsv2_solve_rank_1 = hipsparseDcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseCcsrsv2_solve_rank_0(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      complex(c_float_complex),target :: f
      complex(c_float_complex),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsv2_solve_rank_0 = hipsparseCcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseCcsrsv2_solve_rank_1(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      complex(c_float_complex),target,dimension(:) :: f
      complex(c_float_complex),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsv2_solve_rank_1 = hipsparseCcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseZcsrsv2_solve_rank_0(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      complex(c_double_complex),target :: f
      complex(c_double_complex),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsv2_solve_rank_0 = hipsparseZcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseZcsrsv2_solve_rank_1(handle,transA,m,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      complex(c_double_complex),target,dimension(:) :: f
      complex(c_double_complex),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsv2_solve_rank_1 = hipsparseZcsrsv2_solve_(handle,transA,m,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseShybmv_rank_0(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseShybmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_float),target :: x
      real(c_float) :: beta
      real(c_float),target :: y
      !
      hipsparseShybmv_rank_0 = hipsparseShybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseShybmv_rank_1(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseShybmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_float),target,dimension(:) :: x
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: y
      !
      hipsparseShybmv_rank_1 = hipsparseShybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDhybmv_rank_0(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDhybmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_double),target :: x
      real(c_double) :: beta
      real(c_double),target :: y
      !
      hipsparseDhybmv_rank_0 = hipsparseDhybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDhybmv_rank_1(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDhybmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_double),target,dimension(:) :: x
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: y
      !
      hipsparseDhybmv_rank_1 = hipsparseDhybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseChybmv_rank_0(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseChybmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_float_complex),target :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: y
      !
      hipsparseChybmv_rank_0 = hipsparseChybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseChybmv_rank_1(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseChybmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_float_complex),target,dimension(:) :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: y
      !
      hipsparseChybmv_rank_1 = hipsparseChybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZhybmv_rank_0(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZhybmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_double_complex),target :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: y
      !
      hipsparseZhybmv_rank_0 = hipsparseZhybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZhybmv_rank_1(handle,transA,alpha,descrA,hybA,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZhybmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_double_complex),target,dimension(:) :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: y
      !
      hipsparseZhybmv_rank_1 = hipsparseZhybmv_(handle,transA,alpha,descrA,hybA,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseSbsrmv_rank_0(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      real(c_float),target :: x
      real(c_float) :: beta
      real(c_float),target :: y
      !
      hipsparseSbsrmv_rank_0 = hipsparseSbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseSbsrmv_rank_1(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      real(c_float),target,dimension(:) :: x
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: y
      !
      hipsparseSbsrmv_rank_1 = hipsparseSbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDbsrmv_rank_0(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      real(c_double),target :: x
      real(c_double) :: beta
      real(c_double),target :: y
      !
      hipsparseDbsrmv_rank_0 = hipsparseDbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDbsrmv_rank_1(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      real(c_double),target,dimension(:) :: x
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: y
      !
      hipsparseDbsrmv_rank_1 = hipsparseDbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseCbsrmv_rank_0(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      complex(c_float_complex),target :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: y
      !
      hipsparseCbsrmv_rank_0 = hipsparseCbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseCbsrmv_rank_1(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      complex(c_float_complex),target,dimension(:) :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: y
      !
      hipsparseCbsrmv_rank_1 = hipsparseCbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZbsrmv_rank_0(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      complex(c_double_complex),target :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: y
      !
      hipsparseZbsrmv_rank_0 = hipsparseZbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZbsrmv_rank_1(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      complex(c_double_complex),target,dimension(:) :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: y
      !
      hipsparseZbsrmv_rank_1 = hipsparseZbsrmv_(handle,dirA,transA,mb,nb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseSbsrxmv_rank_0(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrxmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      real(c_float),target :: x
      real(c_float) :: beta
      real(c_float),target :: y
      !
      hipsparseSbsrxmv_rank_0 = hipsparseSbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseSbsrxmv_rank_1(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrxmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      real(c_float),target,dimension(:) :: x
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: y
      !
      hipsparseSbsrxmv_rank_1 = hipsparseSbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDbsrxmv_rank_0(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrxmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      real(c_double),target :: x
      real(c_double) :: beta
      real(c_double),target :: y
      !
      hipsparseDbsrxmv_rank_0 = hipsparseDbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseDbsrxmv_rank_1(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrxmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      real(c_double),target,dimension(:) :: x
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: y
      !
      hipsparseDbsrxmv_rank_1 = hipsparseDbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseCbsrxmv_rank_0(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrxmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      complex(c_float_complex),target :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: y
      !
      hipsparseCbsrxmv_rank_0 = hipsparseCbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseCbsrxmv_rank_1(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrxmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      complex(c_float_complex),target,dimension(:) :: x
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: y
      !
      hipsparseCbsrxmv_rank_1 = hipsparseCbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZbsrxmv_rank_0(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrxmv_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      complex(c_double_complex),target :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: y
      !
      hipsparseZbsrxmv_rank_0 = hipsparseZbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseZbsrxmv_rank_1(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,x,beta,y)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrxmv_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: trans
      integer(c_int) :: sizeOfMask
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descr
      type(c_ptr) :: bsrVal
      type(c_ptr) :: bsrMaskPtr
      type(c_ptr) :: bsrRowPtr
      type(c_ptr) :: bsrEndPtr
      type(c_ptr) :: bsrColInd
      integer(c_int) :: blockDim
      complex(c_double_complex),target,dimension(:) :: x
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: y
      !
      hipsparseZbsrxmv_rank_1 = hipsparseZbsrxmv_(handle,dir,trans,sizeOfMask,mb,nb,nnzb,alpha,descr,bsrVal,bsrMaskPtr,bsrRowPtr,bsrEndPtr,bsrColInd,blockDim,c_loc(x),beta,c_loc(y))
    end function

    function hipsparseSbsrsv2_bufferSize_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsrsv2_bufferSize_rank_0 = hipsparseSbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsrsv2_bufferSize_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsrsv2_bufferSize_rank_1 = hipsparseSbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsrsv2_bufferSize_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsrsv2_bufferSize_rank_0 = hipsparseDbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsrsv2_bufferSize_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsrsv2_bufferSize_rank_1 = hipsparseDbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsrsv2_bufferSize_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsrsv2_bufferSize_rank_0 = hipsparseCbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsrsv2_bufferSize_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsrsv2_bufferSize_rank_1 = hipsparseCbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsrsv2_bufferSize_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsrsv2_bufferSize_rank_0 = hipsparseZbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsrsv2_bufferSize_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsrsv2_bufferSize_rank_1 = hipsparseZbsrsv2_bufferSize_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsrsv2_bufferSizeExt_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseSbsrsv2_bufferSizeExt_rank_0 = hipsparseSbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseSbsrsv2_bufferSizeExt_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseSbsrsv2_bufferSizeExt_rank_1 = hipsparseSbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseDbsrsv2_bufferSizeExt_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDbsrsv2_bufferSizeExt_rank_0 = hipsparseDbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseDbsrsv2_bufferSizeExt_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDbsrsv2_bufferSizeExt_rank_1 = hipsparseDbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseCbsrsv2_bufferSizeExt_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCbsrsv2_bufferSizeExt_rank_0 = hipsparseCbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseCbsrsv2_bufferSizeExt_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCbsrsv2_bufferSizeExt_rank_1 = hipsparseCbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseZbsrsv2_bufferSizeExt_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZbsrsv2_bufferSizeExt_rank_0 = hipsparseZbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseZbsrsv2_bufferSizeExt_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZbsrsv2_bufferSizeExt_rank_1 = hipsparseZbsrsv2_bufferSizeExt_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSize)
    end function

    function hipsparseSbsrsv2_analysis_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsv2_analysis_rank_0 = hipsparseSbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrsv2_analysis_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsv2_analysis_rank_1 = hipsparseSbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrsv2_analysis_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsv2_analysis_rank_0 = hipsparseDbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrsv2_analysis_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsv2_analysis_rank_1 = hipsparseDbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrsv2_analysis_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsv2_analysis_rank_0 = hipsparseCbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrsv2_analysis_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsv2_analysis_rank_1 = hipsparseCbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrsv2_analysis_rank_0(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsv2_analysis_rank_0 = hipsparseZbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrsv2_analysis_rank_1(handle,dirA,transA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsv2_analysis_rank_1 = hipsparseZbsrsv2_analysis_(handle,dirA,transA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrsv2_solve_rank_0(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_float),target :: f
      real(c_float),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsv2_solve_rank_0 = hipsparseSbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseSbsrsv2_solve_rank_1(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_float),target,dimension(:) :: f
      real(c_float),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsv2_solve_rank_1 = hipsparseSbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseDbsrsv2_solve_rank_0(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_double),target :: f
      real(c_double),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsv2_solve_rank_0 = hipsparseDbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseDbsrsv2_solve_rank_1(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_double),target,dimension(:) :: f
      real(c_double),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsv2_solve_rank_1 = hipsparseDbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseCbsrsv2_solve_rank_0(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_float_complex),target :: f
      complex(c_float_complex),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsv2_solve_rank_0 = hipsparseCbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseCbsrsv2_solve_rank_1(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_float_complex),target,dimension(:) :: f
      complex(c_float_complex),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsv2_solve_rank_1 = hipsparseCbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseZbsrsv2_solve_rank_0(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_double_complex),target :: f
      complex(c_double_complex),target :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsv2_solve_rank_0 = hipsparseZbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseZbsrsv2_solve_rank_1(handle,dirA,transA,mb,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,f,x,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsv2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_double_complex),target,dimension(:) :: f
      complex(c_double_complex),target,dimension(:) :: x
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsv2_solve_rank_1 = hipsparseZbsrsv2_solve_(handle,dirA,transA,mb,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(f),c_loc(x),policy,pBuffer)
    end function

    function hipsparseSgemvi_full_rank(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemvi_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseSgemvi_full_rank = hipsparseSgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseSgemvi_rank_0(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemvi_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      real(c_float),target :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      real(c_float),target :: x
      integer(c_int),target :: xInd
      real(c_float) :: beta
      real(c_float),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseSgemvi_rank_0 = hipsparseSgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseSgemvi_rank_1(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemvi_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseSgemvi_rank_1 = hipsparseSgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseDgemvi_full_rank(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemvi_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseDgemvi_full_rank = hipsparseDgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseDgemvi_rank_0(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemvi_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      real(c_double),target :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      real(c_double),target :: x
      integer(c_int),target :: xInd
      real(c_double) :: beta
      real(c_double),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseDgemvi_rank_0 = hipsparseDgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseDgemvi_rank_1(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemvi_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseDgemvi_rank_1 = hipsparseDgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseCgemvi_full_rank(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemvi_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseCgemvi_full_rank = hipsparseCgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseCgemvi_rank_0(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemvi_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      complex(c_float_complex),target :: x
      integer(c_int),target :: xInd
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseCgemvi_rank_0 = hipsparseCgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseCgemvi_rank_1(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemvi_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseCgemvi_rank_1 = hipsparseCgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseZgemvi_full_rank(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemvi_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseZgemvi_full_rank = hipsparseZgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseZgemvi_rank_0(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemvi_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      complex(c_double_complex),target :: x
      integer(c_int),target :: xInd
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseZgemvi_rank_0 = hipsparseZgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseZgemvi_rank_1(handle,transA,m,n,alpha,A,lda,nnz,x,xInd,beta,y,idxBase,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemvi_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: x
      integer(c_int),target,dimension(:) :: xInd
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: y
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      type(c_ptr) :: pBuffer
      !
      hipsparseZgemvi_rank_1 = hipsparseZgemvi_(handle,transA,m,n,alpha,c_loc(A),lda,nnz,c_loc(x),c_loc(xInd),beta,c_loc(y),idxBase,pBuffer)
    end function

    function hipsparseSbsrmm_full_rank(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseSbsrmm_full_rank = hipsparseSbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseSbsrmm_rank_0(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      real(c_float),target :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target :: C
      integer(c_int) :: ldc
      !
      hipsparseSbsrmm_rank_0 = hipsparseSbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseSbsrmm_rank_1(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseSbsrmm_rank_1 = hipsparseSbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDbsrmm_full_rank(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDbsrmm_full_rank = hipsparseDbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDbsrmm_rank_0(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      real(c_double),target :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target :: C
      integer(c_int) :: ldc
      !
      hipsparseDbsrmm_rank_0 = hipsparseDbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDbsrmm_rank_1(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDbsrmm_rank_1 = hipsparseDbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCbsrmm_full_rank(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCbsrmm_full_rank = hipsparseCbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCbsrmm_rank_0(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseCbsrmm_rank_0 = hipsparseCbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCbsrmm_rank_1(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCbsrmm_rank_1 = hipsparseCbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZbsrmm_full_rank(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZbsrmm_full_rank = hipsparseZbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZbsrmm_rank_0(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseZbsrmm_rank_0 = hipsparseZbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZbsrmm_rank_1(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: mb
      integer(c_int) :: n
      integer(c_int) :: kb
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZbsrmm_rank_1 = hipsparseZbsrmm_(handle,dirA,transA,transB,mb,n,kb,nnzb,alpha,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseScsrmm_full_rank(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseScsrmm_full_rank = hipsparseScsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseScsrmm_rank_0(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float),target :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target :: C
      integer(c_int) :: ldc
      !
      hipsparseScsrmm_rank_0 = hipsparseScsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseScsrmm_rank_1(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseScsrmm_rank_1 = hipsparseScsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDcsrmm_full_rank(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDcsrmm_full_rank = hipsparseDcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDcsrmm_rank_0(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double),target :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target :: C
      integer(c_int) :: ldc
      !
      hipsparseDcsrmm_rank_0 = hipsparseDcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDcsrmm_rank_1(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDcsrmm_rank_1 = hipsparseDcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCcsrmm_full_rank(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCcsrmm_full_rank = hipsparseCcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCcsrmm_rank_0(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseCcsrmm_rank_0 = hipsparseCcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCcsrmm_rank_1(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCcsrmm_rank_1 = hipsparseCcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZcsrmm_full_rank(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZcsrmm_full_rank = hipsparseZcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZcsrmm_rank_0(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseZcsrmm_rank_0 = hipsparseZcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZcsrmm_rank_1(handle,transA,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZcsrmm_rank_1 = hipsparseZcsrmm_(handle,transA,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseScsrmm2_full_rank(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm2_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseScsrmm2_full_rank = hipsparseScsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseScsrmm2_rank_0(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm2_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float),target :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target :: C
      integer(c_int) :: ldc
      !
      hipsparseScsrmm2_rank_0 = hipsparseScsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseScsrmm2_rank_1(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrmm2_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseScsrmm2_rank_1 = hipsparseScsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDcsrmm2_full_rank(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm2_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDcsrmm2_full_rank = hipsparseDcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDcsrmm2_rank_0(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm2_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double),target :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target :: C
      integer(c_int) :: ldc
      !
      hipsparseDcsrmm2_rank_0 = hipsparseDcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseDcsrmm2_rank_1(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrmm2_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDcsrmm2_rank_1 = hipsparseDcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCcsrmm2_full_rank(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm2_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCcsrmm2_full_rank = hipsparseCcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCcsrmm2_rank_0(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm2_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseCcsrmm2_rank_0 = hipsparseCcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseCcsrmm2_rank_1(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrmm2_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCcsrmm2_rank_1 = hipsparseCcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZcsrmm2_full_rank(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm2_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZcsrmm2_full_rank = hipsparseZcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZcsrmm2_rank_0(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm2_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseZcsrmm2_rank_0 = hipsparseZcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseZcsrmm2_rank_1(handle,transA,transB,m,n,k,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrmm2_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZcsrmm2_rank_1 = hipsparseZcsrmm2_(handle,transA,transB,m,n,k,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,beta,c_loc(C),ldc)
    end function

    function hipsparseSbsrsm2_bufferSize_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsrsm2_bufferSize_rank_0 = hipsparseSbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsrsm2_bufferSize_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsrsm2_bufferSize_rank_1 = hipsparseSbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsrsm2_bufferSize_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsrsm2_bufferSize_rank_0 = hipsparseDbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsrsm2_bufferSize_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsrsm2_bufferSize_rank_1 = hipsparseDbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsrsm2_bufferSize_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsrsm2_bufferSize_rank_0 = hipsparseCbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsrsm2_bufferSize_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsrsm2_bufferSize_rank_1 = hipsparseCbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsrsm2_bufferSize_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsrsm2_bufferSize_rank_0 = hipsparseZbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsrsm2_bufferSize_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsrsm2_bufferSize_rank_1 = hipsparseZbsrsm2_bufferSize_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsrsm2_analysis_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsm2_analysis_rank_0 = hipsparseSbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrsm2_analysis_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsm2_analysis_rank_1 = hipsparseSbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrsm2_analysis_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsm2_analysis_rank_0 = hipsparseDbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrsm2_analysis_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsm2_analysis_rank_1 = hipsparseDbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrsm2_analysis_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsm2_analysis_rank_0 = hipsparseCbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrsm2_analysis_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsm2_analysis_rank_1 = hipsparseCbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrsm2_analysis_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsm2_analysis_rank_0 = hipsparseZbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrsm2_analysis_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsm2_analysis_rank_1 = hipsparseZbsrsm2_analysis_(handle,dirA,transA,transX,mb,nrhs,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrsm2_solve_full_rank(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsm2_solve_full_rank = hipsparseSbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseSbsrsm2_solve_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_float),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsm2_solve_rank_0 = hipsparseSbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseSbsrsm2_solve_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrsm2_solve_rank_1 = hipsparseSbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseDbsrsm2_solve_full_rank(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsm2_solve_full_rank = hipsparseDbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseDbsrsm2_solve_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_double),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsm2_solve_rank_0 = hipsparseDbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseDbsrsm2_solve_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrsm2_solve_rank_1 = hipsparseDbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseCbsrsm2_solve_full_rank(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsm2_solve_full_rank = hipsparseCbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseCbsrsm2_solve_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsm2_solve_rank_0 = hipsparseCbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseCbsrsm2_solve_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrsm2_solve_rank_1 = hipsparseCbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseZbsrsm2_solve_full_rank(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsm2_solve_full_rank = hipsparseZbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseZbsrsm2_solve_rank_0(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsm2_solve_rank_0 = hipsparseZbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseZbsrsm2_solve_rank_1(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,B,ldb,X,ldx,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transX
      integer(c_int) :: mb
      integer(c_int) :: nrhs
      integer(c_int) :: nnzb
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: X
      integer(c_int) :: ldx
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrsm2_solve_rank_1 = hipsparseZbsrsm2_solve_(handle,dirA,transA,transX,mb,nrhs,nnzb,alpha,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,c_loc(B),ldb,X,ldx,policy,pBuffer)
    end function

    function hipsparseScsrsm2_bufferSizeExt_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrsm2_bufferSizeExt_full_rank = hipsparseScsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseScsrsm2_bufferSizeExt_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrsm2_bufferSizeExt_rank_0 = hipsparseScsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseScsrsm2_bufferSizeExt_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrsm2_bufferSizeExt_rank_1 = hipsparseScsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseDcsrsm2_bufferSizeExt_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrsm2_bufferSizeExt_full_rank = hipsparseDcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseDcsrsm2_bufferSizeExt_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrsm2_bufferSizeExt_rank_0 = hipsparseDcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseDcsrsm2_bufferSizeExt_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrsm2_bufferSizeExt_rank_1 = hipsparseDcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseCcsrsm2_bufferSizeExt_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrsm2_bufferSizeExt_full_rank = hipsparseCcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseCcsrsm2_bufferSizeExt_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrsm2_bufferSizeExt_rank_0 = hipsparseCcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseCcsrsm2_bufferSizeExt_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrsm2_bufferSizeExt_rank_1 = hipsparseCcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseZcsrsm2_bufferSizeExt_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrsm2_bufferSizeExt_full_rank = hipsparseZcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseZcsrsm2_bufferSizeExt_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrsm2_bufferSizeExt_rank_0 = hipsparseZcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseZcsrsm2_bufferSizeExt_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrsm2_bufferSizeExt_rank_1 = hipsparseZcsrsm2_bufferSizeExt_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBufferSize)
    end function

    function hipsparseScsrsm2_analysis_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_analysis_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsm2_analysis_full_rank = hipsparseScsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsm2_analysis_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsm2_analysis_rank_0 = hipsparseScsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsm2_analysis_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsm2_analysis_rank_1 = hipsparseScsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsm2_analysis_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_analysis_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsm2_analysis_full_rank = hipsparseDcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsm2_analysis_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsm2_analysis_rank_0 = hipsparseDcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsm2_analysis_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsm2_analysis_rank_1 = hipsparseDcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsm2_analysis_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_analysis_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsm2_analysis_full_rank = hipsparseCcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsm2_analysis_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsm2_analysis_rank_0 = hipsparseCcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsm2_analysis_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsm2_analysis_rank_1 = hipsparseCcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsm2_analysis_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_analysis_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsm2_analysis_full_rank = hipsparseZcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsm2_analysis_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsm2_analysis_rank_0 = hipsparseZcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsm2_analysis_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsm2_analysis_rank_1 = hipsparseZcsrsm2_analysis_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsm2_solve_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsm2_solve_full_rank = hipsparseScsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsm2_solve_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsm2_solve_rank_0 = hipsparseScsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseScsrsm2_solve_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrsm2_solve_rank_1 = hipsparseScsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsm2_solve_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsm2_solve_full_rank = hipsparseDcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsm2_solve_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsm2_solve_rank_0 = hipsparseDcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrsm2_solve_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrsm2_solve_rank_1 = hipsparseDcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsm2_solve_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsm2_solve_full_rank = hipsparseCcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsm2_solve_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsm2_solve_rank_0 = hipsparseCcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrsm2_solve_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrsm2_solve_rank_1 = hipsparseCcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsm2_solve_full_rank(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_solve_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsm2_solve_full_rank = hipsparseZcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsm2_solve_rank_0(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_solve_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsm2_solve_rank_0 = hipsparseZcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrsm2_solve_rank_1(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,B,ldb,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrsm2_solve_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: algo
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: nrhs
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrsm2_solve_rank_1 = hipsparseZcsrsm2_solve_(handle,algo,transA,transB,m,nrhs,nnz,alpha,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),c_loc(B),ldb,myInfo,policy,pBuffer)
    end function

    function hipsparseSgemmi_full_rank(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemmi_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      real(c_float) :: beta
      real(c_float),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseSgemmi_full_rank = hipsparseSgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseSgemmi_rank_0(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemmi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float),target :: cscValB
      integer(c_int),target :: cscColPtrB
      integer(c_int),target :: cscRowIndB
      real(c_float) :: beta
      real(c_float),target :: C
      integer(c_int) :: ldc
      !
      hipsparseSgemmi_rank_0 = hipsparseSgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseSgemmi_rank_1(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgemmi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_float) :: alpha
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      real(c_float) :: beta
      real(c_float),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseSgemmi_rank_1 = hipsparseSgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseDgemmi_full_rank(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemmi_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      real(c_double) :: beta
      real(c_double),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDgemmi_full_rank = hipsparseDgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseDgemmi_rank_0(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemmi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double),target :: cscValB
      integer(c_int),target :: cscColPtrB
      integer(c_int),target :: cscRowIndB
      real(c_double) :: beta
      real(c_double),target :: C
      integer(c_int) :: ldc
      !
      hipsparseDgemmi_rank_0 = hipsparseDgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseDgemmi_rank_1(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgemmi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      real(c_double) :: alpha
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      real(c_double) :: beta
      real(c_double),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseDgemmi_rank_1 = hipsparseDgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseCgemmi_full_rank(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemmi_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: lda
      complex(c_float_complex),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCgemmi_full_rank = hipsparseCgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseCgemmi_rank_0(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemmi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target :: A
      integer(c_int) :: lda
      complex(c_float_complex),target :: cscValB
      integer(c_int),target :: cscColPtrB
      integer(c_int),target :: cscRowIndB
      complex(c_float_complex) :: beta
      complex(c_float_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseCgemmi_rank_0 = hipsparseCgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseCgemmi_rank_1(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgemmi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_float_complex) :: alpha
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: lda
      complex(c_float_complex),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      complex(c_float_complex) :: beta
      complex(c_float_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseCgemmi_rank_1 = hipsparseCgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseZgemmi_full_rank(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemmi_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: lda
      complex(c_double_complex),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:,:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZgemmi_full_rank = hipsparseZgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseZgemmi_rank_0(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemmi_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target :: A
      integer(c_int) :: lda
      complex(c_double_complex),target :: cscValB
      integer(c_int),target :: cscColPtrB
      integer(c_int),target :: cscRowIndB
      complex(c_double_complex) :: beta
      complex(c_double_complex),target :: C
      integer(c_int) :: ldc
      !
      hipsparseZgemmi_rank_0 = hipsparseZgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseZgemmi_rank_1(handle,m,n,k,nnz,alpha,A,lda,cscValB,cscColPtrB,cscRowIndB,beta,C,ldc)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgemmi_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      integer(c_int) :: nnz
      complex(c_double_complex) :: alpha
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: lda
      complex(c_double_complex),target,dimension(:) :: cscValB
      integer(c_int),target,dimension(:) :: cscColPtrB
      integer(c_int),target,dimension(:) :: cscRowIndB
      complex(c_double_complex) :: beta
      complex(c_double_complex),target,dimension(:) :: C
      integer(c_int) :: ldc
      !
      hipsparseZgemmi_rank_1 = hipsparseZgemmi_(handle,m,n,k,nnz,alpha,c_loc(A),lda,c_loc(cscValB),c_loc(cscColPtrB),c_loc(cscRowIndB),beta,c_loc(C),ldc)
    end function

    function hipsparseXcsrgeamNnz_rank_0(handle,m,n,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgeamNnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseXcsrgeamNnz_rank_0 = hipsparseXcsrgeamNnz_(handle,m,n,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr)
    end function

    function hipsparseXcsrgeamNnz_rank_1(handle,m,n,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgeamNnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseXcsrgeamNnz_rank_1 = hipsparseXcsrgeamNnz_(handle,m,n,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr)
    end function

    function hipsparseScsrgeam_rank_0(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseScsrgeam_rank_0 = hipsparseScsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseScsrgeam_rank_1(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseScsrgeam_rank_1 = hipsparseScsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDcsrgeam_rank_0(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseDcsrgeam_rank_0 = hipsparseDcsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDcsrgeam_rank_1(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseDcsrgeam_rank_1 = hipsparseDcsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCcsrgeam_rank_0(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseCcsrgeam_rank_0 = hipsparseCcsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCcsrgeam_rank_1(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseCcsrgeam_rank_1 = hipsparseCcsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZcsrgeam_rank_0(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseZcsrgeam_rank_0 = hipsparseZcsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZcsrgeam_rank_1(handle,m,n,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,beta,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseZcsrgeam_rank_1 = hipsparseZcsrgeam_(handle,m,n,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),beta,descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseScsrgeam2_bufferSizeExt_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_float),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseScsrgeam2_bufferSizeExt_rank_0 = hipsparseScsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseScsrgeam2_bufferSizeExt_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseScsrgeam2_bufferSizeExt_rank_1 = hipsparseScsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseDcsrgeam2_bufferSizeExt_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_double),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDcsrgeam2_bufferSizeExt_rank_0 = hipsparseDcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseDcsrgeam2_bufferSizeExt_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDcsrgeam2_bufferSizeExt_rank_1 = hipsparseDcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseCcsrgeam2_bufferSizeExt_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCcsrgeam2_bufferSizeExt_rank_0 = hipsparseCcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseCcsrgeam2_bufferSizeExt_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCcsrgeam2_bufferSizeExt_rank_1 = hipsparseCcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseZcsrgeam2_bufferSizeExt_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZcsrgeam2_bufferSizeExt_rank_0 = hipsparseZcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseZcsrgeam2_bufferSizeExt_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZcsrgeam2_bufferSizeExt_rank_1 = hipsparseZcsrgeam2_bufferSizeExt_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBufferSizeInBytes)
    end function

    function hipsparseXcsrgeam2Nnz_rank_0(handle,m,n,descrA,nnzA,csrSortedRowPtrA,csrSortedColIndA,descrB,nnzB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedRowPtrC,nnzTotalDevHostPtr,workspace)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgeam2Nnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: workspace
      !
      hipsparseXcsrgeam2Nnz_rank_0 = hipsparseXcsrgeam2Nnz_(handle,m,n,descrA,nnzA,c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),descrB,nnzB,c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedRowPtrC),nnzTotalDevHostPtr,workspace)
    end function

    function hipsparseXcsrgeam2Nnz_rank_1(handle,m,n,descrA,nnzA,csrSortedRowPtrA,csrSortedColIndA,descrB,nnzB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedRowPtrC,nnzTotalDevHostPtr,workspace)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgeam2Nnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: workspace
      !
      hipsparseXcsrgeam2Nnz_rank_1 = hipsparseXcsrgeam2Nnz_(handle,m,n,descrA,nnzA,c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),descrB,nnzB,c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedRowPtrC),nnzTotalDevHostPtr,workspace)
    end function

    function hipsparseScsrgeam2_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_float) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_float),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrgeam2_rank_0 = hipsparseScsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseScsrgeam2_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgeam2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_float) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrgeam2_rank_1 = hipsparseScsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseDcsrgeam2_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      real(c_double) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_double),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrgeam2_rank_0 = hipsparseDcsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseDcsrgeam2_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgeam2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      real(c_double) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrgeam2_rank_1 = hipsparseDcsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseCcsrgeam2_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrgeam2_rank_0 = hipsparseCcsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseCcsrgeam2_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgeam2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrgeam2_rank_1 = hipsparseCcsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseZcsrgeam2_rank_0(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target :: csrSortedValB
      integer(c_int),target :: csrSortedRowPtrB
      integer(c_int),target :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrSortedValC
      integer(c_int),target :: csrSortedRowPtrC
      integer(c_int),target :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrgeam2_rank_0 = hipsparseZcsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseZcsrgeam2_rank_1(handle,m,n,alpha,descrA,nnzA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,beta,descrB,nnzB,csrSortedValB,csrSortedRowPtrB,csrSortedColIndB,descrC,csrSortedValC,csrSortedRowPtrC,csrSortedColIndC,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgeam2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target,dimension(:) :: csrSortedValB
      integer(c_int),target,dimension(:) :: csrSortedRowPtrB
      integer(c_int),target,dimension(:) :: csrSortedColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrSortedValC
      integer(c_int),target,dimension(:) :: csrSortedRowPtrC
      integer(c_int),target,dimension(:) :: csrSortedColIndC
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrgeam2_rank_1 = hipsparseZcsrgeam2_(handle,m,n,alpha,descrA,nnzA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),beta,descrB,nnzB,c_loc(csrSortedValB),c_loc(csrSortedRowPtrB),c_loc(csrSortedColIndB),descrC,c_loc(csrSortedValC),c_loc(csrSortedRowPtrC),c_loc(csrSortedColIndC),pBuffer)
    end function

    function hipsparseXcsrgemmNnz_rank_0(handle,transA,transB,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgemmNnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseXcsrgemmNnz_rank_0 = hipsparseXcsrgemmNnz_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr)
    end function

    function hipsparseXcsrgemmNnz_rank_1(handle,transA,transB,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrC,csrRowPtrC,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgemmNnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseXcsrgemmNnz_rank_1 = hipsparseXcsrgemmNnz_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr)
    end function

    function hipsparseScsrgemm_rank_0(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseScsrgemm_rank_0 = hipsparseScsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseScsrgemm_rank_1(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseScsrgemm_rank_1 = hipsparseScsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDcsrgemm_rank_0(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseDcsrgemm_rank_0 = hipsparseDcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDcsrgemm_rank_1(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseDcsrgemm_rank_1 = hipsparseDcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCcsrgemm_rank_0(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseCcsrgemm_rank_0 = hipsparseCcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCcsrgemm_rank_1(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseCcsrgemm_rank_1 = hipsparseCcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZcsrgemm_rank_0(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseZcsrgemm_rank_0 = hipsparseZcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZcsrgemm_rank_1(handle,transA,transB,m,n,k,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transA
      integer(kind(HIPSPARSE_OPERATION_NON_TRANSPOSE)) :: transB
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseZcsrgemm_rank_1 = hipsparseZcsrgemm_(handle,transA,transB,m,n,k,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseScsrgemm2_bufferSizeExt_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      real(c_float) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseScsrgemm2_bufferSizeExt_rank_0 = hipsparseScsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsrgemm2_bufferSizeExt_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      real(c_float) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseScsrgemm2_bufferSizeExt_rank_1 = hipsparseScsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsrgemm2_bufferSizeExt_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      real(c_double) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDcsrgemm2_bufferSizeExt_rank_0 = hipsparseDcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsrgemm2_bufferSizeExt_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      real(c_double) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDcsrgemm2_bufferSizeExt_rank_1 = hipsparseDcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsrgemm2_bufferSizeExt_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCcsrgemm2_bufferSizeExt_rank_0 = hipsparseCcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsrgemm2_bufferSizeExt_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCcsrgemm2_bufferSizeExt_rank_1 = hipsparseCcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsrgemm2_bufferSizeExt_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZcsrgemm2_bufferSizeExt_rank_0 = hipsparseZcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsrgemm2_bufferSizeExt_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrRowPtrD,csrColIndD,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZcsrgemm2_bufferSizeExt_rank_1 = hipsparseZcsrgemm2_bufferSizeExt_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseXcsrgemm2Nnz_rank_0(handle,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrD,nnzD,csrRowPtrD,csrColIndD,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgemm2Nnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseXcsrgemm2Nnz_rank_0 = hipsparseXcsrgemm2Nnz_(handle,m,n,k,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,myInfo,pBuffer)
    end function

    function hipsparseXcsrgemm2Nnz_rank_1(handle,m,n,k,descrA,nnzA,csrRowPtrA,csrColIndA,descrB,nnzB,csrRowPtrB,csrColIndB,descrD,nnzD,csrRowPtrD,csrColIndD,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrgemm2Nnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseXcsrgemm2Nnz_rank_1 = hipsparseXcsrgemm2Nnz_(handle,m,n,k,descrA,nnzA,c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrRowPtrB),c_loc(csrColIndB),descrD,nnzD,c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,myInfo,pBuffer)
    end function

    function hipsparseScsrgemm2_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      real(c_float) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      real(c_float),target :: csrValD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrgemm2_rank_0 = hipsparseScsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseScsrgemm2_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrgemm2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_float) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_float),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      real(c_float) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      real(c_float),target,dimension(:) :: csrValD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrgemm2_rank_1 = hipsparseScsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseDcsrgemm2_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      real(c_double) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      real(c_double),target :: csrValD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrgemm2_rank_0 = hipsparseDcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseDcsrgemm2_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrgemm2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      real(c_double) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      real(c_double),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      real(c_double) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      real(c_double),target,dimension(:) :: csrValD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrgemm2_rank_1 = hipsparseDcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseCcsrgemm2_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      complex(c_float_complex),target :: csrValD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrgemm2_rank_0 = hipsparseCcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseCcsrgemm2_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrgemm2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_float_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_float_complex),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      complex(c_float_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      complex(c_float_complex),target,dimension(:) :: csrValD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrgemm2_rank_1 = hipsparseCcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseZcsrgemm2_rank_0(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target :: csrValB
      integer(c_int),target :: csrRowPtrB
      integer(c_int),target :: csrColIndB
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      complex(c_double_complex),target :: csrValD
      integer(c_int),target :: csrRowPtrD
      integer(c_int),target :: csrColIndD
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrgemm2_rank_0 = hipsparseZcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseZcsrgemm2_rank_1(handle,m,n,k,alpha,descrA,nnzA,csrValA,csrRowPtrA,csrColIndA,descrB,nnzB,csrValB,csrRowPtrB,csrColIndB,beta,descrD,nnzD,csrValD,csrRowPtrD,csrColIndD,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrgemm2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: k
      complex(c_double_complex) :: alpha
      type(c_ptr) :: descrA
      integer(c_int) :: nnzA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: descrB
      integer(c_int) :: nnzB
      complex(c_double_complex),target,dimension(:) :: csrValB
      integer(c_int),target,dimension(:) :: csrRowPtrB
      integer(c_int),target,dimension(:) :: csrColIndB
      complex(c_double_complex) :: beta
      type(c_ptr) :: descrD
      integer(c_int) :: nnzD
      complex(c_double_complex),target,dimension(:) :: csrValD
      integer(c_int),target,dimension(:) :: csrRowPtrD
      integer(c_int),target,dimension(:) :: csrColIndD
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrgemm2_rank_1 = hipsparseZcsrgemm2_(handle,m,n,k,alpha,descrA,nnzA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),descrB,nnzB,c_loc(csrValB),c_loc(csrRowPtrB),c_loc(csrColIndB),beta,descrD,nnzD,c_loc(csrValD),c_loc(csrRowPtrD),c_loc(csrColIndD),descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,pBuffer)
    end function

    function hipsparseSbsrilu02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsrilu02_bufferSize_rank_0 = hipsparseSbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsrilu02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsrilu02_bufferSize_rank_1 = hipsparseSbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsrilu02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsrilu02_bufferSize_rank_0 = hipsparseDbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsrilu02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsrilu02_bufferSize_rank_1 = hipsparseDbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsrilu02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsrilu02_bufferSize_rank_0 = hipsparseCbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsrilu02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsrilu02_bufferSize_rank_1 = hipsparseCbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsrilu02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsrilu02_bufferSize_rank_0 = hipsparseZbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsrilu02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsrilu02_bufferSize_rank_1 = hipsparseZbsrilu02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsrilu02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrilu02_analysis_rank_0 = hipsparseSbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrilu02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrilu02_analysis_rank_1 = hipsparseSbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrilu02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrilu02_analysis_rank_0 = hipsparseDbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrilu02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrilu02_analysis_rank_1 = hipsparseDbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrilu02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrilu02_analysis_rank_0 = hipsparseCbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrilu02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrilu02_analysis_rank_1 = hipsparseCbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrilu02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrilu02_analysis_rank_0 = hipsparseZbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrilu02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrilu02_analysis_rank_1 = hipsparseZbsrilu02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrilu02_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrSortedValA_valM
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrilu02_rank_0 = hipsparseSbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsrilu02_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsrilu02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrSortedValA_valM
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsrilu02_rank_1 = hipsparseSbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrilu02_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrSortedValA_valM
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrilu02_rank_0 = hipsparseDbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsrilu02_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsrilu02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrSortedValA_valM
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsrilu02_rank_1 = hipsparseDbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrilu02_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrSortedValA_valM
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrilu02_rank_0 = hipsparseCbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsrilu02_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsrilu02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrSortedValA_valM
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsrilu02_rank_1 = hipsparseCbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrilu02_rank_0(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrSortedValA_valM
      integer(c_int),target :: bsrSortedRowPtrA
      integer(c_int),target :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrilu02_rank_0 = hipsparseZbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsrilu02_rank_1(handle,dirA,mb,nnzb,descrA,bsrSortedValA_valM,bsrSortedRowPtrA,bsrSortedColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsrilu02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrSortedValA_valM
      integer(c_int),target,dimension(:) :: bsrSortedRowPtrA
      integer(c_int),target,dimension(:) :: bsrSortedColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsrilu02_rank_1 = hipsparseZbsrilu02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrSortedValA_valM),c_loc(bsrSortedRowPtrA),c_loc(bsrSortedColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseScsrilu02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseScsrilu02_bufferSize_rank_0 = hipsparseScsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsrilu02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseScsrilu02_bufferSize_rank_1 = hipsparseScsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsrilu02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDcsrilu02_bufferSize_rank_0 = hipsparseDcsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsrilu02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDcsrilu02_bufferSize_rank_1 = hipsparseDcsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsrilu02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCcsrilu02_bufferSize_rank_0 = hipsparseCcsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsrilu02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCcsrilu02_bufferSize_rank_1 = hipsparseCcsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsrilu02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZcsrilu02_bufferSize_rank_0 = hipsparseZcsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsrilu02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZcsrilu02_bufferSize_rank_1 = hipsparseZcsrilu02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsrilu02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrilu02_bufferSizeExt_rank_0 = hipsparseScsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseScsrilu02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsrilu02_bufferSizeExt_rank_1 = hipsparseScsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseDcsrilu02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrilu02_bufferSizeExt_rank_0 = hipsparseDcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseDcsrilu02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsrilu02_bufferSizeExt_rank_1 = hipsparseDcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseCcsrilu02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrilu02_bufferSizeExt_rank_0 = hipsparseCcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseCcsrilu02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsrilu02_bufferSizeExt_rank_1 = hipsparseCcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseZcsrilu02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrilu02_bufferSizeExt_rank_0 = hipsparseZcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseZcsrilu02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsrilu02_bufferSizeExt_rank_1 = hipsparseZcsrilu02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseScsrilu02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrilu02_analysis_rank_0 = hipsparseScsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsrilu02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrilu02_analysis_rank_1 = hipsparseScsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrilu02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrilu02_analysis_rank_0 = hipsparseDcsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrilu02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrilu02_analysis_rank_1 = hipsparseDcsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrilu02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrilu02_analysis_rank_0 = hipsparseCcsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrilu02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrilu02_analysis_rank_1 = hipsparseCcsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrilu02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrilu02_analysis_rank_0 = hipsparseZcsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrilu02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrilu02_analysis_rank_1 = hipsparseZcsrilu02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsrilu02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrilu02_rank_0 = hipsparseScsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsrilu02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrilu02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsrilu02_rank_1 = hipsparseScsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrilu02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrilu02_rank_0 = hipsparseDcsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsrilu02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrilu02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsrilu02_rank_1 = hipsparseDcsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrilu02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrilu02_rank_0 = hipsparseCcsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsrilu02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrilu02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsrilu02_rank_1 = hipsparseCcsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrilu02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrilu02_rank_0 = hipsparseZcsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsrilu02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrilu02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsrilu02_rank_1 = hipsparseZcsrilu02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseSbsric02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsric02_bufferSize_rank_0 = hipsparseSbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsric02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseSbsric02_bufferSize_rank_1 = hipsparseSbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsric02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsric02_bufferSize_rank_0 = hipsparseDbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDbsric02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDbsric02_bufferSize_rank_1 = hipsparseDbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsric02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsric02_bufferSize_rank_0 = hipsparseCbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCbsric02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCbsric02_bufferSize_rank_1 = hipsparseCbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsric02_bufferSize_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsric02_bufferSize_rank_0 = hipsparseZbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZbsric02_bufferSize_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZbsric02_bufferSize_rank_1 = hipsparseZbsric02_bufferSize_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,pBufferSizeInBytes)
    end function

    function hipsparseSbsric02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsric02_analysis_rank_0 = hipsparseSbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsric02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsric02_analysis_rank_1 = hipsparseSbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsric02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsric02_analysis_rank_0 = hipsparseDbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsric02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsric02_analysis_rank_1 = hipsparseDbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsric02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsric02_analysis_rank_0 = hipsparseCbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsric02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsric02_analysis_rank_1 = hipsparseCbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsric02_analysis_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsric02_analysis_rank_0 = hipsparseZbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsric02_analysis_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsric02_analysis_rank_1 = hipsparseZbsric02_analysis_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsric02_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsric02_rank_0 = hipsparseSbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseSbsric02_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsric02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseSbsric02_rank_1 = hipsparseSbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsric02_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsric02_rank_0 = hipsparseDbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseDbsric02_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsric02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDbsric02_rank_1 = hipsparseDbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsric02_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsric02_rank_0 = hipsparseCbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseCbsric02_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsric02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCbsric02_rank_1 = hipsparseCbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsric02_rank_0(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsric02_rank_0 = hipsparseZbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseZbsric02_rank_1(handle,dirA,mb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsric02_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZbsric02_rank_1 = hipsparseZbsric02_(handle,dirA,mb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,myInfo,policy,pBuffer)
    end function

    function hipsparseScsric02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseScsric02_bufferSize_rank_0 = hipsparseScsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsric02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseScsric02_bufferSize_rank_1 = hipsparseScsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsric02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDcsric02_bufferSize_rank_0 = hipsparseDcsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsric02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseDcsric02_bufferSize_rank_1 = hipsparseDcsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsric02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCcsric02_bufferSize_rank_0 = hipsparseCcsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsric02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseCcsric02_bufferSize_rank_1 = hipsparseCcsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsric02_bufferSize_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZcsric02_bufferSize_rank_0 = hipsparseZcsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsric02_bufferSize_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_int) :: pBufferSizeInBytes
      !
      hipsparseZcsric02_bufferSize_rank_1 = hipsparseZcsric02_bufferSize_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsric02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsric02_bufferSizeExt_rank_0 = hipsparseScsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseScsric02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseScsric02_bufferSizeExt_rank_1 = hipsparseScsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseDcsric02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsric02_bufferSizeExt_rank_0 = hipsparseDcsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseDcsric02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseDcsric02_bufferSizeExt_rank_1 = hipsparseDcsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseCcsric02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsric02_bufferSizeExt_rank_0 = hipsparseCcsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseCcsric02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseCcsric02_bufferSizeExt_rank_1 = hipsparseCcsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseZcsric02_bufferSizeExt_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsric02_bufferSizeExt_rank_0 = hipsparseZcsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseZcsric02_bufferSizeExt_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,pBufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSize
      !
      hipsparseZcsric02_bufferSizeExt_rank_1 = hipsparseZcsric02_bufferSizeExt_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,pBufferSize)
    end function

    function hipsparseScsric02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsric02_analysis_rank_0 = hipsparseScsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsric02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsric02_analysis_rank_1 = hipsparseScsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsric02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsric02_analysis_rank_0 = hipsparseDcsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsric02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsric02_analysis_rank_1 = hipsparseDcsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsric02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsric02_analysis_rank_0 = hipsparseCcsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsric02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsric02_analysis_rank_1 = hipsparseCcsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsric02_analysis_rank_0(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_analysis_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsric02_analysis_rank_0 = hipsparseZcsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsric02_analysis_rank_1(handle,m,nnz,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_analysis_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsric02_analysis_rank_1 = hipsparseZcsric02_analysis_(handle,m,nnz,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsric02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsric02_rank_0 = hipsparseScsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseScsric02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsric02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseScsric02_rank_1 = hipsparseScsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsric02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsric02_rank_0 = hipsparseDcsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseDcsric02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsric02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsric02_rank_1 = hipsparseDcsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsric02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsric02_rank_0 = hipsparseCcsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseCcsric02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsric02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsric02_rank_1 = hipsparseCcsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsric02_rank_0(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA_valM
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsric02_rank_0 = hipsparseZcsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseZcsric02_rank_1(handle,m,nnz,descrA,csrSortedValA_valM,csrSortedRowPtrA,csrSortedColIndA,myInfo,policy,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsric02_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA_valM
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: myInfo
      integer(kind(HIPSPARSE_SOLVE_POLICY_NO_LEVEL)) :: policy
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsric02_rank_1 = hipsparseZcsric02_(handle,m,nnz,descrA,c_loc(csrSortedValA_valM),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),myInfo,policy,pBuffer)
    end function

    function hipsparseSgtsv2_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2_bufferSizeExt_full_rank = hipsparseSgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2_bufferSizeExt_rank_0 = hipsparseSgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2_bufferSizeExt_rank_1 = hipsparseSgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: db
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2_bufferSizeExt_full_rank = hipsparseDgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),db,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target :: B
      integer(c_int) :: db
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2_bufferSizeExt_rank_0 = hipsparseDgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),db,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: db
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2_bufferSizeExt_rank_1 = hipsparseDgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),db,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2_bufferSizeExt_full_rank = hipsparseCgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2_bufferSizeExt_rank_0 = hipsparseCgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2_bufferSizeExt_rank_1 = hipsparseCgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2_bufferSizeExt_full_rank = hipsparseZgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2_bufferSizeExt_rank_0 = hipsparseZgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2_bufferSizeExt_rank_1 = hipsparseZgtsv2_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2_full_rank = hipsparseSgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseSgtsv2_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2_rank_0 = hipsparseSgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseSgtsv2_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2_rank_1 = hipsparseSgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseDgtsv2_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2_full_rank = hipsparseDgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseDgtsv2_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2_rank_0 = hipsparseDgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseDgtsv2_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2_rank_1 = hipsparseDgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseCgtsv2_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2_full_rank = hipsparseCgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseCgtsv2_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2_rank_0 = hipsparseCgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseCgtsv2_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2_rank_1 = hipsparseCgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseZgtsv2_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2_full_rank = hipsparseZgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseZgtsv2_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2_rank_0 = hipsparseZgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseZgtsv2_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2_rank_1 = hipsparseZgtsv2_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseSgtsv2_nopivot_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2_nopivot_bufferSizeExt_full_rank = hipsparseSgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2_nopivot_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2_nopivot_bufferSizeExt_rank_0 = hipsparseSgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2_nopivot_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2_nopivot_bufferSizeExt_rank_1 = hipsparseSgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2_nopivot_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: db
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2_nopivot_bufferSizeExt_full_rank = hipsparseDgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),db,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2_nopivot_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target :: B
      integer(c_int) :: db
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2_nopivot_bufferSizeExt_rank_0 = hipsparseDgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),db,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2_nopivot_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,db,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: db
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2_nopivot_bufferSizeExt_rank_1 = hipsparseDgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),db,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2_nopivot_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2_nopivot_bufferSizeExt_full_rank = hipsparseCgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2_nopivot_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2_nopivot_bufferSizeExt_rank_0 = hipsparseCgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2_nopivot_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2_nopivot_bufferSizeExt_rank_1 = hipsparseCgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2_nopivot_bufferSizeExt_full_rank(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2_nopivot_bufferSizeExt_full_rank = hipsparseZgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2_nopivot_bufferSizeExt_rank_0(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2_nopivot_bufferSizeExt_rank_0 = hipsparseZgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2_nopivot_bufferSizeExt_rank_1(handle,m,n,dl,d,du,B,ldb,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2_nopivot_bufferSizeExt_rank_1 = hipsparseZgtsv2_nopivot_bufferSizeExt_(handle,m,n,dl,d,du,c_loc(B),ldb,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2_nopivot_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2_nopivot_full_rank = hipsparseSgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseSgtsv2_nopivot_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2_nopivot_rank_0 = hipsparseSgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseSgtsv2_nopivot_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2_nopivot_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2_nopivot_rank_1 = hipsparseSgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseDgtsv2_nopivot_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2_nopivot_full_rank = hipsparseDgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseDgtsv2_nopivot_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2_nopivot_rank_0 = hipsparseDgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseDgtsv2_nopivot_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2_nopivot_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2_nopivot_rank_1 = hipsparseDgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseCgtsv2_nopivot_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2_nopivot_full_rank = hipsparseCgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseCgtsv2_nopivot_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2_nopivot_rank_0 = hipsparseCgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseCgtsv2_nopivot_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2_nopivot_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2_nopivot_rank_1 = hipsparseCgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseZgtsv2_nopivot_full_rank(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:,:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2_nopivot_full_rank = hipsparseZgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseZgtsv2_nopivot_rank_0(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2_nopivot_rank_0 = hipsparseZgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseZgtsv2_nopivot_rank_1(handle,m,n,dl,d,du,B,ldb,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2_nopivot_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:) :: B
      integer(c_int) :: ldb
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2_nopivot_rank_1 = hipsparseZgtsv2_nopivot_(handle,m,n,dl,d,du,c_loc(B),ldb,pBuffer)
    end function

    function hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_0 = hipsparseSgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseSgtsv2StridedBatch_bufferSizeExt_rank_1 = hipsparseSgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_0 = hipsparseDgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDgtsv2StridedBatch_bufferSizeExt_rank_1 = hipsparseDgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_0 = hipsparseCgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCgtsv2StridedBatch_bufferSizeExt_rank_1 = hipsparseCgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_0 = hipsparseZgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZgtsv2StridedBatch_bufferSizeExt_rank_1 = hipsparseZgtsv2StridedBatch_bufferSizeExt_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBufferSizeInBytes)
    end function

    function hipsparseSgtsv2StridedBatch_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2StridedBatch_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2StridedBatch_rank_0 = hipsparseSgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseSgtsv2StridedBatch_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgtsv2StridedBatch_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_float),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseSgtsv2StridedBatch_rank_1 = hipsparseSgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseDgtsv2StridedBatch_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2StridedBatch_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2StridedBatch_rank_0 = hipsparseDgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseDgtsv2StridedBatch_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgtsv2StridedBatch_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      real(c_double),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseDgtsv2StridedBatch_rank_1 = hipsparseDgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseCgtsv2StridedBatch_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2StridedBatch_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2StridedBatch_rank_0 = hipsparseCgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseCgtsv2StridedBatch_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgtsv2StridedBatch_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_float_complex),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseCgtsv2StridedBatch_rank_1 = hipsparseCgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseZgtsv2StridedBatch_rank_0(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2StridedBatch_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2StridedBatch_rank_0 = hipsparseZgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseZgtsv2StridedBatch_rank_1(handle,m,dl,d,du,x,batchCount,batchStride,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgtsv2StridedBatch_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: dl
      type(c_ptr) :: d
      type(c_ptr) :: du
      complex(c_double_complex),target,dimension(:) :: x
      integer(c_int) :: batchCount
      integer(c_int) :: batchStride
      type(c_ptr) :: pBuffer
      !
      hipsparseZgtsv2StridedBatch_rank_1 = hipsparseZgtsv2StridedBatch_(handle,m,dl,d,du,c_loc(x),batchCount,batchStride,pBuffer)
    end function

    function hipsparseSnnz_full_rank(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseSnnz_full_rank = hipsparseSnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseSnnz_rank_0(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target :: A
      integer(c_int) :: lda
      integer(c_int),target :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseSnnz_rank_0 = hipsparseSnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseSnnz_rank_1(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseSnnz_rank_1 = hipsparseSnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseDnnz_full_rank(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseDnnz_full_rank = hipsparseDnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseDnnz_rank_0(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target :: A
      integer(c_int) :: lda
      integer(c_int),target :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseDnnz_rank_0 = hipsparseDnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseDnnz_rank_1(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseDnnz_rank_1 = hipsparseDnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseCnnz_full_rank(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseCnnz_full_rank = hipsparseCnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseCnnz_rank_0(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: A
      integer(c_int) :: lda
      integer(c_int),target :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseCnnz_rank_0 = hipsparseCnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseCnnz_rank_1(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseCnnz_rank_1 = hipsparseCnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseZnnz_full_rank(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_full_rank
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseZnnz_full_rank = hipsparseZnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseZnnz_rank_0(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: A
      integer(c_int) :: lda
      integer(c_int),target :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseZnnz_rank_0 = hipsparseZnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseZnnz_rank_1(handle,dirA,m,n,descrA,A,lda,nnzPerRowColumn,nnzTotalDevHostPtr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: lda
      integer(c_int),target,dimension(:) :: nnzPerRowColumn
      integer(c_int) :: nnzTotalDevHostPtr
      !
      hipsparseZnnz_rank_1 = hipsparseZnnz_(handle,dirA,m,n,descrA,c_loc(A),lda,c_loc(nnzPerRowColumn),nnzTotalDevHostPtr)
    end function

    function hipsparseSdense2csr_full_rank(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csr_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      real(c_float),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseSdense2csr_full_rank = hipsparseSdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseSdense2csr_rank_0(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_rows
      real(c_float),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      !
      hipsparseSdense2csr_rank_0 = hipsparseSdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseSdense2csr_rank_1(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      real(c_float),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseSdense2csr_rank_1 = hipsparseSdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseDdense2csr_full_rank(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csr_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      real(c_double),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseDdense2csr_full_rank = hipsparseDdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseDdense2csr_rank_0(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_rows
      real(c_double),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      !
      hipsparseDdense2csr_rank_0 = hipsparseDdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseDdense2csr_rank_1(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      real(c_double),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseDdense2csr_rank_1 = hipsparseDdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseCdense2csr_full_rank(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csr_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      complex(c_float_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseCdense2csr_full_rank = hipsparseCdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseCdense2csr_rank_0(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_rows
      complex(c_float_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      !
      hipsparseCdense2csr_rank_0 = hipsparseCdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseCdense2csr_rank_1(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      complex(c_float_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseCdense2csr_rank_1 = hipsparseCdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseZdense2csr_full_rank(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csr_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      complex(c_double_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseZdense2csr_full_rank = hipsparseZdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseZdense2csr_rank_0(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_rows
      complex(c_double_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      !
      hipsparseZdense2csr_rank_0 = hipsparseZdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseZdense2csr_rank_1(handle,m,n,descr,A,ld,nnz_per_rows,csr_val,csr_row_ptr,csr_col_ind)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_rows
      complex(c_double_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      !
      hipsparseZdense2csr_rank_1 = hipsparseZdense2csr_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_rows),c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind))
    end function

    function hipsparseSpruneDense2csr_bufferSize_full_rank(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSize_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csr_bufferSize_full_rank = hipsparseSpruneDense2csr_bufferSize_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csr_bufferSize_rank_0(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneDense2csr_bufferSize_rank_0 = hipsparseSpruneDense2csr_bufferSize_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csr_bufferSize_rank_1(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csr_bufferSize_rank_1 = hipsparseSpruneDense2csr_bufferSize_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csr_bufferSize_full_rank(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSize_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csr_bufferSize_full_rank = hipsparseDpruneDense2csr_bufferSize_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csr_bufferSize_rank_0(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneDense2csr_bufferSize_rank_0 = hipsparseDpruneDense2csr_bufferSize_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csr_bufferSize_rank_1(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csr_bufferSize_rank_1 = hipsparseDpruneDense2csr_bufferSize_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csr_bufferSizeExt_full_rank(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csr_bufferSizeExt_full_rank = hipsparseSpruneDense2csr_bufferSizeExt_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csr_bufferSizeExt_rank_0(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneDense2csr_bufferSizeExt_rank_0 = hipsparseSpruneDense2csr_bufferSizeExt_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csr_bufferSizeExt_rank_1(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csr_bufferSizeExt_rank_1 = hipsparseSpruneDense2csr_bufferSizeExt_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csr_bufferSizeExt_full_rank(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csr_bufferSizeExt_full_rank = hipsparseDpruneDense2csr_bufferSizeExt_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csr_bufferSizeExt_rank_0(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneDense2csr_bufferSizeExt_rank_0 = hipsparseDpruneDense2csr_bufferSizeExt_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csr_bufferSizeExt_rank_1(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csr_bufferSizeExt_rank_1 = hipsparseDpruneDense2csr_bufferSizeExt_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrNnz_full_rank(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnz_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrNnz_full_rank = hipsparseSpruneDense2csrNnz_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseSpruneDense2csrNnz_rank_0(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      integer(c_int),target :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrNnz_rank_0 = hipsparseSpruneDense2csrNnz_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseSpruneDense2csrNnz_rank_1(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrNnz_rank_1 = hipsparseSpruneDense2csrNnz_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseDpruneDense2csrNnz_full_rank(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnz_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrNnz_full_rank = hipsparseDpruneDense2csrNnz_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseDpruneDense2csrNnz_rank_0(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      integer(c_int),target :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrNnz_rank_0 = hipsparseDpruneDense2csrNnz_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseDpruneDense2csrNnz_rank_1(handle,m,n,A,lda,threshold,descr,csrRowPtr,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrNnz_rank_1 = hipsparseDpruneDense2csrNnz_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseSpruneDense2csr_full_rank(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csr_full_rank = hipsparseSpruneDense2csr_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),buffer)
    end function

    function hipsparseSpruneDense2csr_rank_0(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csr_rank_0 = hipsparseSpruneDense2csr_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),buffer)
    end function

    function hipsparseSpruneDense2csr_rank_1(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: threshold
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csr_rank_1 = hipsparseSpruneDense2csr_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),buffer)
    end function

    function hipsparseDpruneDense2csr_full_rank(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csr_full_rank = hipsparseDpruneDense2csr_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),buffer)
    end function

    function hipsparseDpruneDense2csr_rank_0(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csr_rank_0 = hipsparseDpruneDense2csr_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),buffer)
    end function

    function hipsparseDpruneDense2csr_rank_1(handle,m,n,A,lda,threshold,descr,csrVal,csrRowPtr,csrColInd,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: threshold
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csr_rank_1 = hipsparseDpruneDense2csr_(handle,m,n,c_loc(A),lda,threshold,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),buffer)
    end function

    function hipsparseSpruneDense2csrByPercentage_bufferSize_full_rank(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSize_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csrByPercentage_bufferSize_full_rank = hipsparseSpruneDense2csrByPercentage_bufferSize_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrByPercentage_bufferSize_rank_0(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneDense2csrByPercentage_bufferSize_rank_0 = hipsparseSpruneDense2csrByPercentage_bufferSize_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrByPercentage_bufferSize_rank_1(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csrByPercentage_bufferSize_rank_1 = hipsparseSpruneDense2csrByPercentage_bufferSize_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csrByPercentage_bufferSize_full_rank(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSize_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csrByPercentage_bufferSize_full_rank = hipsparseDpruneDense2csrByPercentage_bufferSize_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csrByPercentage_bufferSize_rank_0(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneDense2csrByPercentage_bufferSize_rank_0 = hipsparseDpruneDense2csrByPercentage_bufferSize_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csrByPercentage_bufferSize_rank_1(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csrByPercentage_bufferSize_rank_1 = hipsparseDpruneDense2csrByPercentage_bufferSize_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrByPercentage_bufferSizeExt_full_rank(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csrByPercentage_bufferSizeExt_full_rank = hipsparseSpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_0(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_0 = hipsparseSpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_1(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneDense2csrByPercentage_bufferSizeExt_rank_1 = hipsparseSpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csrByPercentage_bufferSizeExt_full_rank(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSizeExt_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csrByPercentage_bufferSizeExt_full_rank = hipsparseDpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_0(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_0 = hipsparseDpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_1(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneDense2csrByPercentage_bufferSizeExt_rank_1 = hipsparseDpruneDense2csrByPercentage_bufferSizeExt_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneDense2csrNnzByPercentage_full_rank(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnzByPercentage_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrNnzByPercentage_full_rank = hipsparseSpruneDense2csrNnzByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseSpruneDense2csrNnzByPercentage_rank_0(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnzByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      integer(c_int),target :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrNnzByPercentage_rank_0 = hipsparseSpruneDense2csrNnzByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseSpruneDense2csrNnzByPercentage_rank_1(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrNnzByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrNnzByPercentage_rank_1 = hipsparseSpruneDense2csrNnzByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseDpruneDense2csrNnzByPercentage_full_rank(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnzByPercentage_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrNnzByPercentage_full_rank = hipsparseDpruneDense2csrNnzByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseDpruneDense2csrNnzByPercentage_rank_0(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnzByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      integer(c_int),target :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrNnzByPercentage_rank_0 = hipsparseDpruneDense2csrNnzByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseDpruneDense2csrNnzByPercentage_rank_1(handle,m,n,A,lda,percentage,descr,csrRowPtr,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrNnzByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrNnzByPercentage_rank_1 = hipsparseDpruneDense2csrNnzByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrRowPtr),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseSpruneDense2csrByPercentage_full_rank(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrByPercentage_full_rank = hipsparseSpruneDense2csrByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,buffer)
    end function

    function hipsparseSpruneDense2csrByPercentage_rank_0(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrByPercentage_rank_0 = hipsparseSpruneDense2csrByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,buffer)
    end function

    function hipsparseSpruneDense2csrByPercentage_rank_1(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneDense2csrByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_float) :: percentage
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneDense2csrByPercentage_rank_1 = hipsparseSpruneDense2csrByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,buffer)
    end function

    function hipsparseDpruneDense2csrByPercentage_full_rank(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrByPercentage_full_rank = hipsparseDpruneDense2csrByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,buffer)
    end function

    function hipsparseDpruneDense2csrByPercentage_rank_0(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrByPercentage_rank_0 = hipsparseDpruneDense2csrByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,buffer)
    end function

    function hipsparseDpruneDense2csrByPercentage_rank_1(handle,m,n,A,lda,percentage,descr,csrVal,csrRowPtr,csrColInd,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneDense2csrByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: lda
      real(c_double) :: percentage
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneDense2csrByPercentage_rank_1 = hipsparseDpruneDense2csrByPercentage_(handle,m,n,c_loc(A),lda,percentage,descr,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,buffer)
    end function

    function hipsparseSdense2csc_full_rank(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csc_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      real(c_float),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseSdense2csc_full_rank = hipsparseSdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseSdense2csc_rank_0(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_columns
      real(c_float),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      !
      hipsparseSdense2csc_rank_0 = hipsparseSdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseSdense2csc_rank_1(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSdense2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      real(c_float),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseSdense2csc_rank_1 = hipsparseSdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseDdense2csc_full_rank(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csc_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      real(c_double),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseDdense2csc_full_rank = hipsparseDdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseDdense2csc_rank_0(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_columns
      real(c_double),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      !
      hipsparseDdense2csc_rank_0 = hipsparseDdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseDdense2csc_rank_1(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDdense2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      real(c_double),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseDdense2csc_rank_1 = hipsparseDdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseCdense2csc_full_rank(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csc_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      complex(c_float_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseCdense2csc_full_rank = hipsparseCdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseCdense2csc_rank_0(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_columns
      complex(c_float_complex),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      !
      hipsparseCdense2csc_rank_0 = hipsparseCdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseCdense2csc_rank_1(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCdense2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      complex(c_float_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseCdense2csc_rank_1 = hipsparseCdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseZdense2csc_full_rank(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csc_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      complex(c_double_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseZdense2csc_full_rank = hipsparseZdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseZdense2csc_rank_0(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target :: A
      integer(c_int) :: ld
      integer(c_int),target :: nnz_per_columns
      complex(c_double_complex),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      !
      hipsparseZdense2csc_rank_0 = hipsparseZdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseZdense2csc_rank_1(handle,m,n,descr,A,ld,nnz_per_columns,csc_val,csc_row_ind,csc_col_ptr)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZdense2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      integer(c_int),target,dimension(:) :: nnz_per_columns
      complex(c_double_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      !
      hipsparseZdense2csc_rank_1 = hipsparseZdense2csc_(handle,m,n,descr,c_loc(A),ld,c_loc(nnz_per_columns),c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr))
    end function

    function hipsparseScsr2dense_full_rank(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseScsr2dense_full_rank = hipsparseScsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseScsr2dense_rank_0(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      real(c_float),target :: A
      integer(c_int) :: ld
      !
      hipsparseScsr2dense_rank_0 = hipsparseScsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseScsr2dense_rank_1(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseScsr2dense_rank_1 = hipsparseScsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseDcsr2dense_full_rank(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseDcsr2dense_full_rank = hipsparseDcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseDcsr2dense_rank_0(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      real(c_double),target :: A
      integer(c_int) :: ld
      !
      hipsparseDcsr2dense_rank_0 = hipsparseDcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseDcsr2dense_rank_1(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseDcsr2dense_rank_1 = hipsparseDcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseCcsr2dense_full_rank(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseCcsr2dense_full_rank = hipsparseCcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseCcsr2dense_rank_0(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      complex(c_float_complex),target :: A
      integer(c_int) :: ld
      !
      hipsparseCcsr2dense_rank_0 = hipsparseCcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseCcsr2dense_rank_1(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseCcsr2dense_rank_1 = hipsparseCcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseZcsr2dense_full_rank(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseZcsr2dense_full_rank = hipsparseZcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseZcsr2dense_rank_0(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      complex(c_double_complex),target :: A
      integer(c_int) :: ld
      !
      hipsparseZcsr2dense_rank_0 = hipsparseZcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseZcsr2dense_rank_1(handle,m,n,descr,csr_val,csr_row_ptr,csr_col_ind,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseZcsr2dense_rank_1 = hipsparseZcsr2dense_(handle,m,n,descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),c_loc(A),ld)
    end function

    function hipsparseScsc2dense_full_rank(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsc2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      real(c_float),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseScsc2dense_full_rank = hipsparseScsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseScsc2dense_rank_0(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsc2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      real(c_float),target :: A
      integer(c_int) :: ld
      !
      hipsparseScsc2dense_rank_0 = hipsparseScsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseScsc2dense_rank_1(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsc2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_float),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      real(c_float),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseScsc2dense_rank_1 = hipsparseScsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseDcsc2dense_full_rank(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsc2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      real(c_double),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseDcsc2dense_full_rank = hipsparseDcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseDcsc2dense_rank_0(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsc2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      real(c_double),target :: A
      integer(c_int) :: ld
      !
      hipsparseDcsc2dense_rank_0 = hipsparseDcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseDcsc2dense_rank_1(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsc2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      real(c_double),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      real(c_double),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseDcsc2dense_rank_1 = hipsparseDcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseCcsc2dense_full_rank(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsc2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      complex(c_float_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseCcsc2dense_full_rank = hipsparseCcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseCcsc2dense_rank_0(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsc2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      complex(c_float_complex),target :: A
      integer(c_int) :: ld
      !
      hipsparseCcsc2dense_rank_0 = hipsparseCcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseCcsc2dense_rank_1(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsc2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_float_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      complex(c_float_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseCcsc2dense_rank_1 = hipsparseCcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseZcsc2dense_full_rank(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsc2dense_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      complex(c_double_complex),target,dimension(:,:) :: A
      integer(c_int) :: ld
      !
      hipsparseZcsc2dense_full_rank = hipsparseZcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseZcsc2dense_rank_0(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsc2dense_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target :: csc_val
      integer(c_int),target :: csc_row_ind
      integer(c_int),target :: csc_col_ptr
      complex(c_double_complex),target :: A
      integer(c_int) :: ld
      !
      hipsparseZcsc2dense_rank_0 = hipsparseZcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseZcsc2dense_rank_1(handle,m,n,descr,csc_val,csc_row_ind,csc_col_ptr,A,ld)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsc2dense_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descr
      complex(c_double_complex),target,dimension(:) :: csc_val
      integer(c_int),target,dimension(:) :: csc_row_ind
      integer(c_int),target,dimension(:) :: csc_col_ptr
      complex(c_double_complex),target,dimension(:) :: A
      integer(c_int) :: ld
      !
      hipsparseZcsc2dense_rank_1 = hipsparseZcsc2dense_(handle,m,n,descr,c_loc(csc_val),c_loc(csc_row_ind),c_loc(csc_col_ptr),c_loc(A),ld)
    end function

    function hipsparseXcsr2bsrNnz_rank_0(handle,dirA,m,n,descrA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrRowPtrC,bsrNnzb)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2bsrNnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrNnzb
      !
      hipsparseXcsr2bsrNnz_rank_0 = hipsparseXcsr2bsrNnz_(handle,dirA,m,n,descrA,c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrRowPtrC),c_loc(bsrNnzb))
    end function

    function hipsparseXcsr2bsrNnz_rank_1(handle,dirA,m,n,descrA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrRowPtrC,bsrNnzb)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2bsrNnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrNnzb
      !
      hipsparseXcsr2bsrNnz_rank_1 = hipsparseXcsr2bsrNnz_(handle,dirA,m,n,descrA,c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrRowPtrC),c_loc(bsrNnzb))
    end function

    function hipsparseSnnz_compress_rank_0(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: nnzPerRow
      integer(c_int),target :: nnzC
      real(c_float) :: tol
      !
      hipsparseSnnz_compress_rank_0 = hipsparseSnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseSnnz_compress_rank_1(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSnnz_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: nnzPerRow
      integer(c_int),target,dimension(:) :: nnzC
      real(c_float) :: tol
      !
      hipsparseSnnz_compress_rank_1 = hipsparseSnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseDnnz_compress_rank_0(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: nnzPerRow
      integer(c_int),target :: nnzC
      real(c_double) :: tol
      !
      hipsparseDnnz_compress_rank_0 = hipsparseDnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseDnnz_compress_rank_1(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDnnz_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: nnzPerRow
      integer(c_int),target,dimension(:) :: nnzC
      real(c_double) :: tol
      !
      hipsparseDnnz_compress_rank_1 = hipsparseDnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseCnnz_compress_rank_0(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: nnzPerRow
      integer(c_int),target :: nnzC
      complex(c_float_complex) :: tol
      !
      hipsparseCnnz_compress_rank_0 = hipsparseCnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseCnnz_compress_rank_1(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCnnz_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: nnzPerRow
      integer(c_int),target,dimension(:) :: nnzC
      complex(c_float_complex) :: tol
      !
      hipsparseCnnz_compress_rank_1 = hipsparseCnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseZnnz_compress_rank_0(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: nnzPerRow
      integer(c_int),target :: nnzC
      complex(c_double_complex) :: tol
      !
      hipsparseZnnz_compress_rank_0 = hipsparseZnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseZnnz_compress_rank_1(handle,m,descrA,csrValA,csrRowPtrA,nnzPerRow,nnzC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZnnz_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: nnzPerRow
      integer(c_int),target,dimension(:) :: nnzC
      complex(c_double_complex) :: tol
      !
      hipsparseZnnz_compress_rank_1 = hipsparseZnnz_compress_(handle,m,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(nnzPerRow),c_loc(nnzC),tol)
    end function

    function hipsparseXcsr2coo_rank_0(handle,csrRowPtr,nnz,m,cooRowInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2coo_rank_0
      type(c_ptr) :: handle
      integer(c_int),target :: csrRowPtr
      integer(c_int) :: nnz
      integer(c_int) :: m
      integer(c_int),target :: cooRowInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseXcsr2coo_rank_0 = hipsparseXcsr2coo_(handle,c_loc(csrRowPtr),nnz,m,c_loc(cooRowInd),idxBase)
    end function

    function hipsparseXcsr2coo_rank_1(handle,csrRowPtr,nnz,m,cooRowInd,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2coo_rank_1
      type(c_ptr) :: handle
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int) :: nnz
      integer(c_int) :: m
      integer(c_int),target,dimension(:) :: cooRowInd
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseXcsr2coo_rank_1 = hipsparseXcsr2coo_(handle,c_loc(csrRowPtr),nnz,m,c_loc(cooRowInd),idxBase)
    end function

    function hipsparseScsr2csc_rank_0(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_float),target :: csrSortedVal
      integer(c_int),target :: csrSortedRowPtr
      integer(c_int),target :: csrSortedColInd
      real(c_float),target :: cscSortedVal
      integer(c_int),target :: cscSortedRowInd
      integer(c_int),target :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseScsr2csc_rank_0 = hipsparseScsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseScsr2csc_rank_1(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: csrSortedVal
      integer(c_int),target,dimension(:) :: csrSortedRowPtr
      integer(c_int),target,dimension(:) :: csrSortedColInd
      real(c_float),target,dimension(:) :: cscSortedVal
      integer(c_int),target,dimension(:) :: cscSortedRowInd
      integer(c_int),target,dimension(:) :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseScsr2csc_rank_1 = hipsparseScsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseDcsr2csc_rank_0(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_double),target :: csrSortedVal
      integer(c_int),target :: csrSortedRowPtr
      integer(c_int),target :: csrSortedColInd
      real(c_double),target :: cscSortedVal
      integer(c_int),target :: cscSortedRowInd
      integer(c_int),target :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDcsr2csc_rank_0 = hipsparseDcsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseDcsr2csc_rank_1(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: csrSortedVal
      integer(c_int),target,dimension(:) :: csrSortedRowPtr
      integer(c_int),target,dimension(:) :: csrSortedColInd
      real(c_double),target,dimension(:) :: cscSortedVal
      integer(c_int),target,dimension(:) :: cscSortedRowInd
      integer(c_int),target,dimension(:) :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseDcsr2csc_rank_1 = hipsparseDcsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseCcsr2csc_rank_0(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_float_complex),target :: csrSortedVal
      integer(c_int),target :: csrSortedRowPtr
      integer(c_int),target :: csrSortedColInd
      complex(c_float_complex),target :: cscSortedVal
      integer(c_int),target :: cscSortedRowInd
      integer(c_int),target :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCcsr2csc_rank_0 = hipsparseCcsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseCcsr2csc_rank_1(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: csrSortedVal
      integer(c_int),target,dimension(:) :: csrSortedRowPtr
      integer(c_int),target,dimension(:) :: csrSortedColInd
      complex(c_float_complex),target,dimension(:) :: cscSortedVal
      integer(c_int),target,dimension(:) :: cscSortedRowInd
      integer(c_int),target,dimension(:) :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseCcsr2csc_rank_1 = hipsparseCcsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseZcsr2csc_rank_0(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csc_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_double_complex),target :: csrSortedVal
      integer(c_int),target :: csrSortedRowPtr
      integer(c_int),target :: csrSortedColInd
      complex(c_double_complex),target :: cscSortedVal
      integer(c_int),target :: cscSortedRowInd
      integer(c_int),target :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZcsr2csc_rank_0 = hipsparseZcsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseZcsr2csc_rank_1(handle,m,n,nnz,csrSortedVal,csrSortedRowPtr,csrSortedColInd,cscSortedVal,cscSortedRowInd,cscSortedColPtr,copyValues,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csc_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: csrSortedVal
      integer(c_int),target,dimension(:) :: csrSortedRowPtr
      integer(c_int),target,dimension(:) :: csrSortedColInd
      complex(c_double_complex),target,dimension(:) :: cscSortedVal
      integer(c_int),target,dimension(:) :: cscSortedRowInd
      integer(c_int),target,dimension(:) :: cscSortedColPtr
      integer(kind(HIPSPARSE_ACTION_SYMBOLIC)) :: copyValues
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseZcsr2csc_rank_1 = hipsparseZcsr2csc_(handle,m,n,nnz,c_loc(csrSortedVal),c_loc(csrSortedRowPtr),c_loc(csrSortedColInd),c_loc(cscSortedVal),c_loc(cscSortedRowInd),c_loc(cscSortedColPtr),copyValues,idxBase)
    end function

    function hipsparseScsr2hyb_rank_0(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2hyb_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseScsr2hyb_rank_0 = hipsparseScsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseScsr2hyb_rank_1(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2hyb_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseScsr2hyb_rank_1 = hipsparseScsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseDcsr2hyb_rank_0(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2hyb_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseDcsr2hyb_rank_0 = hipsparseDcsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseDcsr2hyb_rank_1(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2hyb_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseDcsr2hyb_rank_1 = hipsparseDcsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseCcsr2hyb_rank_0(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2hyb_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseCcsr2hyb_rank_0 = hipsparseCcsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseCcsr2hyb_rank_1(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2hyb_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseCcsr2hyb_rank_1 = hipsparseCcsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseZcsr2hyb_rank_0(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2hyb_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseZcsr2hyb_rank_0 = hipsparseZcsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseZcsr2hyb_rank_1(handle,m,n,descrA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA,hybA,userEllWidth,partitionType)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2hyb_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      type(c_ptr) :: hybA
      integer(c_int) :: userEllWidth
      integer(kind(HIPSPARSE_HYB_PARTITION_AUTO)) :: partitionType
      !
      hipsparseZcsr2hyb_rank_1 = hipsparseZcsr2hyb_(handle,m,n,descrA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA),hybA,userEllWidth,partitionType)
    end function

    function hipsparseScsr2gebsr_bufferSize_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_float),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseScsr2gebsr_bufferSize_rank_0 = hipsparseScsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseScsr2gebsr_bufferSize_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_float),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseScsr2gebsr_bufferSize_rank_1 = hipsparseScsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseDcsr2gebsr_bufferSize_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_double),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseDcsr2gebsr_bufferSize_rank_0 = hipsparseDcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseDcsr2gebsr_bufferSize_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_double),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseDcsr2gebsr_bufferSize_rank_1 = hipsparseDcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseCcsr2gebsr_bufferSize_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_float_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseCcsr2gebsr_bufferSize_rank_0 = hipsparseCcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseCcsr2gebsr_bufferSize_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_float_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseCcsr2gebsr_bufferSize_rank_1 = hipsparseCcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseZcsr2gebsr_bufferSize_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_double_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseZcsr2gebsr_bufferSize_rank_0 = hipsparseZcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseZcsr2gebsr_bufferSize_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,row_block_dim,col_block_dim,p_buffer_size)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_double_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer_size
      !
      hipsparseZcsr2gebsr_bufferSize_rank_1 = hipsparseZcsr2gebsr_bufferSize_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),row_block_dim,col_block_dim,p_buffer_size)
    end function

    function hipsparseXcsr2gebsrNnz_rank_0(handle,dir,m,n,csr_descr,csr_row_ptr,csr_col_ind,bsr_descr,bsr_row_ptr,row_block_dim,col_block_dim,bsr_nnz_devhost,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2gebsrNnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_row_ptr
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: bsr_nnz_devhost
      type(c_ptr) :: p_buffer
      !
      hipsparseXcsr2gebsrNnz_rank_0 = hipsparseXcsr2gebsrNnz_(handle,dir,m,n,csr_descr,c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_row_ptr,row_block_dim,col_block_dim,bsr_nnz_devhost,p_buffer)
    end function

    function hipsparseXcsr2gebsrNnz_rank_1(handle,dir,m,n,csr_descr,csr_row_ptr,csr_col_ind,bsr_descr,bsr_row_ptr,row_block_dim,col_block_dim,bsr_nnz_devhost,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsr2gebsrNnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_row_ptr
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: bsr_nnz_devhost
      type(c_ptr) :: p_buffer
      !
      hipsparseXcsr2gebsrNnz_rank_1 = hipsparseXcsr2gebsrNnz_(handle,dir,m,n,csr_descr,c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_row_ptr,row_block_dim,col_block_dim,bsr_nnz_devhost,p_buffer)
    end function

    function hipsparseScsr2gebsr_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_float),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseScsr2gebsr_rank_0 = hipsparseScsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseScsr2gebsr_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_float),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseScsr2gebsr_rank_1 = hipsparseScsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseDcsr2gebsr_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_double),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseDcsr2gebsr_rank_0 = hipsparseDcsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseDcsr2gebsr_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      real(c_double),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseDcsr2gebsr_rank_1 = hipsparseDcsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseCcsr2gebsr_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_float_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseCcsr2gebsr_rank_0 = hipsparseCcsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseCcsr2gebsr_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_float_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseCcsr2gebsr_rank_1 = hipsparseCcsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseZcsr2gebsr_rank_0(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_double_complex),target :: csr_val
      integer(c_int),target :: csr_row_ptr
      integer(c_int),target :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseZcsr2gebsr_rank_0 = hipsparseZcsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseZcsr2gebsr_rank_1(handle,dir,m,n,csr_descr,csr_val,csr_row_ptr,csr_col_ind,bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dir
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: csr_descr
      complex(c_double_complex),target,dimension(:) :: csr_val
      integer(c_int),target,dimension(:) :: csr_row_ptr
      integer(c_int),target,dimension(:) :: csr_col_ind
      type(c_ptr) :: bsr_descr
      type(c_ptr) :: bsr_val
      type(c_ptr) :: bsr_row_ptr
      type(c_ptr) :: bsr_col_ind
      integer(c_int) :: row_block_dim
      integer(c_int) :: col_block_dim
      type(c_ptr) :: p_buffer
      !
      hipsparseZcsr2gebsr_rank_1 = hipsparseZcsr2gebsr_(handle,dir,m,n,csr_descr,c_loc(csr_val),c_loc(csr_row_ptr),c_loc(csr_col_ind),bsr_descr,bsr_val,bsr_row_ptr,bsr_col_ind,row_block_dim,col_block_dim,p_buffer)
    end function

    function hipsparseScsr2bsr_rank_0(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2bsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_float),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      !
      hipsparseScsr2bsr_rank_0 = hipsparseScsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseScsr2bsr_rank_1(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2bsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      !
      hipsparseScsr2bsr_rank_1 = hipsparseScsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseDcsr2bsr_rank_0(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2bsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_double),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      !
      hipsparseDcsr2bsr_rank_0 = hipsparseDcsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseDcsr2bsr_rank_1(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2bsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      !
      hipsparseDcsr2bsr_rank_1 = hipsparseDcsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseCcsr2bsr_rank_0(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2bsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      !
      hipsparseCcsr2bsr_rank_0 = hipsparseCcsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseCcsr2bsr_rank_1(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2bsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      !
      hipsparseCcsr2bsr_rank_1 = hipsparseCcsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseZcsr2bsr_rank_0(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2bsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      !
      hipsparseZcsr2bsr_rank_0 = hipsparseZcsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseZcsr2bsr_rank_1(handle,dirA,m,n,descrA,csrValA,csrRowPtrA,csrColIndA,blockDim,descrC,bsrValC,bsrRowPtrC,bsrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2bsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      !
      hipsparseZcsr2bsr_rank_1 = hipsparseZcsr2bsr_(handle,dirA,m,n,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),blockDim,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC))
    end function

    function hipsparseSbsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseSbsr2csr_rank_0 = hipsparseSbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseSbsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSbsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseSbsr2csr_rank_1 = hipsparseSbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDbsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseDbsr2csr_rank_0 = hipsparseDbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDbsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDbsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseDbsr2csr_rank_1 = hipsparseDbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCbsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseCbsr2csr_rank_0 = hipsparseCbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCbsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCbsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseCbsr2csr_rank_1 = hipsparseCbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZbsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseZbsr2csr_rank_0 = hipsparseZbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZbsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,blockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZbsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: blockDim
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseZbsr2csr_rank_1 = hipsparseZbsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),blockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseSgebsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseSgebsr2csr_rank_0 = hipsparseSgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseSgebsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseSgebsr2csr_rank_1 = hipsparseSgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDgebsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseDgebsr2csr_rank_0 = hipsparseDgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseDgebsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseDgebsr2csr_rank_1 = hipsparseDgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCgebsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseCgebsr2csr_rank_0 = hipsparseCgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseCgebsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseCgebsr2csr_rank_1 = hipsparseCgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZgebsr2csr_rank_0(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2csr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      !
      hipsparseZgebsr2csr_rank_0 = hipsparseZgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseZgebsr2csr_rank_1(handle,dirA,mb,nb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDim,colBlockDim,descrC,csrValC,csrRowPtrC,csrColIndC)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2csr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDim
      integer(c_int) :: colBlockDim
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      !
      hipsparseZgebsr2csr_rank_1 = hipsparseZgebsr2csr_(handle,dirA,mb,nb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDim,colBlockDim,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC))
    end function

    function hipsparseScsr2csr_compress_rank_0(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csr_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrColIndA
      integer(c_int),target :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target :: nnzPerRow
      real(c_float),target :: csrValC
      integer(c_int),target :: csrColIndC
      integer(c_int),target :: csrRowPtrC
      real(c_float) :: tol
      !
      hipsparseScsr2csr_compress_rank_0 = hipsparseScsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseScsr2csr_compress_rank_1(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csr_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: nnzPerRow
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      real(c_float) :: tol
      !
      hipsparseScsr2csr_compress_rank_1 = hipsparseScsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseDcsr2csr_compress_rank_0(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csr_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrColIndA
      integer(c_int),target :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target :: nnzPerRow
      real(c_double),target :: csrValC
      integer(c_int),target :: csrColIndC
      integer(c_int),target :: csrRowPtrC
      real(c_double) :: tol
      !
      hipsparseDcsr2csr_compress_rank_0 = hipsparseDcsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseDcsr2csr_compress_rank_1(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csr_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: nnzPerRow
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      real(c_double) :: tol
      !
      hipsparseDcsr2csr_compress_rank_1 = hipsparseDcsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseCcsr2csr_compress_rank_0(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csr_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrColIndA
      integer(c_int),target :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target :: nnzPerRow
      complex(c_float_complex),target :: csrValC
      integer(c_int),target :: csrColIndC
      integer(c_int),target :: csrRowPtrC
      complex(c_float_complex) :: tol
      !
      hipsparseCcsr2csr_compress_rank_0 = hipsparseCcsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseCcsr2csr_compress_rank_1(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csr_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: nnzPerRow
      complex(c_float_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      complex(c_float_complex) :: tol
      !
      hipsparseCcsr2csr_compress_rank_1 = hipsparseCcsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseZcsr2csr_compress_rank_0(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csr_compress_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrColIndA
      integer(c_int),target :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target :: nnzPerRow
      complex(c_double_complex),target :: csrValC
      integer(c_int),target :: csrColIndC
      integer(c_int),target :: csrRowPtrC
      complex(c_double_complex) :: tol
      !
      hipsparseZcsr2csr_compress_rank_0 = hipsparseZcsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseZcsr2csr_compress_rank_1(handle,m,n,descrA,csrValA,csrColIndA,csrRowPtrA,nnzA,nnzPerRow,csrValC,csrColIndC,csrRowPtrC,tol)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csr_compress_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrColIndA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int) :: nnzA
      integer(c_int),target,dimension(:) :: nnzPerRow
      complex(c_double_complex),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      complex(c_double_complex) :: tol
      !
      hipsparseZcsr2csr_compress_rank_1 = hipsparseZcsr2csr_compress_(handle,m,n,descrA,c_loc(csrValA),c_loc(csrColIndA),c_loc(csrRowPtrA),nnzA,c_loc(nnzPerRow),c_loc(csrValC),c_loc(csrColIndC),c_loc(csrRowPtrC),tol)
    end function

    function hipsparseSpruneCsr2csr_bufferSize_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneCsr2csr_bufferSize_rank_0 = hipsparseSpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csr_bufferSize_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneCsr2csr_bufferSize_rank_1 = hipsparseSpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csr_bufferSize_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneCsr2csr_bufferSize_rank_0 = hipsparseDpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csr_bufferSize_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneCsr2csr_bufferSize_rank_1 = hipsparseDpruneCsr2csr_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csr_bufferSizeExt_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneCsr2csr_bufferSizeExt_rank_0 = hipsparseSpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csr_bufferSizeExt_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneCsr2csr_bufferSizeExt_rank_1 = hipsparseSpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csr_bufferSizeExt_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneCsr2csr_bufferSizeExt_rank_0 = hipsparseDpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csr_bufferSizeExt_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneCsr2csr_bufferSizeExt_rank_1 = hipsparseDpruneCsr2csr_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csrNnz_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrNnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csrNnz_rank_0 = hipsparseSpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseSpruneCsr2csrNnz_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrNnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csrNnz_rank_1 = hipsparseSpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseDpruneCsr2csrNnz_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrNnz_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csrNnz_rank_0 = hipsparseDpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseDpruneCsr2csrNnz_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrRowPtrC,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrNnz_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csrNnz_rank_1 = hipsparseDpruneCsr2csrNnz_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseSpruneCsr2csr_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csr_rank_0 = hipsparseSpruneCsr2csr_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),buffer)
    end function

    function hipsparseSpruneCsr2csr_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: threshold
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csr_rank_1 = hipsparseSpruneCsr2csr_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),buffer)
    end function

    function hipsparseDpruneCsr2csr_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csr_rank_0 = hipsparseDpruneCsr2csr_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),buffer)
    end function

    function hipsparseDpruneCsr2csr_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,threshold,descrC,csrValC,csrRowPtrC,csrColIndC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: threshold
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csr_rank_1 = hipsparseDpruneCsr2csr_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),threshold,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),buffer)
    end function

    function hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_0 = hipsparseSpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneCsr2csrByPercentage_bufferSize_rank_1 = hipsparseSpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_0 = hipsparseDpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneCsr2csrByPercentage_bufferSize_rank_1 = hipsparseDpruneCsr2csrByPercentage_bufferSize_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_0 = hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_rank_1 = hipsparseSpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_0 = hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_rank_1 = hipsparseDpruneCsr2csrByPercentage_bufferSizeExt_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,c_loc(bufferSize))
    end function

    function hipsparseSpruneCsr2csrNnzByPercentage_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrNnzByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csrNnzByPercentage_rank_0 = hipsparseSpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseSpruneCsr2csrNnzByPercentage_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrNnzByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csrNnzByPercentage_rank_1 = hipsparseSpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseDpruneCsr2csrNnzByPercentage_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrNnzByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      integer(c_int),target :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csrNnzByPercentage_rank_0 = hipsparseDpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseDpruneCsr2csrNnzByPercentage_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrRowPtrC,nnzTotalDevHostPtr,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrNnzByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csrNnzByPercentage_rank_1 = hipsparseDpruneCsr2csrNnzByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrRowPtrC),nnzTotalDevHostPtr,myInfo,buffer)
    end function

    function hipsparseSpruneCsr2csrByPercentage_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      real(c_float),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csrByPercentage_rank_0 = hipsparseSpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,buffer)
    end function

    function hipsparseSpruneCsr2csrByPercentage_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSpruneCsr2csrByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_float) :: percentage
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseSpruneCsr2csrByPercentage_rank_1 = hipsparseSpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,buffer)
    end function

    function hipsparseDpruneCsr2csrByPercentage_rank_0(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      real(c_double),target :: csrValC
      integer(c_int),target :: csrRowPtrC
      integer(c_int),target :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csrByPercentage_rank_0 = hipsparseDpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,buffer)
    end function

    function hipsparseDpruneCsr2csrByPercentage_rank_1(handle,m,n,nnzA,descrA,csrValA,csrRowPtrA,csrColIndA,percentage,descrC,csrValC,csrRowPtrC,csrColIndC,myInfo,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDpruneCsr2csrByPercentage_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnzA
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      real(c_double) :: percentage
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: csrValC
      integer(c_int),target,dimension(:) :: csrRowPtrC
      integer(c_int),target,dimension(:) :: csrColIndC
      type(c_ptr) :: myInfo
      type(c_ptr) :: buffer
      !
      hipsparseDpruneCsr2csrByPercentage_rank_1 = hipsparseDpruneCsr2csrByPercentage_(handle,m,n,nnzA,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),percentage,descrC,c_loc(csrValC),c_loc(csrRowPtrC),c_loc(csrColIndC),myInfo,buffer)
    end function

    function hipsparseShyb2csr_rank_0(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseShyb2csr_rank_0
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_float),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      !
      hipsparseShyb2csr_rank_0 = hipsparseShyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseShyb2csr_rank_1(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseShyb2csr_rank_1
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_float),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      !
      hipsparseShyb2csr_rank_1 = hipsparseShyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseDhyb2csr_rank_0(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDhyb2csr_rank_0
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_double),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      !
      hipsparseDhyb2csr_rank_0 = hipsparseDhyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseDhyb2csr_rank_1(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDhyb2csr_rank_1
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      real(c_double),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      !
      hipsparseDhyb2csr_rank_1 = hipsparseDhyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseChyb2csr_rank_0(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseChyb2csr_rank_0
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_float_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      !
      hipsparseChyb2csr_rank_0 = hipsparseChyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseChyb2csr_rank_1(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseChyb2csr_rank_1
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_float_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      !
      hipsparseChyb2csr_rank_1 = hipsparseChyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseZhyb2csr_rank_0(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZhyb2csr_rank_0
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_double_complex),target :: csrSortedValA
      integer(c_int),target :: csrSortedRowPtrA
      integer(c_int),target :: csrSortedColIndA
      !
      hipsparseZhyb2csr_rank_0 = hipsparseZhyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseZhyb2csr_rank_1(handle,descrA,hybA,csrSortedValA,csrSortedRowPtrA,csrSortedColIndA)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZhyb2csr_rank_1
      type(c_ptr) :: handle
      type(c_ptr) :: descrA
      type(c_ptr) :: hybA
      complex(c_double_complex),target,dimension(:) :: csrSortedValA
      integer(c_int),target,dimension(:) :: csrSortedRowPtrA
      integer(c_int),target,dimension(:) :: csrSortedColIndA
      !
      hipsparseZhyb2csr_rank_1 = hipsparseZhyb2csr_(handle,descrA,hybA,c_loc(csrSortedValA),c_loc(csrSortedRowPtrA),c_loc(csrSortedColIndA))
    end function

    function hipsparseXcoo2csr_rank_0(handle,cooRowInd,nnz,m,csrRowPtr,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoo2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int),target :: cooRowInd
      integer(c_int) :: nnz
      integer(c_int) :: m
      integer(c_int),target :: csrRowPtr
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseXcoo2csr_rank_0 = hipsparseXcoo2csr_(handle,c_loc(cooRowInd),nnz,m,c_loc(csrRowPtr),idxBase)
    end function

    function hipsparseXcoo2csr_rank_1(handle,cooRowInd,nnz,m,csrRowPtr,idxBase)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoo2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int),target,dimension(:) :: cooRowInd
      integer(c_int) :: nnz
      integer(c_int) :: m
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(kind(HIPSPARSE_INDEX_BASE_ZERO)) :: idxBase
      !
      hipsparseXcoo2csr_rank_1 = hipsparseXcoo2csr_(handle,c_loc(cooRowInd),nnz,m,c_loc(csrRowPtr),idxBase)
    end function

    function hipsparseCreateIdentityPermutation_rank_0(handle,n,p)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateIdentityPermutation_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: n
      integer(c_int),target :: p
      !
      hipsparseCreateIdentityPermutation_rank_0 = hipsparseCreateIdentityPermutation_(handle,n,c_loc(p))
    end function

    function hipsparseCreateIdentityPermutation_rank_1(handle,n,p)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCreateIdentityPermutation_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: n
      integer(c_int),target,dimension(:) :: p
      !
      hipsparseCreateIdentityPermutation_rank_1 = hipsparseCreateIdentityPermutation_(handle,n,c_loc(p))
    end function

    function hipsparseXcsrsort_bufferSizeExt_rank_0(handle,m,n,nnz,csrRowPtr,csrColInd,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseXcsrsort_bufferSizeExt_rank_0 = hipsparseXcsrsort_bufferSizeExt_(handle,m,n,nnz,c_loc(csrRowPtr),c_loc(csrColInd),pBufferSizeInBytes)
    end function

    function hipsparseXcsrsort_bufferSizeExt_rank_1(handle,m,n,nnz,csrRowPtr,csrColInd,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseXcsrsort_bufferSizeExt_rank_1 = hipsparseXcsrsort_bufferSizeExt_(handle,m,n,nnz,c_loc(csrRowPtr),c_loc(csrColInd),pBufferSizeInBytes)
    end function

    function hipsparseXcsrsort_full_rank(handle,m,n,nnz,descrA,csrRowPtr,csrColInd,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_int),target,dimension(:,:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcsrsort_full_rank = hipsparseXcsrsort_(handle,m,n,nnz,descrA,c_loc(csrRowPtr),c_loc(csrColInd),c_loc(P),pBuffer)
    end function

    function hipsparseXcsrsort_rank_0(handle,m,n,nnz,descrA,csrRowPtr,csrColInd,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      integer(c_int),target :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcsrsort_rank_0 = hipsparseXcsrsort_(handle,m,n,nnz,descrA,c_loc(csrRowPtr),c_loc(csrColInd),c_loc(P),pBuffer)
    end function

    function hipsparseXcsrsort_rank_1(handle,m,n,nnz,descrA,csrRowPtr,csrColInd,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcsrsort_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      integer(c_int),target,dimension(:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcsrsort_rank_1 = hipsparseXcsrsort_(handle,m,n,nnz,descrA,c_loc(csrRowPtr),c_loc(csrColInd),c_loc(P),pBuffer)
    end function

    function hipsparseXcscsort_bufferSizeExt_rank_0(handle,m,n,nnz,cscColPtr,cscRowInd,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target :: cscColPtr
      integer(c_int),target :: cscRowInd
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseXcscsort_bufferSizeExt_rank_0 = hipsparseXcscsort_bufferSizeExt_(handle,m,n,nnz,c_loc(cscColPtr),c_loc(cscRowInd),pBufferSizeInBytes)
    end function

    function hipsparseXcscsort_bufferSizeExt_rank_1(handle,m,n,nnz,cscColPtr,cscRowInd,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: cscColPtr
      integer(c_int),target,dimension(:) :: cscRowInd
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseXcscsort_bufferSizeExt_rank_1 = hipsparseXcscsort_bufferSizeExt_(handle,m,n,nnz,c_loc(cscColPtr),c_loc(cscRowInd),pBufferSizeInBytes)
    end function

    function hipsparseXcscsort_full_rank(handle,m,n,nnz,descrA,cscColPtr,cscRowInd,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      integer(c_int),target,dimension(:) :: cscColPtr
      integer(c_int),target,dimension(:) :: cscRowInd
      integer(c_int),target,dimension(:,:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcscsort_full_rank = hipsparseXcscsort_(handle,m,n,nnz,descrA,c_loc(cscColPtr),c_loc(cscRowInd),c_loc(P),pBuffer)
    end function

    function hipsparseXcscsort_rank_0(handle,m,n,nnz,descrA,cscColPtr,cscRowInd,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      integer(c_int),target :: cscColPtr
      integer(c_int),target :: cscRowInd
      integer(c_int),target :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcscsort_rank_0 = hipsparseXcscsort_(handle,m,n,nnz,descrA,c_loc(cscColPtr),c_loc(cscRowInd),c_loc(P),pBuffer)
    end function

    function hipsparseXcscsort_rank_1(handle,m,n,nnz,descrA,cscColPtr,cscRowInd,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcscsort_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      integer(c_int),target,dimension(:) :: cscColPtr
      integer(c_int),target,dimension(:) :: cscRowInd
      integer(c_int),target,dimension(:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcscsort_rank_1 = hipsparseXcscsort_(handle,m,n,nnz,descrA,c_loc(cscColPtr),c_loc(cscRowInd),c_loc(P),pBuffer)
    end function

    function hipsparseXcoosort_bufferSizeExt_rank_0(handle,m,n,nnz,cooRows,cooCols,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosort_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target :: cooRows
      integer(c_int),target :: cooCols
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseXcoosort_bufferSizeExt_rank_0 = hipsparseXcoosort_bufferSizeExt_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),pBufferSizeInBytes)
    end function

    function hipsparseXcoosort_bufferSizeExt_rank_1(handle,m,n,nnz,cooRows,cooCols,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosort_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: cooRows
      integer(c_int),target,dimension(:) :: cooCols
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseXcoosort_bufferSizeExt_rank_1 = hipsparseXcoosort_bufferSizeExt_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),pBufferSizeInBytes)
    end function

    function hipsparseXcoosortByRow_full_rank(handle,m,n,nnz,cooRows,cooCols,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByRow_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: cooRows
      integer(c_int),target,dimension(:) :: cooCols
      integer(c_int),target,dimension(:,:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcoosortByRow_full_rank = hipsparseXcoosortByRow_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),c_loc(P),pBuffer)
    end function

    function hipsparseXcoosortByRow_rank_0(handle,m,n,nnz,cooRows,cooCols,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByRow_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target :: cooRows
      integer(c_int),target :: cooCols
      integer(c_int),target :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcoosortByRow_rank_0 = hipsparseXcoosortByRow_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),c_loc(P),pBuffer)
    end function

    function hipsparseXcoosortByRow_rank_1(handle,m,n,nnz,cooRows,cooCols,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByRow_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: cooRows
      integer(c_int),target,dimension(:) :: cooCols
      integer(c_int),target,dimension(:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcoosortByRow_rank_1 = hipsparseXcoosortByRow_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),c_loc(P),pBuffer)
    end function

    function hipsparseXcoosortByColumn_full_rank(handle,m,n,nnz,cooRows,cooCols,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByColumn_full_rank
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: cooRows
      integer(c_int),target,dimension(:) :: cooCols
      integer(c_int),target,dimension(:,:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcoosortByColumn_full_rank = hipsparseXcoosortByColumn_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),c_loc(P),pBuffer)
    end function

    function hipsparseXcoosortByColumn_rank_0(handle,m,n,nnz,cooRows,cooCols,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByColumn_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target :: cooRows
      integer(c_int),target :: cooCols
      integer(c_int),target :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcoosortByColumn_rank_0 = hipsparseXcoosortByColumn_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),c_loc(P),pBuffer)
    end function

    function hipsparseXcoosortByColumn_rank_1(handle,m,n,nnz,cooRows,cooCols,P,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXcoosortByColumn_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      integer(c_int),target,dimension(:) :: cooRows
      integer(c_int),target,dimension(:) :: cooCols
      integer(c_int),target,dimension(:) :: P
      type(c_ptr) :: pBuffer
      !
      hipsparseXcoosortByColumn_rank_1 = hipsparseXcoosortByColumn_(handle,m,n,nnz,c_loc(cooRows),c_loc(cooCols),c_loc(P),pBuffer)
    end function

    function hipsparseSgebsr2gebsr_bufferSize_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target :: bufferSize
      !
      hipsparseSgebsr2gebsr_bufferSize_rank_0 = hipsparseSgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseSgebsr2gebsr_bufferSize_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target,dimension(:) :: bufferSize
      !
      hipsparseSgebsr2gebsr_bufferSize_rank_1 = hipsparseSgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseDgebsr2gebsr_bufferSize_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target :: bufferSize
      !
      hipsparseDgebsr2gebsr_bufferSize_rank_0 = hipsparseDgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseDgebsr2gebsr_bufferSize_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target,dimension(:) :: bufferSize
      !
      hipsparseDgebsr2gebsr_bufferSize_rank_1 = hipsparseDgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseCgebsr2gebsr_bufferSize_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target :: bufferSize
      !
      hipsparseCgebsr2gebsr_bufferSize_rank_0 = hipsparseCgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseCgebsr2gebsr_bufferSize_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target,dimension(:) :: bufferSize
      !
      hipsparseCgebsr2gebsr_bufferSize_rank_1 = hipsparseCgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseZgebsr2gebsr_bufferSize_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsr_bufferSize_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target :: bufferSize
      !
      hipsparseZgebsr2gebsr_bufferSize_rank_0 = hipsparseZgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseZgebsr2gebsr_bufferSize_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsr_bufferSize_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int),target,dimension(:) :: bufferSize
      !
      hipsparseZgebsr2gebsr_bufferSize_rank_1 = hipsparseZgebsr2gebsr_bufferSize_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,rowBlockDimC,colBlockDimC,c_loc(bufferSize))
    end function

    function hipsparseXgebsr2gebsrNnz_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrRowPtrC,rowBlockDimC,colBlockDimC,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXgebsr2gebsrNnz_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseXgebsr2gebsrNnz_rank_0 = hipsparseXgebsr2gebsrNnz_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrRowPtrC),rowBlockDimC,colBlockDimC,nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseXgebsr2gebsrNnz_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrRowPtrC,rowBlockDimC,colBlockDimC,nnzTotalDevHostPtr,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseXgebsr2gebsrNnz_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      integer(c_int) :: nnzTotalDevHostPtr
      type(c_ptr) :: buffer
      !
      hipsparseXgebsr2gebsrNnz_rank_1 = hipsparseXgebsr2gebsrNnz_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrRowPtrC),rowBlockDimC,colBlockDimC,nnzTotalDevHostPtr,buffer)
    end function

    function hipsparseSgebsr2gebsr_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      real(c_float),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseSgebsr2gebsr_rank_0 = hipsparseSgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseSgebsr2gebsr_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSgebsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      real(c_float),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseSgebsr2gebsr_rank_1 = hipsparseSgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseDgebsr2gebsr_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      real(c_double),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseDgebsr2gebsr_rank_0 = hipsparseDgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseDgebsr2gebsr_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDgebsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      real(c_double),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseDgebsr2gebsr_rank_1 = hipsparseDgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseCgebsr2gebsr_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      complex(c_float_complex),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseCgebsr2gebsr_rank_0 = hipsparseCgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseCgebsr2gebsr_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCgebsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      complex(c_float_complex),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseCgebsr2gebsr_rank_1 = hipsparseCgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseZgebsr2gebsr_rank_0(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsr_rank_0
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: bsrValA
      integer(c_int),target :: bsrRowPtrA
      integer(c_int),target :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      complex(c_double_complex),target :: bsrValC
      integer(c_int),target :: bsrRowPtrC
      integer(c_int),target :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseZgebsr2gebsr_rank_0 = hipsparseZgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseZgebsr2gebsr_rank_1(handle,dirA,mb,nb,nnzb,descrA,bsrValA,bsrRowPtrA,bsrColIndA,rowBlockDimA,colBlockDimA,descrC,bsrValC,bsrRowPtrC,bsrColIndC,rowBlockDimC,colBlockDimC,buffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZgebsr2gebsr_rank_1
      type(c_ptr) :: handle
      integer(kind(HIPSPARSE_DIRECTION_ROW)) :: dirA
      integer(c_int) :: mb
      integer(c_int) :: nb
      integer(c_int) :: nnzb
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: bsrValA
      integer(c_int),target,dimension(:) :: bsrRowPtrA
      integer(c_int),target,dimension(:) :: bsrColIndA
      integer(c_int) :: rowBlockDimA
      integer(c_int) :: colBlockDimA
      type(c_ptr) :: descrC
      complex(c_double_complex),target,dimension(:) :: bsrValC
      integer(c_int),target,dimension(:) :: bsrRowPtrC
      integer(c_int),target,dimension(:) :: bsrColIndC
      integer(c_int) :: rowBlockDimC
      integer(c_int) :: colBlockDimC
      type(c_ptr) :: buffer
      !
      hipsparseZgebsr2gebsr_rank_1 = hipsparseZgebsr2gebsr_(handle,dirA,mb,nb,nnzb,descrA,c_loc(bsrValA),c_loc(bsrRowPtrA),c_loc(bsrColIndA),rowBlockDimA,colBlockDimA,descrC,c_loc(bsrValC),c_loc(bsrRowPtrC),c_loc(bsrColIndC),rowBlockDimC,colBlockDimC,buffer)
    end function

    function hipsparseScsru2csr_bufferSizeExt_rank_0(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsru2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseScsru2csr_bufferSizeExt_rank_0 = hipsparseScsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsru2csr_bufferSizeExt_rank_1(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsru2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseScsru2csr_bufferSizeExt_rank_1 = hipsparseScsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsru2csr_bufferSizeExt_rank_0(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsru2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDcsru2csr_bufferSizeExt_rank_0 = hipsparseDcsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseDcsru2csr_bufferSizeExt_rank_1(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsru2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseDcsru2csr_bufferSizeExt_rank_1 = hipsparseDcsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsru2csr_bufferSizeExt_rank_0(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsru2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_float_complex),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCcsru2csr_bufferSizeExt_rank_0 = hipsparseCcsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseCcsru2csr_bufferSizeExt_rank_1(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsru2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_float_complex),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseCcsru2csr_bufferSizeExt_rank_1 = hipsparseCcsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsru2csr_bufferSizeExt_rank_0(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsru2csr_bufferSizeExt_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_double_complex),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZcsru2csr_bufferSizeExt_rank_0 = hipsparseZcsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseZcsru2csr_bufferSizeExt_rank_1(handle,m,n,nnz,csrVal,csrRowPtr,csrColInd,myInfo,pBufferSizeInBytes)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsru2csr_bufferSizeExt_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      complex(c_double_complex),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      integer(c_size_t) :: pBufferSizeInBytes
      !
      hipsparseZcsru2csr_bufferSizeExt_rank_1 = hipsparseZcsru2csr_bufferSizeExt_(handle,m,n,nnz,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBufferSizeInBytes)
    end function

    function hipsparseScsru2csr_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsru2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseScsru2csr_rank_0 = hipsparseScsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseScsru2csr_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsru2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseScsru2csr_rank_1 = hipsparseScsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseDcsru2csr_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsru2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsru2csr_rank_0 = hipsparseDcsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseDcsru2csr_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsru2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsru2csr_rank_1 = hipsparseDcsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseCcsru2csr_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsru2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsru2csr_rank_0 = hipsparseCcsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseCcsru2csr_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsru2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsru2csr_rank_1 = hipsparseCcsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseZcsru2csr_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsru2csr_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsru2csr_rank_0 = hipsparseZcsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseZcsru2csr_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsru2csr_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsru2csr_rank_1 = hipsparseZcsru2csr_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseScsr2csru_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csru_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseScsr2csru_rank_0 = hipsparseScsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseScsr2csru_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsr2csru_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseScsr2csru_rank_1 = hipsparseScsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseDcsr2csru_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csru_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsr2csru_rank_0 = hipsparseDcsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseDcsr2csru_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsr2csru_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseDcsr2csru_rank_1 = hipsparseDcsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseCcsr2csru_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csru_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsr2csru_rank_0 = hipsparseCcsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseCcsr2csru_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsr2csru_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseCcsr2csru_rank_1 = hipsparseCcsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseZcsr2csru_rank_0(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csru_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrVal
      integer(c_int),target :: csrRowPtr
      integer(c_int),target :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsr2csru_rank_0 = hipsparseZcsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseZcsr2csru_rank_1(handle,m,n,nnz,descrA,csrVal,csrRowPtr,csrColInd,myInfo,pBuffer)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsr2csru_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: n
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrVal
      integer(c_int),target,dimension(:) :: csrRowPtr
      integer(c_int),target,dimension(:) :: csrColInd
      type(c_ptr) :: myInfo
      type(c_ptr) :: pBuffer
      !
      hipsparseZcsr2csru_rank_1 = hipsparseZcsr2csru_(handle,m,n,nnz,descrA,c_loc(csrVal),c_loc(csrRowPtr),c_loc(csrColInd),myInfo,pBuffer)
    end function

    function hipsparseScsrcolor_rank_0(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrcolor_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseScsrcolor_rank_0 = hipsparseScsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseScsrcolor_rank_1(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseScsrcolor_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_float),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseScsrcolor_rank_1 = hipsparseScsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseDcsrcolor_rank_0(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrcolor_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseDcsrcolor_rank_0 = hipsparseDcsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseDcsrcolor_rank_1(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDcsrcolor_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      real(c_double),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseDcsrcolor_rank_1 = hipsparseDcsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseCcsrcolor_rank_0(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrcolor_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseCcsrcolor_rank_0 = hipsparseCcsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseCcsrcolor_rank_1(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseCcsrcolor_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_float_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseCcsrcolor_rank_1 = hipsparseCcsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseZcsrcolor_rank_0(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrcolor_rank_0
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target :: csrValA
      integer(c_int),target :: csrRowPtrA
      integer(c_int),target :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseZcsrcolor_rank_0 = hipsparseZcsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseZcsrcolor_rank_1(handle,m,nnz,descrA,csrValA,csrRowPtrA,csrColIndA,fractionToColor,ncolors,coloring,reordering,myInfo)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseZcsrcolor_rank_1
      type(c_ptr) :: handle
      integer(c_int) :: m
      integer(c_int) :: nnz
      type(c_ptr) :: descrA
      complex(c_double_complex),target,dimension(:) :: csrValA
      integer(c_int),target,dimension(:) :: csrRowPtrA
      integer(c_int),target,dimension(:) :: csrColIndA
      type(c_ptr) :: fractionToColor
      integer(c_int) :: ncolors
      integer(c_int) :: coloring
      integer(c_int) :: reordering
      type(c_ptr) :: myInfo
      !
      hipsparseZcsrcolor_rank_1 = hipsparseZcsrcolor_(handle,m,nnz,descrA,c_loc(csrValA),c_loc(csrRowPtrA),c_loc(csrColIndA),fractionToColor,ncolors,coloring,reordering,myInfo)
    end function

    function hipsparseSparseToDense_bufferSize_rank_0(handle,matA,matB,alg,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSparseToDense_bufferSize_rank_0
      type(c_ptr) :: handle
      type(c_ptr) :: matA
      type(c_ptr) :: matB
      integer(kind(HIPSPARSE_SPARSETODENSE_ALG_DEFAULT)) :: alg
      integer(c_size_t),target :: bufferSize
      !
      hipsparseSparseToDense_bufferSize_rank_0 = hipsparseSparseToDense_bufferSize_(handle,matA,matB,alg,c_loc(bufferSize))
    end function

    function hipsparseSparseToDense_bufferSize_rank_1(handle,matA,matB,alg,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseSparseToDense_bufferSize_rank_1
      type(c_ptr) :: handle
      type(c_ptr) :: matA
      type(c_ptr) :: matB
      integer(kind(HIPSPARSE_SPARSETODENSE_ALG_DEFAULT)) :: alg
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseSparseToDense_bufferSize_rank_1 = hipsparseSparseToDense_bufferSize_(handle,matA,matB,alg,c_loc(bufferSize))
    end function

    function hipsparseDenseToSparse_bufferSize_rank_0(handle,matA,matB,alg,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDenseToSparse_bufferSize_rank_0
      type(c_ptr) :: handle
      type(c_ptr) :: matA
      type(c_ptr) :: matB
      integer(kind(HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT)) :: alg
      integer(c_size_t),target :: bufferSize
      !
      hipsparseDenseToSparse_bufferSize_rank_0 = hipsparseDenseToSparse_bufferSize_(handle,matA,matB,alg,c_loc(bufferSize))
    end function

    function hipsparseDenseToSparse_bufferSize_rank_1(handle,matA,matB,alg,bufferSize)
      use iso_c_binding
      use hipfort_hipsparse_enums
      use hipfort_enums
      implicit none
      integer(kind(HIPSPARSE_STATUS_SUCCESS)) :: hipsparseDenseToSparse_bufferSize_rank_1
      type(c_ptr) :: handle
      type(c_ptr) :: matA
      type(c_ptr) :: matB
      integer(kind(HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT)) :: alg
      integer(c_size_t),target,dimension(:) :: bufferSize
      !
      hipsparseDenseToSparse_bufferSize_rank_1 = hipsparseDenseToSparse_bufferSize_(handle,matA,matB,alg,c_loc(bufferSize))
    end function

  
#endif
end module hipfort_hipsparse
