! ************************************************************************
!  Copyright (C) 2016-2020 Advanced Micro Devices, Inc. All rights reserved.
!
! Permission is hereby granted, free of charge, to any person obtaining a copy
! of this software and associated documentation files (the "Software"), to deal
! in the Software without restriction, including without limitation the rights
! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
! copies of the Software, and to permit persons to whom the Software is
! furnished to do so, subject to the following conditions:
!
! The above copyright notice and this permission notice shall be included in
! all copies or substantial portions of the Software.
!
! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
! THE SOFTWARE.
!
! ************************************************************************

module hipblas_enums
    use iso_c_binding

    !!!!!!!!!!!!!!!!!!!!!!!
    !    hipBLAS types    !
    !!!!!!!!!!!!!!!!!!!!!!!
    enum, bind(c)
        enumerator :: HIPBLAS_OP_N = 111
        enumerator :: HIPBLAS_OP_T = 112
        enumerator :: HIPBLAS_OP_C = 113
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_FILL_MODE_UPPER = 121
        enumerator :: HIPBLAS_FILL_MODE_LOWER = 122
        enumerator :: HIPBLAS_FILL_MODE_FULL = 123
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_DIAG_NON_UNIT = 131
        enumerator :: HIPBLAS_DIAG_UNIT = 132
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_SIDE_LEFT = 141
        enumerator :: HIPBLAS_SIDE_RIGHT = 142
        enumerator :: HIPBLAS_SIDE_BOTH = 143
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_STATUS_SUCCESS = 0
        enumerator :: HIPBLAS_STATUS_NOT_INITIALIZED = 1
        enumerator :: HIPBLAS_STATUS_ALLOC_FAILED = 2
        enumerator :: HIPBLAS_STATUS_INVALID_VALUE = 3
        enumerator :: HIPBLAS_STATUS_MAPPING_ERROR = 4
        enumerator :: HIPBLAS_STATUS_EXECUTION_FAILED = 5
        enumerator :: HIPBLAS_STATUS_INTERNAL_ERROR = 6
        enumerator :: HIPBLAS_STATUS_NOT_SUPPORTED = 7
        enumerator :: HIPBLAS_STATUS_ARCH_MISMATCH = 8
        enumerator :: HIPBLAS_STATUS_HANDLE_IS_NULLPTR = 9
        enumerator :: HIPBLAS_STATUS_INVALID_ENUM = 10
        enumerator :: HIPBLAS_STATUS_UNKNOWN = 11
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_R_16F = 150
        enumerator :: HIPBLAS_R_32F = 151
        enumerator :: HIPBLAS_R_64F = 152
        enumerator :: HIPBLAS_C_16F = 153
        enumerator :: HIPBLAS_C_32F = 154
        enumerator :: HIPBLAS_C_64F = 155
        enumerator :: HIPBLAS_R_8I = 160
        enumerator :: HIPBLAS_R_8U = 161
        enumerator :: HIPBLAS_R_32I = 162
        enumerator :: HIPBLAS_R_32U = 163
        enumerator :: HIPBLAS_C_8I = 164
        enumerator :: HIPBLAS_C_8U = 165
        enumerator :: HIPBLAS_C_32I = 166
        enumerator :: HIPBLAS_C_32U = 167
        enumerator :: HIPBLAS_R_16B = 168
        enumerator :: HIPBLAS_C_16B = 169
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_POINTER_MODE_HOST = 0
        enumerator :: HIPBLAS_POINTER_MODE_DEVICE = 1
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_GEMM_DEFAULT = 160
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_ATOMICS_NOT_ALLOWED = 0
        enumerator :: HIPBLAS_ATOMICS_ALLOWED = 1
    end enum

    enum, bind(c)
        enumerator :: HIPBLAS_GEMM_FLAGS_NONE = 0
        enumerator :: HIPBLAS_GEMM_FLAGS_USE_CU_EFFICIENCY = 2
        enumerator :: HIPBLAS_GEMM_FLAGS_FP16_ALT_IMPL = 4
        enumerator :: HIPBLAS_GEMM_FLAGS_CHECK_SOLUTION_INDEX = 8
        enumerator :: HIPBLAS_GEMM_FLAGS_FP16_ALT_IMPL_RNZ = 16
    end enum

end module hipblas_enums

module hipblas
    use iso_c_binding

    !--------!
    !   Aux  !
    !--------!
    interface
        function hipblasCreate(handle) &
            bind(c, name='hipblasCreate')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCreate
            type(c_ptr), value :: handle
        end function hipblasCreate
    end interface

    interface
        function hipblasDestroy(handle) &
            bind(c, name='hipblasDestroy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDestroy
            type(c_ptr), value :: handle
        end function hipblasDestroy
    end interface

    interface
        function hipblasSetStream(handle, streamId) &
            bind(c, name='hipblasSetStream')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetStream
            type(c_ptr), value :: handle
            type(c_ptr), value :: streamId
        end function hipblasSetStream
    end interface

    interface
        function hipblasGetStream(handle, streamId) &
            bind(c, name='hipblasGetStream')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetStream
            type(c_ptr), value :: handle
            type(c_ptr), value :: streamId
        end function hipblasGetStream
    end interface

    interface
        function hipblasSetPointerMode(handle, mode) &
            bind(c, name='hipblasSetPointerMode')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetPointerMode
            type(c_ptr), value :: handle
            integer(c_int), value :: mode
        end function hipblasSetPointerMode
    end interface

    interface
        function hipblasGetPointerMode(handle, mode) &
            bind(c, name='hipblasGetPointerMode')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetPointerMode
            type(c_ptr), value :: handle
            type(c_ptr), value :: mode
        end function hipblasGetPointerMode
    end interface

    interface
        function hipblasSetVector(n, elemSize, x, incx, y, incy) &
            bind(c, name='hipblasSetVector')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetVector
            integer(c_int), value :: n
            integer(c_int), value :: elemSize
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSetVector
    end interface

    interface
        function hipblasGetVector(n, elemSize, x, incx, y, incy) &
            bind(c, name='hipblasGetVector')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetVector
            integer(c_int), value :: n
            integer(c_int), value :: elemSize
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasGetVector
    end interface

    interface
        function hipblasSetMatrix(rows, cols, elemSize, A, lda, B, ldb) &
            bind(c, name='hipblasSetMatrix')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetMatrix
            integer(c_int), value :: rows
            integer(c_int), value :: cols
            integer(c_int), value :: elemSize
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
        end function hipblasSetMatrix
    end interface

    interface
        function hipblasGetMatrix(rows, cols, elemSize, A, lda, B, ldb) &
            bind(c, name='hipblasGetMatrix')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetMatrix
            integer(c_int), value :: rows
            integer(c_int), value :: cols
            integer(c_int), value :: elemSize
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
        end function hipblasGetMatrix
    end interface

    interface
        function hipblasSetVectorAsync(n, elemSize, x, incx, y, incy, stream) &
            bind(c, name='hipblasSetVectorAsync')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetVectorAsync
            integer(c_int), value :: n
            integer(c_int), value :: elemSize
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: stream
        end function hipblasSetVectorAsync
    end interface

    interface
        function hipblasGetVectorAsync(n, elemSize, x, incx, y, incy, stream) &
            bind(c, name='hipblasGetVectorAsync')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetVectorAsync
            integer(c_int), value :: n
            integer(c_int), value :: elemSize
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: stream
        end function hipblasGetVectorAsync
    end interface

    interface
        function hipblasSetMatrixAsync(rows, cols, elemSize, A, lda, B, ldb, stream) &
            bind(c, name='hipblasSetMatrixAsync')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetMatrixAsync
            integer(c_int), value :: rows
            integer(c_int), value :: cols
            integer(c_int), value :: elemSize
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: stream
        end function hipblasSetMatrixAsync
    end interface

    interface
        function hipblasGetMatrixAsync(rows, cols, elemSize, A, lda, B, ldb, stream) &
            bind(c, name='hipblasGetMatrixAsync')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetMatrixAsync
            integer(c_int), value :: rows
            integer(c_int), value :: cols
            integer(c_int), value :: elemSize
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: stream
        end function hipblasGetMatrixAsync
    end interface

    ! atomics mode
    interface
        function hipblasSetAtomicsMode(handle, atomics_mode) &
            bind(c, name='hipblasSetAtomicsMode')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSetAtomicsMode
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_ATOMICS_ALLOWED)), value :: atomics_mode
        end function hipblasSetAtomicsMode
    end interface

    interface
        function hipblasGetAtomicsMode(handle, atomics_mode) &
            bind(c, name='hipblasGetAtomicsMode')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGetAtomicsMode
            type(c_ptr), value :: handle
            type(c_ptr), value :: atomics_mode
        end function hipblasGetAtomicsMode
    end interface

    !--------!
    ! blas 1 !
    !--------!

    ! scal
    interface
        function hipblasSscal(handle, n, alpha, x, incx) &
            bind(c, name='hipblasSscal')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSscal
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasSscal
    end interface

    interface
        function hipblasDscal(handle, n, alpha, x, incx) &
            bind(c, name='hipblasDscal')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDscal
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDscal
    end interface

    interface
        function hipblasCscal(handle, n, alpha, x, incx) &
            bind(c, name='hipblasCscal')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCscal
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCscal
    end interface

    interface
        function hipblasZscal(handle, n, alpha, x, incx) &
            bind(c, name='hipblasZscal')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZscal
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZscal
    end interface

    interface
        function hipblasCsscal(handle, n, alpha, x, incx) &
            bind(c, name='hipblasCsscal')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsscal
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCsscal
    end interface

    interface
        function hipblasZdscal(handle, n, alpha, x, incx) &
            bind(c, name='hipblasZdscal')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdscal
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZdscal
    end interface

    ! scal_64
    interface
        function hipblasSscal_64(handle, n, alpha, x, incx) &
            bind(c, name='hipblasSscal_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSscal_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasSscal_64
    end interface

    interface
        function hipblasDscal_64(handle, n, alpha, x, incx) &
            bind(c, name='hipblasDscal_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDscal_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDscal_64
    end interface

    interface
        function hipblasCscal_64(handle, n, alpha, x, incx) &
            bind(c, name='hipblasCscal_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCscal_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCscal_64
    end interface

    interface
        function hipblasZscal_64(handle, n, alpha, x, incx) &
            bind(c, name='hipblasZscal_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZscal_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZscal_64
    end interface

    interface
        function hipblasCsscal_64(handle, n, alpha, x, incx) &
            bind(c, name='hipblasCsscal_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsscal_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCsscal_64
    end interface

    interface
        function hipblasZdscal_64(handle, n, alpha, x, incx) &
            bind(c, name='hipblasZdscal_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdscal_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZdscal_64
    end interface

    ! scalBatched
    interface
        function hipblasSscalBatched(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasSscalBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSscalBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasSscalBatched
    end interface

    interface
        function hipblasDscalBatched(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasDscalBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDscalBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDscalBatched
    end interface

    interface
        function hipblasCscalBatched(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasCscalBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCscalBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCscalBatched
    end interface

    interface
        function hipblasZscalBatched(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasZscalBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZscalBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZscalBatched
    end interface

    interface
        function hipblasCsscalBatched(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasCsscalBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsscalBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCsscalBatched
    end interface

    interface
        function hipblasZdscalBatched(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasZdscalBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdscalBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZdscalBatched
    end interface

    ! scalBatched_64
    interface
        function hipblasSscalBatched_64(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasSscalBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSscalBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasSscalBatched_64
    end interface

    interface
        function hipblasDscalBatched_64(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasDscalBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDscalBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDscalBatched_64
    end interface

    interface
        function hipblasCscalBatched_64(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasCscalBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCscalBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCscalBatched_64
    end interface

    interface
        function hipblasZscalBatched_64(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasZscalBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZscalBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZscalBatched_64
    end interface

    interface
        function hipblasCsscalBatched_64(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasCsscalBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsscalBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCsscalBatched_64
    end interface

    interface
        function hipblasZdscalBatched_64(handle, n, alpha, x, incx, batch_count) &
            bind(c, name='hipblasZdscalBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdscalBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZdscalBatched_64
    end interface

    ! scalStridedBatched
    interface
        function hipblasSscalStridedBatched(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasSscalStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSscalStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasSscalStridedBatched
    end interface

    interface
        function hipblasDscalStridedBatched(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDscalStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDscalStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDscalStridedBatched
    end interface

    interface
        function hipblasCscalStridedBatched(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCscalStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCscalStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCscalStridedBatched
    end interface

    interface
        function hipblasZscalStridedBatched(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZscalStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZscalStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZscalStridedBatched
    end interface

    interface
        function hipblasCsscalStridedBatched(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCsscalStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsscalStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCsscalStridedBatched
    end interface

    interface
        function hipblasZdscalStridedBatched(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZdscalStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdscalStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZdscalStridedBatched
    end interface

    ! scalStridedBatched_64
    interface
        function hipblasSscalStridedBatched_64(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasSscalStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSscalStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasSscalStridedBatched_64
    end interface

    interface
        function hipblasDscalStridedBatched_64(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDscalStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDscalStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDscalStridedBatched_64
    end interface

    interface
        function hipblasCscalStridedBatched_64(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCscalStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCscalStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCscalStridedBatched_64
    end interface

    interface
        function hipblasZscalStridedBatched_64(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZscalStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZscalStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZscalStridedBatched_64
    end interface

    interface
        function hipblasCsscalStridedBatched_64(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCsscalStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsscalStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCsscalStridedBatched_64
    end interface

    interface
        function hipblasZdscalStridedBatched_64(handle, n, alpha, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZdscalStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdscalStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZdscalStridedBatched_64
    end interface

    ! copy
    interface
        function hipblasScopy(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasScopy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScopy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasScopy
    end interface

    interface
        function hipblasDcopy(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasDcopy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDcopy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDcopy
    end interface

    interface
        function hipblasCcopy(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasCcopy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCcopy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasCcopy
    end interface

    interface
        function hipblasZcopy(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasZcopy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZcopy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZcopy
    end interface

    ! copy 64-bit
    interface
        function hipblasScopy_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasScopy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScopy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasScopy_64
    end interface

    interface
        function hipblasDcopy_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasDcopy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDcopy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDcopy_64
    end interface

    interface
        function hipblasCcopy_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasCcopy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCcopy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasCcopy_64
    end interface

    interface
        function hipblasZcopy_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasZcopy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZcopy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZcopy_64
    end interface

    ! copyBatched
    interface
        function hipblasScopyBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasScopyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScopyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasScopyBatched
    end interface

    interface
        function hipblasDcopyBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasDcopyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDcopyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDcopyBatched
    end interface

    interface
        function hipblasCcopyBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasCcopyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCcopyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasCcopyBatched
    end interface

    interface
        function hipblasZcopyBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasZcopyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZcopyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZcopyBatched
    end interface

    ! copyBatched 64-bit
    interface
        function hipblasScopyBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasScopyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScopyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasScopyBatched_64
    end interface

    interface
        function hipblasDcopyBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasDcopyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDcopyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDcopyBatched_64
    end interface

    interface
        function hipblasCcopyBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasCcopyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCcopyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasCcopyBatched_64
    end interface

    interface
        function hipblasZcopyBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasZcopyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZcopyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZcopyBatched_64
    end interface

    ! copyStridedBatched
    interface
        function hipblasScopyStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasScopyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScopyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasScopyStridedBatched
    end interface

    interface
        function hipblasDcopyStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDcopyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDcopyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDcopyStridedBatched
    end interface

    interface
        function hipblasCcopyStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCcopyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCcopyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasCcopyStridedBatched
    end interface

    interface
        function hipblasZcopyStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZcopyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZcopyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZcopyStridedBatched
    end interface

    ! copyStridedBatched 64-bit
    interface
        function hipblasScopyStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasScopyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScopyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasScopyStridedBatched_64
    end interface

    interface
        function hipblasDcopyStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDcopyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDcopyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDcopyStridedBatched_64
    end interface

    interface
        function hipblasCcopyStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCcopyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCcopyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasCcopyStridedBatched_64
    end interface

    interface
        function hipblasZcopyStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZcopyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZcopyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZcopyStridedBatched_64
    end interface

    ! dot
    interface
        function hipblasSdot(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasSdot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasSdot
    end interface

    interface
        function hipblasDdot(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasDdot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasDdot
    end interface

    interface
        function hipblasHdot(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasHdot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHdot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasHdot
    end interface

    interface
        function hipblasBfdot(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasBfdot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasBfdot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasBfdot
    end interface

    interface
        function hipblasCdotu(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasCdotu')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotu
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasCdotu
    end interface

    interface
        function hipblasCdotc(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasCdotc')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotc
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasCdotc
    end interface

    interface
        function hipblasZdotu(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasZdotu')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotu
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasZdotu
    end interface

    interface
        function hipblasZdotc(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasZdotc')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotc
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: result
        end function hipblasZdotc
    end interface

    ! 64-bit interface
    interface
        function hipblasSdot_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasSdot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasSdot_64
    end interface

    interface
        function hipblasDdot_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasDdot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasDdot_64
    end interface

    interface
        function hipblasHdot_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasHdot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHdot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasHdot_64
    end interface

    interface
        function hipblasBfdot_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasBfdot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasBfdot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasBfdot_64
    end interface

    interface
        function hipblasCdotu_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasCdotu_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotu_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasCdotu_64
    end interface

    interface
        function hipblasCdotc_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasCdotc_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotc_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasCdotc_64
    end interface

    interface
        function hipblasZdotu_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasZdotu_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotu_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasZdotu_64
    end interface

    interface
        function hipblasZdotc_64(handle, n, x, incx, y, incy, result) &
            bind(c, name='hipblasZdotc_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotc_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
        end function hipblasZdotc_64
    end interface

    ! dotBatched
    interface
        function hipblasSdotBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasSdotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSdotBatched
    end interface

    interface
        function hipblasDdotBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasDdotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDdotBatched
    end interface

    interface
        function hipblasHdotBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasHdotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHdotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasHdotBatched
    end interface

    interface
        function hipblasBfdotBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasBfdotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasBfdotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasBfdotBatched
    end interface

    interface
        function hipblasCdotuBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasCdotuBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotuBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotuBatched
    end interface

    interface
        function hipblasCdotcBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasCdotcBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotcBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotcBatched
    end interface

    interface
        function hipblasZdotuBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasZdotuBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotuBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotuBatched
    end interface

    interface
        function hipblasZdotcBatched(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasZdotcBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotcBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotcBatched
    end interface

    ! 64-bit interface
    interface
        function hipblasSdotBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasSdotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSdotBatched_64
    end interface

    interface
        function hipblasDdotBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasDdotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDdotBatched_64
    end interface

    interface
        function hipblasHdotBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasHdotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHdotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasHdotBatched_64
    end interface

    interface
        function hipblasBfdotBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasBfdotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasBfdotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasBfdotBatched_64
    end interface

    interface
        function hipblasCdotuBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasCdotuBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotuBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotuBatched_64
    end interface

    interface
        function hipblasCdotcBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasCdotcBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotcBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotcBatched_64
    end interface

    interface
        function hipblasZdotuBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasZdotuBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotuBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotuBatched_64
    end interface

    interface
        function hipblasZdotcBatched_64(handle, n, x, incx, y, incy, batch_count, result) &
            bind(c, name='hipblasZdotcBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotcBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotcBatched_64
    end interface

    ! dotStridedBatched
    interface
        function hipblasSdotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasSdotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSdotStridedBatched
    end interface

    interface
        function hipblasDdotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasDdotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDdotStridedBatched
    end interface

    interface
        function hipblasHdotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasHdotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHdotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasHdotStridedBatched
    end interface

    interface
        function hipblasBfdotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasBfdotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasBfdotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasBfdotStridedBatched
    end interface

    interface
        function hipblasCdotuStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasCdotuStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotuStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotuStridedBatched
    end interface

    interface
        function hipblasCdotcStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasCdotcStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotcStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotcStridedBatched
    end interface

    interface
        function hipblasZdotuStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasZdotuStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotuStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotuStridedBatched
    end interface

    interface
        function hipblasZdotcStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasZdotcStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotcStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotcStridedBatched
    end interface

    ! 64-bit interface
    interface
        function hipblasSdotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasSdotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSdotStridedBatched_64
    end interface

    interface
        function hipblasDdotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasDdotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDdotStridedBatched_64
    end interface

    interface
        function hipblasHdotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasHdotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHdotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasHdotStridedBatched_64
    end interface

    interface
        function hipblasBfdotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasBfdotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasBfdotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasBfdotStridedBatched_64
    end interface

    interface
        function hipblasCdotuStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasCdotuStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotuStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotuStridedBatched_64
    end interface

    interface
        function hipblasCdotcStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasCdotcStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdotcStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasCdotcStridedBatched_64
    end interface

    interface
        function hipblasZdotuStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasZdotuStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotuStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotuStridedBatched_64
    end interface

    interface
        function hipblasZdotcStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count, result) &
            bind(c, name='hipblasZdotcStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdotcStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasZdotcStridedBatched_64
    end interface

    ! swap
    interface
        function hipblasSswap(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasSswap')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSswap
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSswap
    end interface

    interface
        function hipblasDswap(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasDswap')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDswap
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDswap
    end interface

    interface
        function hipblasCswap(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasCswap')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCswap
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasCswap
    end interface

    interface
        function hipblasZswap(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasZswap')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZswap
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZswap
    end interface

    ! swap_64
    interface
        function hipblasSswap_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasSswap_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSswap_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSswap_64
    end interface

    interface
        function hipblasDswap_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasDswap_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDswap_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDswap_64
    end interface

    interface
        function hipblasCswap_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasCswap_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCswap_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasCswap_64
    end interface

    interface
        function hipblasZswap_64(handle, n, x, incx, y, incy) &
            bind(c, name='hipblasZswap_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZswap_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZswap_64
    end interface

    ! swapBatched
    interface
        function hipblasSswapBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasSswapBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSswapBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSswapBatched
    end interface

    interface
        function hipblasDswapBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasDswapBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDswapBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDswapBatched
    end interface

    interface
        function hipblasCswapBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasCswapBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCswapBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasCswapBatched
    end interface

    interface
        function hipblasZswapBatched(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasZswapBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZswapBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZswapBatched
    end interface

    ! swapBatched_64
    interface
        function hipblasSswapBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasSswapBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSswapBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSswapBatched_64
    end interface

    interface
        function hipblasDswapBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasDswapBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDswapBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDswapBatched_64
    end interface

    interface
        function hipblasCswapBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasCswapBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCswapBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasCswapBatched_64
    end interface

    interface
        function hipblasZswapBatched_64(handle, n, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasZswapBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZswapBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZswapBatched_64
    end interface

    ! swapStridedBatched
    interface
        function hipblasSswapStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSswapStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSswapStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSswapStridedBatched
    end interface

    interface
        function hipblasDswapStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDswapStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDswapStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDswapStridedBatched
    end interface

    interface
        function hipblasCswapStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCswapStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCswapStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasCswapStridedBatched
    end interface

    interface
        function hipblasZswapStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZswapStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZswapStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZswapStridedBatched
    end interface

    ! swapStridedBatched_64
    interface
        function hipblasSswapStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSswapStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSswapStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSswapStridedBatched_64
    end interface

    interface
        function hipblasDswapStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDswapStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDswapStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDswapStridedBatched_64
    end interface

    interface
        function hipblasCswapStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCswapStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCswapStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasCswapStridedBatched_64
    end interface

    interface
        function hipblasZswapStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZswapStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZswapStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZswapStridedBatched_64
    end interface

    ! axpy
    interface
        function hipblasHaxpy(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasHaxpy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHaxpy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasHaxpy
    end interface

    interface
        function hipblasSaxpy(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasSaxpy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSaxpy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSaxpy
    end interface

    interface
        function hipblasDaxpy(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasDaxpy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDaxpy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDaxpy
    end interface

    interface
        function hipblasCaxpy(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasCaxpy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCaxpy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasCaxpy
    end interface

    interface
        function hipblasZaxpy(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasZaxpy')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZaxpy
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZaxpy
    end interface

    ! axpy 64-bit
    interface
        function hipblasHaxpy_64(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasHaxpy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHaxpy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasHaxpy_64
    end interface

    interface
        function hipblasSaxpy_64(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasSaxpy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSaxpy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSaxpy_64
    end interface

    interface
        function hipblasDaxpy_64(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasDaxpy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDaxpy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDaxpy_64
    end interface

    interface
        function hipblasCaxpy_64(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasCaxpy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCaxpy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasCaxpy_64
    end interface

    interface
        function hipblasZaxpy_64(handle, n, alpha, x, incx, y, incy) &
            bind(c, name='hipblasZaxpy_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZaxpy_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZaxpy_64
    end interface

    ! axpyBatched
    interface
        function hipblasHaxpyBatched(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasHaxpyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHaxpyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasHaxpyBatched
    end interface

    interface
        function hipblasSaxpyBatched(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasSaxpyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSaxpyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSaxpyBatched
    end interface

    interface
        function hipblasDaxpyBatched(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasDaxpyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDaxpyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDaxpyBatched
    end interface

    interface
        function hipblasCaxpyBatched(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasCaxpyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCaxpyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasCaxpyBatched
    end interface

    interface
        function hipblasZaxpyBatched(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasZaxpyBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZaxpyBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZaxpyBatched
    end interface

    ! axpyBatched 64-bit
    interface
        function hipblasHaxpyBatched_64(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasHaxpyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHaxpyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasHaxpyBatched_64
    end interface

    interface
        function hipblasSaxpyBatched_64(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasSaxpyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSaxpyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSaxpyBatched_64
    end interface

    interface
        function hipblasDaxpyBatched_64(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasDaxpyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDaxpyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDaxpyBatched_64
    end interface

    interface
        function hipblasCaxpyBatched_64(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasCaxpyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCaxpyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasCaxpyBatched_64
    end interface

    interface
        function hipblasZaxpyBatched_64(handle, n, alpha, x, incx, y, incy, batch_count) &
            bind(c, name='hipblasZaxpyBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZaxpyBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZaxpyBatched_64
    end interface

    ! axpyStridedBatched
    interface
        function hipblasHaxpyStridedBatched(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasHaxpyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHaxpyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasHaxpyStridedBatched
    end interface

    interface
        function hipblasSaxpyStridedBatched(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSaxpyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSaxpyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSaxpyStridedBatched
    end interface

    interface
        function hipblasDaxpyStridedBatched(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDaxpyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDaxpyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDaxpyStridedBatched
    end interface

    interface
        function hipblasCaxpyStridedBatched(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCaxpyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCaxpyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasCaxpyStridedBatched
    end interface

    interface
        function hipblasZaxpyStridedBatched(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZaxpyStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZaxpyStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZaxpyStridedBatched
    end interface

    ! axpyStridedBatched_64 64-bit
    interface
        function hipblasHaxpyStridedBatched_64(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasHaxpyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHaxpyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasHaxpyStridedBatched_64
    end interface

    interface
        function hipblasSaxpyStridedBatched_64(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSaxpyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSaxpyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSaxpyStridedBatched_64
    end interface

    interface
        function hipblasDaxpyStridedBatched_64(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDaxpyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDaxpyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDaxpyStridedBatched_64
    end interface

    interface
        function hipblasCaxpyStridedBatched_64(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCaxpyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCaxpyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasCaxpyStridedBatched_64
    end interface

    interface
        function hipblasZaxpyStridedBatched_64(handle, n, alpha, x, incx, stride_x, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZaxpyStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZaxpyStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZaxpyStridedBatched_64
    end interface

    ! asum
    interface
        function hipblasSasum(handle, n, x, incx, result) &
            bind(c, name='hipblasSasum')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSasum
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasSasum
    end interface

    interface
        function hipblasDasum(handle, n, x, incx, result) &
            bind(c, name='hipblasDasum')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDasum
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasDasum
    end interface

    interface
        function hipblasScasum(handle, n, x, incx, result) &
            bind(c, name='hipblasScasum')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScasum
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasScasum
    end interface

    interface
        function hipblasDzasum(handle, n, x, incx, result) &
            bind(c, name='hipblasDzasum')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDzasum
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasDzasum
    end interface

    ! 64-bit interface
    interface
        function hipblasSasum_64(handle, n, x, incx, result) &
            bind(c, name='hipblasSasum_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSasum_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasSasum_64
    end interface

    interface
        function hipblasDasum_64(handle, n, x, incx, result) &
            bind(c, name='hipblasDasum_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDasum_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasDasum_64
    end interface

    interface
        function hipblasScasum_64(handle, n, x, incx, result) &
            bind(c, name='hipblasScasum_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScasum_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasScasum_64
    end interface

    interface
        function hipblasDzasum_64(handle, n, x, incx, result) &
            bind(c, name='hipblasDzasum_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDzasum_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasDzasum_64
    end interface

    ! asumBatched
    interface
        function hipblasSasumBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasSasumBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSasumBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSasumBatched
    end interface

    interface
        function hipblasDasumBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDasumBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDasumBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDasumBatched
    end interface

    interface
        function hipblasScasumBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasScasumBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScasumBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScasumBatched
    end interface

    interface
        function hipblasDzasumBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDzasumBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDzasumBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDzasumBatched
    end interface

    ! 64-bit interface
    interface
        function hipblasSasumBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasSasumBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSasumBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSasumBatched_64
    end interface

    interface
        function hipblasDasumBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDasumBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDasumBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDasumBatched_64
    end interface

    interface
        function hipblasScasumBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasScasumBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScasumBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScasumBatched_64
    end interface

    interface
        function hipblasDzasumBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDzasumBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDzasumBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDzasumBatched_64
    end interface

    ! asumStridedBatched
    interface
        function hipblasSasumStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasSasumStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSasumStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSasumStridedBatched
    end interface

    interface
        function hipblasDasumStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDasumStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDasumStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDasumStridedBatched
    end interface

    interface
        function hipblasScasumStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasScasumStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScasumStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScasumStridedBatched
    end interface

    interface
        function hipblasDzasumStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDzasumStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDzasumStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDzasumStridedBatched
    end interface

    ! 64-bit interface
    interface
        function hipblasSasumStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasSasumStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSasumStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSasumStridedBatched_64
    end interface

    interface
        function hipblasDasumStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDasumStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDasumStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDasumStridedBatched_64
    end interface

    interface
        function hipblasScasumStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasScasumStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScasumStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScasumStridedBatched_64
    end interface

    interface
        function hipblasDzasumStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDzasumStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDzasumStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDzasumStridedBatched_64
    end interface

    ! nrm2
    interface
        function hipblasSnrm2(handle, n, x, incx, result) &
            bind(c, name='hipblasSnrm2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSnrm2
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasSnrm2
    end interface

    interface
        function hipblasDnrm2(handle, n, x, incx, result) &
            bind(c, name='hipblasDnrm2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDnrm2
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasDnrm2
    end interface

    interface
        function hipblasScnrm2(handle, n, x, incx, result) &
            bind(c, name='hipblasScnrm2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScnrm2
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasScnrm2
    end interface

    interface
        function hipblasDznrm2(handle, n, x, incx, result) &
            bind(c, name='hipblasDznrm2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDznrm2
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasDznrm2
    end interface

    ! nrm2_64
    interface
        function hipblasSnrm2_64(handle, n, x, incx, result) &
            bind(c, name='hipblasSnrm2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSnrm2_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasSnrm2_64
    end interface

    interface
        function hipblasDnrm2_64(handle, n, x, incx, result) &
            bind(c, name='hipblasDnrm2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDnrm2_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasDnrm2_64
    end interface

    interface
        function hipblasScnrm2_64(handle, n, x, incx, result) &
            bind(c, name='hipblasScnrm2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScnrm2_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasScnrm2_64
    end interface

    interface
        function hipblasDznrm2_64(handle, n, x, incx, result) &
            bind(c, name='hipblasDznrm2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDznrm2_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasDznrm2_64
    end interface

    ! nrm2Batched
    interface
        function hipblasSnrm2Batched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasSnrm2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSnrm2Batched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSnrm2Batched
    end interface

    interface
        function hipblasDnrm2Batched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDnrm2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDnrm2Batched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDnrm2Batched
    end interface

    interface
        function hipblasScnrm2Batched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasScnrm2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScnrm2Batched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScnrm2Batched
    end interface

    interface
        function hipblasDznrm2Batched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDznrm2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDznrm2Batched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDznrm2Batched
    end interface

    ! nrm2Batched_64
    interface
        function hipblasSnrm2Batched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasSnrm2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSnrm2Batched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSnrm2Batched_64
    end interface

    interface
        function hipblasDnrm2Batched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDnrm2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDnrm2Batched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDnrm2Batched_64
    end interface

    interface
        function hipblasScnrm2Batched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasScnrm2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScnrm2Batched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScnrm2Batched_64
    end interface

    interface
        function hipblasDznrm2Batched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasDznrm2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDznrm2Batched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDznrm2Batched_64
    end interface

    ! nrm2StridedBatched
    interface
        function hipblasSnrm2StridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasSnrm2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSnrm2StridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSnrm2StridedBatched
    end interface

    interface
        function hipblasDnrm2StridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDnrm2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDnrm2StridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDnrm2StridedBatched
    end interface

    interface
        function hipblasScnrm2StridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasScnrm2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScnrm2StridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScnrm2StridedBatched
    end interface

    interface
        function hipblasDznrm2StridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDznrm2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDznrm2StridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDznrm2StridedBatched
    end interface

    ! nrm2StridedBatched_64
    interface
        function hipblasSnrm2StridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasSnrm2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSnrm2StridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasSnrm2StridedBatched_64
    end interface

    interface
        function hipblasDnrm2StridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDnrm2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDnrm2StridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDnrm2StridedBatched_64
    end interface

    interface
        function hipblasScnrm2StridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasScnrm2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScnrm2StridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasScnrm2StridedBatched_64
    end interface

    interface
        function hipblasDznrm2StridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasDznrm2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDznrm2StridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasDznrm2StridedBatched_64
    end interface

    ! amax
    interface
        function hipblasIsamax(handle, n, x, incx, result) &
            bind(c, name='hipblasIsamax')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamax
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIsamax
    end interface

    interface
        function hipblasIdamax(handle, n, x, incx, result) &
            bind(c, name='hipblasIdamax')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamax
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIdamax
    end interface

    interface
        function hipblasIcamax(handle, n, x, incx, result) &
            bind(c, name='hipblasIcamax')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamax
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIcamax
    end interface

    interface
        function hipblasIzamax(handle, n, x, incx, result) &
            bind(c, name='hipblasIzamax')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamax
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIzamax
    end interface

    ! amax_64
    interface
        function hipblasIsamax_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIsamax_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamax_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIsamax_64
    end interface

    interface
        function hipblasIdamax_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIdamax_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamax_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIdamax_64
    end interface

    interface
        function hipblasIcamax_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIcamax_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamax_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIcamax_64
    end interface

    interface
        function hipblasIzamax_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIzamax_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamax_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIzamax_64
    end interface

    ! amaxBatched
    interface
        function hipblasIsamaxBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIsamaxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamaxBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsamaxBatched
    end interface

    interface
        function hipblasIdamaxBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIdamaxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamaxBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdamaxBatched
    end interface

    interface
        function hipblasIcamaxBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIcamaxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamaxBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcamaxBatched
    end interface

    interface
        function hipblasIzamaxBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIzamaxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamaxBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzamaxBatched
    end interface

    ! amaxBatched_64
    interface
        function hipblasIsamaxBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIsamaxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamaxBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsamaxBatched_64
    end interface

    interface
        function hipblasIdamaxBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIdamaxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamaxBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdamaxBatched_64
    end interface

    interface
        function hipblasIcamaxBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIcamaxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamaxBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcamaxBatched_64
    end interface

    interface
        function hipblasIzamaxBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIzamaxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamaxBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzamaxBatched_64
    end interface

    ! amaxStridedBatched
    interface
        function hipblasIsamaxStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIsamaxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamaxStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsamaxStridedBatched
    end interface

    interface
        function hipblasIdamaxStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIdamaxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamaxStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdamaxStridedBatched
    end interface

    interface
        function hipblasIcamaxStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIcamaxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamaxStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcamaxStridedBatched
    end interface

    interface
        function hipblasIzamaxStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIzamaxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamaxStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzamaxStridedBatched
    end interface

    ! amaxStridedBatched_64
    interface
        function hipblasIsamaxStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIsamaxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamaxStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsamaxStridedBatched_64
    end interface

    interface
        function hipblasIdamaxStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIdamaxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamaxStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdamaxStridedBatched_64
    end interface

    interface
        function hipblasIcamaxStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIcamaxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamaxStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcamaxStridedBatched_64
    end interface

    interface
        function hipblasIzamaxStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIzamaxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamaxStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzamaxStridedBatched_64
    end interface

    ! amin
    interface
        function hipblasIsamin(handle, n, x, incx, result) &
            bind(c, name='hipblasIsamin')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamin
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIsamin
    end interface

    interface
        function hipblasIdamin(handle, n, x, incx, result) &
            bind(c, name='hipblasIdamin')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamin
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIdamin
    end interface

    interface
        function hipblasIcamin(handle, n, x, incx, result) &
            bind(c, name='hipblasIcamin')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamin
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIcamin
    end interface

    interface
        function hipblasIzamin(handle, n, x, incx, result) &
            bind(c, name='hipblasIzamin')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamin
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: result
        end function hipblasIzamin
    end interface

    ! amin_64
    interface
        function hipblasIsamin_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIsamin_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsamin_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIsamin_64
    end interface

    interface
        function hipblasIdamin_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIdamin_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdamin_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIdamin_64
    end interface

    interface
        function hipblasIcamin_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIcamin_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcamin_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIcamin_64
    end interface

    interface
        function hipblasIzamin_64(handle, n, x, incx, result) &
            bind(c, name='hipblasIzamin_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzamin_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
        end function hipblasIzamin_64
    end interface

    ! aminBatched
    interface
        function hipblasIsaminBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIsaminBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsaminBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsaminBatched
    end interface

    interface
        function hipblasIdaminBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIdaminBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdaminBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdaminBatched
    end interface

    interface
        function hipblasIcaminBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIcaminBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcaminBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcaminBatched
    end interface

    interface
        function hipblasIzaminBatched(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIzaminBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzaminBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzaminBatched
    end interface

    ! aminBatched_64
    interface
        function hipblasIsaminBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIsaminBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsaminBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsaminBatched_64
    end interface

    interface
        function hipblasIdaminBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIdaminBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdaminBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdaminBatched_64
    end interface

    interface
        function hipblasIcaminBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIcaminBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcaminBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcaminBatched_64
    end interface

    interface
        function hipblasIzaminBatched_64(handle, n, x, incx, batch_count, result) &
            bind(c, name='hipblasIzaminBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzaminBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzaminBatched_64
    end interface

    ! aminStridedBatched
    interface
        function hipblasIsaminStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIsaminStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsaminStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsaminStridedBatched
    end interface

    interface
        function hipblasIdaminStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIdaminStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdaminStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdaminStridedBatched
    end interface

    interface
        function hipblasIcaminStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIcaminStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcaminStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcaminStridedBatched
    end interface

    interface
        function hipblasIzaminStridedBatched(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIzaminStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzaminStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzaminStridedBatched
    end interface

    ! aminStridedBatched_64
    interface
        function hipblasIsaminStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIsaminStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIsaminStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIsaminStridedBatched_64
    end interface

    interface
        function hipblasIdaminStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIdaminStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIdaminStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIdaminStridedBatched_64
    end interface

    interface
        function hipblasIcaminStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIcaminStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIcaminStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIcaminStridedBatched_64
    end interface

    interface
        function hipblasIzaminStridedBatched_64(handle, n, x, incx, stride_x, batch_count, result) &
            bind(c, name='hipblasIzaminStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasIzaminStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
        end function hipblasIzaminStridedBatched_64
    end interface

    ! rot
    interface
        function hipblasSrot(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasSrot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasSrot
    end interface

    interface
        function hipblasDrot(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasDrot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasDrot
    end interface

    interface
        function hipblasCrot(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasCrot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasCrot
    end interface

    interface
        function hipblasCsrot(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasCsrot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsrot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasCsrot
    end interface

    interface
        function hipblasZrot(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasZrot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasZrot
    end interface

    interface
        function hipblasZdrot(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasZdrot')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdrot
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasZdrot
    end interface

    ! rot_64
    interface
        function hipblasSrot_64(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasSrot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasSrot_64
    end interface

    interface
        function hipblasDrot_64(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasDrot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasDrot_64
    end interface

    interface
        function hipblasCrot_64(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasCrot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasCrot_64
    end interface

    interface
        function hipblasCsrot_64(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasCsrot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsrot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasCsrot_64
    end interface

    interface
        function hipblasZrot_64(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasZrot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasZrot_64
    end interface

    interface
        function hipblasZdrot_64(handle, n, x, incx, y, incy, c, s) &
            bind(c, name='hipblasZdrot_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdrot_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasZdrot_64
    end interface

    ! rotBatched
    interface
        function hipblasSrotBatched(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasSrotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasSrotBatched
    end interface

    interface
        function hipblasDrotBatched(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasDrotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasDrotBatched
    end interface

    interface
        function hipblasCrotBatched(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasCrotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasCrotBatched
    end interface

    interface
        function hipblasCsrotBatched(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasCsrotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsrotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasCsrotBatched
    end interface

    interface
        function hipblasZrotBatched(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasZrotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasZrotBatched
    end interface

    interface
        function hipblasZdrotBatched(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasZdrotBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdrotBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasZdrotBatched
    end interface

    ! rotBatched_64
    interface
        function hipblasSrotBatched_64(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasSrotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotBatched_64
    end interface

    interface
        function hipblasDrotBatched_64(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasDrotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotBatched_64
    end interface

    interface
        function hipblasCrotBatched_64(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasCrotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasCrotBatched_64
    end interface

    interface
        function hipblasCsrotBatched_64(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasCsrotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsrotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasCsrotBatched_64
    end interface

    interface
        function hipblasZrotBatched_64(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasZrotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasZrotBatched_64
    end interface

    interface
        function hipblasZdrotBatched_64(handle, n, x, incx, y, incy, c, s, batch_count) &
            bind(c, name='hipblasZdrotBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdrotBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasZdrotBatched_64
    end interface

    ! rotStridedBatched
    interface
        function hipblasSrotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasSrotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasSrotStridedBatched
    end interface

    interface
        function hipblasDrotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasDrotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasDrotStridedBatched
    end interface

    interface
        function hipblasCrotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasCrotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasCrotStridedBatched
    end interface

    interface
        function hipblasCsrotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasCsrotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsrotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasCsrotStridedBatched
    end interface

    interface
        function hipblasZrotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasZrotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasZrotStridedBatched
    end interface

    interface
        function hipblasZdrotStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasZdrotStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdrotStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasZdrotStridedBatched
    end interface

    ! rotStridedBatched_64
    interface
        function hipblasSrotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasSrotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotStridedBatched_64
    end interface

    interface
        function hipblasDrotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasDrotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotStridedBatched_64
    end interface

    interface
        function hipblasCrotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasCrotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasCrotStridedBatched_64
    end interface

    interface
        function hipblasCsrotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasCsrotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsrotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasCsrotStridedBatched_64
    end interface

    interface
        function hipblasZrotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasZrotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasZrotStridedBatched_64
    end interface

    interface
        function hipblasZdrotStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, c, s, batch_count) &
            bind(c, name='hipblasZdrotStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdrotStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasZdrotStridedBatched_64
    end interface

    ! rotg
    interface
        function hipblasSrotg(handle, a, b, c, s) &
            bind(c, name='hipblasSrotg')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotg
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasSrotg
    end interface

    interface
        function hipblasDrotg(handle, a, b, c, s) &
            bind(c, name='hipblasDrotg')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotg
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasDrotg
    end interface

    interface
        function hipblasCrotg(handle, a, b, c, s) &
            bind(c, name='hipblasCrotg')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotg
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasCrotg
    end interface

    interface
        function hipblasZrotg(handle, a, b, c, s) &
            bind(c, name='hipblasZrotg')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotg
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasZrotg
    end interface

    ! rotg_64
    interface
        function hipblasSrotg_64(handle, a, b, c, s) &
            bind(c, name='hipblasSrotg_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotg_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasSrotg_64
    end interface

    interface
        function hipblasDrotg_64(handle, a, b, c, s) &
            bind(c, name='hipblasDrotg_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotg_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasDrotg_64
    end interface

    interface
        function hipblasCrotg_64(handle, a, b, c, s) &
            bind(c, name='hipblasCrotg_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotg_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasCrotg_64
    end interface

    interface
        function hipblasZrotg_64(handle, a, b, c, s) &
            bind(c, name='hipblasZrotg_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotg_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
        end function hipblasZrotg_64
    end interface

    ! rotgBatched
    interface
        function hipblasSrotgBatched(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasSrotgBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotgBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasSrotgBatched
    end interface

    interface
        function hipblasDrotgBatched(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasDrotgBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotgBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasDrotgBatched
    end interface

    interface
        function hipblasCrotgBatched(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasCrotgBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotgBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasCrotgBatched
    end interface

    interface
        function hipblasZrotgBatched(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasZrotgBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotgBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int), value :: batch_count
        end function hipblasZrotgBatched
    end interface

    ! rotgBatched_64
    interface
        function hipblasSrotgBatched_64(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasSrotgBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotgBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotgBatched_64
    end interface

    interface
        function hipblasDrotgBatched_64(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasDrotgBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotgBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotgBatched_64
    end interface

    interface
        function hipblasCrotgBatched_64(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasCrotgBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotgBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasCrotgBatched_64
    end interface

    interface
        function hipblasZrotgBatched_64(handle, a, b, c, s, batch_count) &
            bind(c, name='hipblasZrotgBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotgBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            type(c_ptr), value :: b
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: batch_count
        end function hipblasZrotgBatched_64
    end interface

    ! rotgStridedBatched
    interface
        function hipblasSrotgStridedBatched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasSrotgStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotgStridedBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int), value :: batch_count
        end function hipblasSrotgStridedBatched
    end interface

    interface
        function hipblasDrotgStridedBatched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasDrotgStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotgStridedBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int), value :: batch_count
        end function hipblasDrotgStridedBatched
    end interface

    interface
        function hipblasCrotgStridedBatched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasCrotgStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotgStridedBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int), value :: batch_count
        end function hipblasCrotgStridedBatched
    end interface

    interface
        function hipblasZrotgStridedBatched(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasZrotgStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotgStridedBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int), value :: batch_count
        end function hipblasZrotgStridedBatched
    end interface

    ! rotgStridedBatched_64
    interface
        function hipblasSrotgStridedBatched_64(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasSrotgStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotgStridedBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotgStridedBatched_64
    end interface

    interface
        function hipblasDrotgStridedBatched_64(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasDrotgStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotgStridedBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotgStridedBatched_64
    end interface

    interface
        function hipblasCrotgStridedBatched_64(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasCrotgStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCrotgStridedBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int64_t), value :: batch_count
        end function hipblasCrotgStridedBatched_64
    end interface

    interface
        function hipblasZrotgStridedBatched_64(handle, a, stride_a, b, stride_b, c, stride_c, s, stride_s, batch_count) &
            bind(c, name='hipblasZrotgStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZrotgStridedBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: a
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: c
            integer(c_int64_t), value :: stride_c
            type(c_ptr), value :: s
            integer(c_int64_t), value :: stride_s
            integer(c_int64_t), value :: batch_count
        end function hipblasZrotgStridedBatched_64
    end interface

    ! rotm
    interface
        function hipblasSrotm(handle, n, x, incx, y, incy, param) &
            bind(c, name='hipblasSrotm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotm
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: param
        end function hipblasSrotm
    end interface

    interface
        function hipblasDrotm(handle, n, x, incx, y, incy, param) &
            bind(c, name='hipblasDrotm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotm
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: param
        end function hipblasDrotm
    end interface

    ! rotm_64
    interface
        function hipblasSrotm_64(handle, n, x, incx, y, incy, param) &
            bind(c, name='hipblasSrotm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotm_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: param
        end function hipblasSrotm_64
    end interface

    interface
        function hipblasDrotm_64(handle, n, x, incx, y, incy, param) &
            bind(c, name='hipblasDrotm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotm_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: param
        end function hipblasDrotm_64
    end interface

    ! rotmBatched
    interface
        function hipblasSrotmBatched(handle, n, x, incx, y, incy, param, batch_count) &
            bind(c, name='hipblasSrotmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: param
            integer(c_int), value :: batch_count
        end function hipblasSrotmBatched
    end interface

    interface
        function hipblasDrotmBatched(handle, n, x, incx, y, incy, param, batch_count) &
            bind(c, name='hipblasDrotmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: param
            integer(c_int), value :: batch_count
        end function hipblasDrotmBatched
    end interface

    ! rotmBatched_64
    interface
        function hipblasSrotmBatched_64(handle, n, x, incx, y, incy, param, batch_count) &
            bind(c, name='hipblasSrotmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: param
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotmBatched_64
    end interface

    interface
        function hipblasDrotmBatched_64(handle, n, x, incx, y, incy, param, batch_count) &
            bind(c, name='hipblasDrotmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: param
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotmBatched_64
    end interface

    ! rotmStridedBatched
    interface
        function hipblasSrotmStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) &
            bind(c, name='hipblasSrotmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int), value :: batch_count
        end function hipblasSrotmStridedBatched
    end interface

    interface
        function hipblasDrotmStridedBatched(handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) &
            bind(c, name='hipblasDrotmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int), value :: batch_count
        end function hipblasDrotmStridedBatched
    end interface

    ! rotmStridedBatched_64
    interface
        function hipblasSrotmStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) &
            bind(c, name='hipblasSrotmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotmStridedBatched_64
    end interface

    interface
        function hipblasDrotmStridedBatched_64(handle, n, x, incx, stride_x, y, incy, stride_y, param, stride_param, batch_count) &
            bind(c, name='hipblasDrotmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotmStridedBatched_64
    end interface

    ! rotmg
    interface
        function hipblasSrotmg(handle, d1, d2, x1, y1, param) &
            bind(c, name='hipblasSrotmg')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmg
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
        end function hipblasSrotmg
    end interface

    interface
        function hipblasDrotmg(handle, d1, d2, x1, y1, param) &
            bind(c, name='hipblasDrotmg')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmg
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
        end function hipblasDrotmg
    end interface

    ! rotmg_64
    interface
        function hipblasSrotmg_64(handle, d1, d2, x1, y1, param) &
            bind(c, name='hipblasSrotmg_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmg_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
        end function hipblasSrotmg_64
    end interface

    interface
        function hipblasDrotmg_64(handle, d1, d2, x1, y1, param) &
            bind(c, name='hipblasDrotmg_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmg_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
        end function hipblasDrotmg_64
    end interface

    ! rotmgBatched
    interface
        function hipblasSrotmgBatched(handle, d1, d2, x1, y1, param, batch_count) &
            bind(c, name='hipblasSrotmgBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmgBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
            integer(c_int), value :: batch_count
        end function hipblasSrotmgBatched
    end interface

    interface
        function hipblasDrotmgBatched(handle, d1, d2, x1, y1, param, batch_count) &
            bind(c, name='hipblasDrotmgBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmgBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
            integer(c_int), value :: batch_count
        end function hipblasDrotmgBatched
    end interface

    ! rotmgBatched_64
    interface
        function hipblasSrotmgBatched_64(handle, d1, d2, x1, y1, param, batch_count) &
            bind(c, name='hipblasSrotmgBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmgBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotmgBatched_64
    end interface

    interface
        function hipblasDrotmgBatched_64(handle, d1, d2, x1, y1, param, batch_count) &
            bind(c, name='hipblasDrotmgBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmgBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            type(c_ptr), value :: d2
            type(c_ptr), value :: x1
            type(c_ptr), value :: y1
            type(c_ptr), value :: param
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotmgBatched_64
    end interface

    ! rotmgStridedBatched
    interface
        function hipblasSrotmgStridedBatched(handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, &
                                             y1, stride_y1, param, stride_param, batch_count) &
            bind(c, name='hipblasSrotmgStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmgStridedBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            integer(c_int64_t), value :: stride_d1
            type(c_ptr), value :: d2
            integer(c_int64_t), value :: stride_d2
            type(c_ptr), value :: x1
            integer(c_int64_t), value :: stride_x1
            type(c_ptr), value :: y1
            integer(c_int64_t), value :: stride_y1
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int), value :: batch_count
        end function hipblasSrotmgStridedBatched
    end interface

    interface
        function hipblasDrotmgStridedBatched(handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, &
                                             y1, stride_y1, param, stride_param, batch_count) &
            bind(c, name='hipblasDrotmgStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmgStridedBatched
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            integer(c_int64_t), value :: stride_d1
            type(c_ptr), value :: d2
            integer(c_int64_t), value :: stride_d2
            type(c_ptr), value :: x1
            integer(c_int64_t), value :: stride_x1
            type(c_ptr), value :: y1
            integer(c_int64_t), value :: stride_y1
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int), value :: batch_count
        end function hipblasDrotmgStridedBatched
    end interface

    ! rotmgStridedBatched_64
    interface
        function hipblasSrotmgStridedBatched_64(handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, &
                                             y1, stride_y1, param, stride_param, batch_count) &
            bind(c, name='hipblasSrotmgStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSrotmgStridedBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            integer(c_int64_t), value :: stride_d1
            type(c_ptr), value :: d2
            integer(c_int64_t), value :: stride_d2
            type(c_ptr), value :: x1
            integer(c_int64_t), value :: stride_x1
            type(c_ptr), value :: y1
            integer(c_int64_t), value :: stride_y1
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int64_t), value :: batch_count
        end function hipblasSrotmgStridedBatched_64
    end interface

    interface
        function hipblasDrotmgStridedBatched_64(handle, d1, stride_d1, d2, stride_d2, x1, stride_x1, &
                                             y1, stride_y1, param, stride_param, batch_count) &
            bind(c, name='hipblasDrotmgStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDrotmgStridedBatched_64
            type(c_ptr), value :: handle
            type(c_ptr), value :: d1
            integer(c_int64_t), value :: stride_d1
            type(c_ptr), value :: d2
            integer(c_int64_t), value :: stride_d2
            type(c_ptr), value :: x1
            integer(c_int64_t), value :: stride_x1
            type(c_ptr), value :: y1
            integer(c_int64_t), value :: stride_y1
            type(c_ptr), value :: param
            integer(c_int64_t), value :: stride_param
            integer(c_int64_t), value :: batch_count
        end function hipblasDrotmgStridedBatched_64
    end interface

    !--------!
    ! blas 2 !
    !--------!

    ! gbmv
    interface
        function hipblasSgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasSgbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSgbmv
    end interface

    interface
        function hipblasDgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasDgbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDgbmv
    end interface

    interface
        function hipblasCgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasCgbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasCgbmv
    end interface

    interface
        function hipblasZgbmv(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasZgbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZgbmv
    end interface

    ! gbmv_64
    interface
        function hipblasSgbmv_64(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasSgbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSgbmv_64
    end interface

    interface
        function hipblasDgbmv_64(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasDgbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDgbmv_64
    end interface

    interface
        function hipblasCgbmv_64(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasCgbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasCgbmv_64
    end interface

    interface
        function hipblasZgbmv_64(handle, trans, m, n, kl, ku, alpha, A, lda, x, incx, beta, y, incy) &
            bind(c, name='hipblasZgbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZgbmv_64
    end interface

    ! gbmvBatched
    interface
        function hipblasSgbmvBatched(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSgbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSgbmvBatched
    end interface

    interface
        function hipblasDgbmvBatched(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDgbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDgbmvBatched
    end interface

    interface
        function hipblasCgbmvBatched(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasCgbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasCgbmvBatched
    end interface

    interface
        function hipblasZgbmvBatched(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZgbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZgbmvBatched
    end interface

    ! gbmvBatched_64
    interface
        function hipblasSgbmvBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSgbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSgbmvBatched_64
    end interface

    interface
        function hipblasDgbmvBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDgbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDgbmvBatched_64
    end interface

    interface
        function hipblasCgbmvBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasCgbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasCgbmvBatched_64
    end interface

    interface
        function hipblasZgbmvBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZgbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZgbmvBatched_64
    end interface

    ! gbmvStridedBatched
    interface
        function hipblasSgbmvStridedBatched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSgbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSgbmvStridedBatched
    end interface

    interface
        function hipblasDgbmvStridedBatched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDgbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDgbmvStridedBatched
    end interface

    interface
        function hipblasCgbmvStridedBatched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCgbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasCgbmvStridedBatched
    end interface

    interface
        function hipblasZgbmvStridedBatched(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZgbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: kl
            integer(c_int), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZgbmvStridedBatched
    end interface

    ! gbmvStridedBatched_64
    interface
        function hipblasSgbmvStridedBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSgbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSgbmvStridedBatched_64
    end interface

    interface
        function hipblasDgbmvStridedBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDgbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDgbmvStridedBatched_64
    end interface

    interface
        function hipblasCgbmvStridedBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCgbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasCgbmvStridedBatched_64
    end interface

    interface
        function hipblasZgbmvStridedBatched_64(handle, trans, m, n, kl, ku, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZgbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: kl
            integer(c_int64_t), value :: ku
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZgbmvStridedBatched_64
    end interface

    ! gemv
    interface
        function hipblasSgemv(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSgemv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSgemv
    end interface

    interface
        function hipblasDgemv(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDgemv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDgemv
    end interface

    interface
        function hipblasCgemv(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasCgemv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasCgemv
    end interface

    interface
        function hipblasZgemv(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZgemv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZgemv
    end interface

    ! gemv_64
    interface
        function hipblasSgemv_64(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSgemv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSgemv_64
    end interface

    interface
        function hipblasDgemv_64(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDgemv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDgemv_64
    end interface

    interface
        function hipblasCgemv_64(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasCgemv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasCgemv_64
    end interface

    interface
        function hipblasZgemv_64(handle, trans, m, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZgemv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZgemv_64
    end interface

    ! gemvBatched
    interface
        function hipblasSgemvBatched(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSgemvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSgemvBatched
    end interface

    interface
        function hipblasDgemvBatched(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDgemvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDgemvBatched
    end interface

    interface
        function hipblasCgemvBatched(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasCgemvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasCgemvBatched
    end interface

    interface
        function hipblasZgemvBatched(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZgemvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZgemvBatched
    end interface

    ! gemvBatched_64
    interface
        function hipblasSgemvBatched_64(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSgemvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSgemvBatched_64
    end interface

    interface
        function hipblasDgemvBatched_64(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDgemvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDgemvBatched_64
    end interface

    interface
        function hipblasCgemvBatched_64(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasCgemvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasCgemvBatched_64
    end interface

    interface
        function hipblasZgemvBatched_64(handle, trans, m, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZgemvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZgemvBatched_64
    end interface

    ! gemvStridedBatched
    interface
        function hipblasSgemvStridedBatched(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSgemvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSgemvStridedBatched
    end interface

    interface
        function hipblasDgemvStridedBatched(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDgemvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDgemvStridedBatched
    end interface

    interface
        function hipblasCgemvStridedBatched(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCgemvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasCgemvStridedBatched
    end interface

    interface
        function hipblasZgemvStridedBatched(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZgemvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZgemvStridedBatched
    end interface

    ! gemvStridedBatched_64
    interface
        function hipblasSgemvStridedBatched_64(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSgemvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSgemvStridedBatched_64
    end interface

    interface
        function hipblasDgemvStridedBatched_64(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDgemvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDgemvStridedBatched_64
    end interface

    interface
        function hipblasCgemvStridedBatched_64(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCgemvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasCgemvStridedBatched_64
    end interface

    interface
        function hipblasZgemvStridedBatched_64(handle, trans, m, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZgemvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZgemvStridedBatched_64
    end interface

    ! hbmv
    interface
        function hipblasChbmv(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasChbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasChbmv
    end interface

    interface
        function hipblasZhbmv(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZhbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZhbmv
    end interface

    ! hbmvBatched
    interface
        function hipblasChbmvBatched(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasChbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasChbmvBatched
    end interface

    interface
        function hipblasZhbmvBatched(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZhbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZhbmvBatched
    end interface

    ! hbmvStridedBatched
    interface
        function hipblasChbmvStridedBatched(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasChbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasChbmvStridedBatched
    end interface

    interface
        function hipblasZhbmvStridedBatched(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZhbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZhbmvStridedBatched
    end interface

    ! hbmv_64
    interface
        function hipblasChbmv_64(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasChbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasChbmv_64
    end interface

    interface
        function hipblasZhbmv_64(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZhbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZhbmv_64
    end interface

    ! hbmvBatched_64
    interface
        function hipblasChbmvBatched_64(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasChbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasChbmvBatched_64
    end interface

    interface
        function hipblasZhbmvBatched_64(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZhbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZhbmvBatched_64
    end interface

    ! hbmvStridedBatched_64
    interface
        function hipblasChbmvStridedBatched_64(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasChbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasChbmvStridedBatched_64
    end interface

    interface
        function hipblasZhbmvStridedBatched_64(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZhbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZhbmvStridedBatched_64
    end interface

    ! hemv
    interface
        function hipblasChemv(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasChemv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasChemv
    end interface

    interface
        function hipblasZhemv(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZhemv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZhemv
    end interface

    ! hemvBatched
    interface
        function hipblasChemvBatched(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasChemvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasChemvBatched
    end interface

    interface
        function hipblasZhemvBatched(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZhemvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZhemvBatched
    end interface

    ! hemvStridedBatched
    interface
        function hipblasChemvStridedBatched(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasChemvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasChemvStridedBatched
    end interface

    interface
        function hipblasZhemvStridedBatched(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZhemvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZhemvStridedBatched
    end interface

    ! hemv_64
    interface
        function hipblasChemv_64(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasChemv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasChemv_64
    end interface

    interface
        function hipblasZhemv_64(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZhemv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZhemv_64
    end interface

    ! hemvBatched
    interface
        function hipblasChemvBatched_64(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasChemvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasChemvBatched_64
    end interface

    interface
        function hipblasZhemvBatched_64(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZhemvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZhemvBatched_64
    end interface

    ! hemvStridedBatched_64
    interface
        function hipblasChemvStridedBatched_64(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasChemvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasChemvStridedBatched_64
    end interface

    interface
        function hipblasZhemvStridedBatched_64(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZhemvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZhemvStridedBatched_64
    end interface

    ! her
    interface
        function hipblasCher(handle, uplo, n, alpha, &
                             x, incx, A, lda) &
            bind(c, name='hipblasCher')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasCher
    end interface

    interface
        function hipblasZher(handle, uplo, n, alpha, &
                             x, incx, A, lda) &
            bind(c, name='hipblasZher')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasZher
    end interface

    ! her_64
    interface
        function hipblasCher_64(handle, uplo, n, alpha, &
                             x, incx, A, lda) &
            bind(c, name='hipblasCher_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasCher_64
    end interface

    interface
        function hipblasZher_64(handle, uplo, n, alpha, &
                             x, incx, A, lda) &
            bind(c, name='hipblasZher_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasZher_64
    end interface

    ! herBatched
    interface
        function hipblasCherBatched(handle, uplo, n, alpha, &
                                    x, incx, A, lda, batch_count) &
            bind(c, name='hipblasCherBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasCherBatched
    end interface

    interface
        function hipblasZherBatched(handle, uplo, n, alpha, &
                                    x, incx, A, lda, batch_count) &
            bind(c, name='hipblasZherBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasZherBatched
    end interface

    ! herBatched_64
    interface
        function hipblasCherBatched_64(handle, uplo, n, alpha, &
                                    x, incx, A, lda, batch_count) &
            bind(c, name='hipblasCherBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasCherBatched_64
    end interface

    interface
        function hipblasZherBatched_64(handle, uplo, n, alpha, &
                                    x, incx, A, lda, batch_count) &
            bind(c, name='hipblasZherBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasZherBatched_64
    end interface

    ! herStridedBatched
    interface
        function hipblasCherStridedBatched(handle, uplo, n, alpha, &
                                           x, incx, stride_x, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCherStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasCherStridedBatched
    end interface

    interface
        function hipblasZherStridedBatched(handle, uplo, n, alpha, &
                                           x, incx, stride_x, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZherStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasZherStridedBatched
    end interface

    ! herStridedBatched_64
    interface
        function hipblasCherStridedBatched_64(handle, uplo, n, alpha, &
                                           x, incx, stride_x, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCherStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasCherStridedBatched_64
    end interface

    interface
        function hipblasZherStridedBatched_64(handle, uplo, n, alpha, &
                                           x, incx, stride_x, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZherStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasZherStridedBatched_64
    end interface

    ! her2
    interface
        function hipblasCher2(handle, uplo, n, alpha, &
                              x, incx, y, incy, A, lda) &
            bind(c, name='hipblasCher2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasCher2
    end interface

    interface
        function hipblasZher2(handle, uplo, n, alpha, &
                              x, incx, y, incy, A, lda) &
            bind(c, name='hipblasZher2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasZher2
    end interface

    ! her2_64
    interface
        function hipblasCher2_64(handle, uplo, n, alpha, &
                              x, incx, y, incy, A, lda) &
            bind(c, name='hipblasCher2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasCher2_64
    end interface

    interface
        function hipblasZher2_64(handle, uplo, n, alpha, &
                              x, incx, y, incy, A, lda) &
            bind(c, name='hipblasZher2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasZher2_64
    end interface

    ! her2Batched
    interface
        function hipblasCher2Batched(handle, uplo, n, alpha, &
                                     x, incx, y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCher2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasCher2Batched
    end interface

    interface
        function hipblasZher2Batched(handle, uplo, n, alpha, &
                                     x, incx, y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZher2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasZher2Batched
    end interface

    ! her2Batched_64
    interface
        function hipblasCher2Batched_64(handle, uplo, n, alpha, &
                                     x, incx, y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCher2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasCher2Batched_64
    end interface

    interface
        function hipblasZher2Batched_64(handle, uplo, n, alpha, &
                                     x, incx, y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZher2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasZher2Batched_64
    end interface

    ! her2StridedBatched
    interface
        function hipblasCher2StridedBatched(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCher2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasCher2StridedBatched
    end interface

    interface
        function hipblasZher2StridedBatched(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZher2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasZher2StridedBatched
    end interface

    ! her2StridedBatched_64
    interface
        function hipblasCher2StridedBatched_64(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCher2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasCher2StridedBatched_64
    end interface

    interface
        function hipblasZher2StridedBatched_64(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZher2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasZher2StridedBatched_64
    end interface

    ! hpmv
    interface
        function hipblasChpmv(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasChpmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasChpmv
    end interface

    interface
        function hipblasZhpmv(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZhpmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZhpmv
    end interface

    ! hpmvBatched
    interface
        function hipblasChpmvBatched(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasChpmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasChpmvBatched
    end interface

    interface
        function hipblasZhpmvBatched(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZhpmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZhpmvBatched
    end interface

    ! hpmvStridedBatched
    interface
        function hipblasChpmvStridedBatched(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasChpmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasChpmvStridedBatched
    end interface

    interface
        function hipblasZhpmvStridedBatched(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZhpmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZhpmvStridedBatched
    end interface

    ! hpmv_64
    interface
        function hipblasChpmv_64(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasChpmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasChpmv_64
    end interface

    interface
        function hipblasZhpmv_64(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZhpmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZhpmv_64
    end interface

    ! hpmvBatched_64
    interface
        function hipblasChpmvBatched_64(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasChpmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasChpmvBatched_64
    end interface

    interface
        function hipblasZhpmvBatched_64(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZhpmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZhpmvBatched_64
    end interface

    ! hpmvStridedBatched_64
    interface
        function hipblasChpmvStridedBatched_64(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasChpmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasChpmvStridedBatched_64
    end interface

    interface
        function hipblasZhpmvStridedBatched_64(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZhpmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZhpmvStridedBatched_64
    end interface

    ! hpr
    interface
        function hipblasChpr(handle, uplo, n, alpha, &
                             x, incx, AP) &
            bind(c, name='hipblasChpr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
        end function hipblasChpr
    end interface

    interface
        function hipblasZhpr(handle, uplo, n, alpha, &
                             x, incx, AP) &
            bind(c, name='hipblasZhpr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
        end function hipblasZhpr
    end interface

    ! hprBatched
    interface
        function hipblasChprBatched(handle, uplo, n, alpha, &
                                    x, incx, AP, batch_count) &
            bind(c, name='hipblasChprBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChprBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasChprBatched
    end interface

    interface
        function hipblasZhprBatched(handle, uplo, n, alpha, &
                                    x, incx, AP, batch_count) &
            bind(c, name='hipblasZhprBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhprBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasZhprBatched
    end interface

    ! hprStridedBatched
    interface
        function hipblasChprStridedBatched(handle, uplo, n, alpha, &
                                           x, incx, stride_x, AP, stride_AP, batch_count) &
            bind(c, name='hipblasChprStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChprStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasChprStridedBatched
    end interface

    interface
        function hipblasZhprStridedBatched(handle, uplo, n, alpha, &
                                           x, incx, stride_x, AP, stride_AP, batch_count) &
            bind(c, name='hipblasZhprStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhprStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasZhprStridedBatched
    end interface

    ! hpr_64
    interface
        function hipblasChpr_64(handle, uplo, n, alpha, &
                             x, incx, AP) &
            bind(c, name='hipblasChpr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
        end function hipblasChpr_64
    end interface

    interface
        function hipblasZhpr_64(handle, uplo, n, alpha, &
                             x, incx, AP) &
            bind(c, name='hipblasZhpr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
        end function hipblasZhpr_64
    end interface

    ! hprBatched_64
    interface
        function hipblasChprBatched_64(handle, uplo, n, alpha, &
                                    x, incx, AP, batch_count) &
            bind(c, name='hipblasChprBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChprBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasChprBatched_64
    end interface

    interface
        function hipblasZhprBatched_64(handle, uplo, n, alpha, &
                                    x, incx, AP, batch_count) &
            bind(c, name='hipblasZhprBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhprBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasZhprBatched_64
    end interface

    ! hprStridedBatched_64
    interface
        function hipblasChprStridedBatched_64(handle, uplo, n, alpha, &
                                           x, incx, stride_x, AP, stride_AP, batch_count) &
            bind(c, name='hipblasChprStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChprStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasChprStridedBatched_64
    end interface

    interface
        function hipblasZhprStridedBatched_64(handle, uplo, n, alpha, &
                                           x, incx, stride_x, AP, stride_AP, batch_count) &
            bind(c, name='hipblasZhprStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhprStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasZhprStridedBatched_64
    end interface

    ! hpr2
    interface
        function hipblasChpr2(handle, uplo, n, alpha, &
                              x, incx, y, incy, AP) &
            bind(c, name='hipblasChpr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
        end function hipblasChpr2
    end interface

    interface
        function hipblasZhpr2(handle, uplo, n, alpha, &
                              x, incx, y, incy, AP) &
            bind(c, name='hipblasZhpr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
        end function hipblasZhpr2
    end interface

    ! hpr2Batched
    interface
        function hipblasChpr2Batched(handle, uplo, n, alpha, &
                                     x, incx, y, incy, AP, batch_count) &
            bind(c, name='hipblasChpr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasChpr2Batched
    end interface

    interface
        function hipblasZhpr2Batched(handle, uplo, n, alpha, &
                                     x, incx, y, incy, AP, batch_count) &
            bind(c, name='hipblasZhpr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasZhpr2Batched
    end interface

    ! hpr2StridedBatched
    interface
        function hipblasChpr2StridedBatched(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasChpr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasChpr2StridedBatched
    end interface

    interface
        function hipblasZhpr2StridedBatched(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasZhpr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasZhpr2StridedBatched
    end interface

    ! hpr2_64
    interface
        function hipblasChpr2_64(handle, uplo, n, alpha, &
                              x, incx, y, incy, AP) &
            bind(c, name='hipblasChpr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
        end function hipblasChpr2_64
    end interface

    interface
        function hipblasZhpr2_64(handle, uplo, n, alpha, &
                              x, incx, y, incy, AP) &
            bind(c, name='hipblasZhpr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
        end function hipblasZhpr2_64
    end interface

    ! hpr2Batched_64
    interface
        function hipblasChpr2Batched_64(handle, uplo, n, alpha, &
                                     x, incx, y, incy, AP, batch_count) &
            bind(c, name='hipblasChpr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasChpr2Batched_64
    end interface

    interface
        function hipblasZhpr2Batched_64(handle, uplo, n, alpha, &
                                     x, incx, y, incy, AP, batch_count) &
            bind(c, name='hipblasZhpr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasZhpr2Batched_64
    end interface

    ! hpr2StridedBatched_64
    interface
        function hipblasChpr2StridedBatched_64(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasChpr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChpr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasChpr2StridedBatched_64
    end interface

    interface
        function hipblasZhpr2StridedBatched_64(handle, uplo, n, alpha, &
                                            x, incx, stride_x, y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasZhpr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhpr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasZhpr2StridedBatched_64
    end interface

    ! trmv
    interface
        function hipblasStrmv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStrmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasStrmv
    end interface

    interface
        function hipblasDtrmv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtrmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDtrmv
    end interface

    interface
        function hipblasCtrmv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtrmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCtrmv
    end interface

    interface
        function hipblasZtrmv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtrmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZtrmv
    end interface

    ! trmv_64
    interface
        function hipblasStrmv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStrmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasStrmv_64
    end interface

    interface
        function hipblasDtrmv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtrmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDtrmv_64
    end interface

    interface
        function hipblasCtrmv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtrmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCtrmv_64
    end interface

    interface
        function hipblasZtrmv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtrmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZtrmv_64
    end interface

    ! trmvBatched
    interface
        function hipblasStrmvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStrmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasStrmvBatched
    end interface

    interface
        function hipblasDtrmvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtrmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDtrmvBatched
    end interface

    interface
        function hipblasCtrmvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtrmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCtrmvBatched
    end interface

    interface
        function hipblasZtrmvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtrmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZtrmvBatched
    end interface

    ! trmvBatched_64
    interface
        function hipblasStrmvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStrmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasStrmvBatched_64
    end interface

    interface
        function hipblasDtrmvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtrmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrmvBatched_64
    end interface

    interface
        function hipblasCtrmvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtrmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrmvBatched_64
    end interface

    interface
        function hipblasZtrmvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtrmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrmvBatched_64
    end interface

    ! trmvStridedBatched
    interface
        function hipblasStrmvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStrmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasStrmvStridedBatched
    end interface

    interface
        function hipblasDtrmvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtrmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDtrmvStridedBatched
    end interface

    interface
        function hipblasCtrmvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtrmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCtrmvStridedBatched
    end interface

    interface
        function hipblasZtrmvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtrmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZtrmvStridedBatched
    end interface

    ! trmvStridedBatched_64
    interface
        function hipblasStrmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStrmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasStrmvStridedBatched_64
    end interface

    interface
        function hipblasDtrmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtrmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrmvStridedBatched_64
    end interface

    interface
        function hipblasCtrmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtrmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrmvStridedBatched_64
    end interface

    interface
        function hipblasZtrmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtrmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrmvStridedBatched_64
    end interface

    ! tpmv
    interface
        function hipblasStpmv(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasStpmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasStpmv
    end interface

    interface
        function hipblasDtpmv(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasDtpmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDtpmv
    end interface

    interface
        function hipblasCtpmv(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasCtpmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCtpmv
    end interface

    interface
        function hipblasZtpmv(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasZtpmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZtpmv
    end interface

    ! tpmv_64
    interface
        function hipblasStpmv_64(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasStpmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasStpmv_64
    end interface

    interface
        function hipblasDtpmv_64(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasDtpmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDtpmv_64
    end interface

    interface
        function hipblasCtpmv_64(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasCtpmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCtpmv_64
    end interface

    interface
        function hipblasZtpmv_64(handle, uplo, transA, diag, m, &
                              AP, x, incx) &
            bind(c, name='hipblasZtpmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZtpmv_64
    end interface

    ! tpmvBatched
    interface
        function hipblasStpmvBatched(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasStpmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasStpmvBatched
    end interface

    interface
        function hipblasDtpmvBatched(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasDtpmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDtpmvBatched
    end interface

    interface
        function hipblasCtpmvBatched(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasCtpmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCtpmvBatched
    end interface

    interface
        function hipblasZtpmvBatched(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasZtpmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZtpmvBatched
    end interface

    ! tpmvBatched_64
    interface
        function hipblasStpmvBatched_64(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasStpmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasStpmvBatched_64
    end interface

    interface
        function hipblasDtpmvBatched_64(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasDtpmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDtpmvBatched_64
    end interface

    interface
        function hipblasCtpmvBatched_64(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasCtpmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCtpmvBatched_64
    end interface

    interface
        function hipblasZtpmvBatched_64(handle, uplo, transA, diag, m, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasZtpmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZtpmvBatched_64
    end interface

    ! tpmvStridedBatched
    interface
        function hipblasStpmvStridedBatched(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStpmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasStpmvStridedBatched
    end interface

    interface
        function hipblasDtpmvStridedBatched(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtpmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDtpmvStridedBatched
    end interface

    interface
        function hipblasCtpmvStridedBatched(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtpmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCtpmvStridedBatched
    end interface

    interface
        function hipblasZtpmvStridedBatched(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtpmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZtpmvStridedBatched
    end interface

    ! tpmvStridedBatched_64
    interface
        function hipblasStpmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStpmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasStpmvStridedBatched_64
    end interface

    interface
        function hipblasDtpmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtpmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDtpmvStridedBatched_64
    end interface

    interface
        function hipblasCtpmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtpmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCtpmvStridedBatched_64
    end interface

    interface
        function hipblasZtpmvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtpmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZtpmvStridedBatched_64
    end interface

    ! tbmv
    interface
        function hipblasStbmv(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasStbmv
    end interface

    interface
        function hipblasDtbmv(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDtbmv
    end interface

    interface
        function hipblasCtbmv(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCtbmv
    end interface

    interface
        function hipblasZtbmv(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZtbmv
    end interface

    ! tbmv_64
    interface
        function hipblasStbmv_64(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasStbmv_64
    end interface

    interface
        function hipblasDtbmv_64(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDtbmv_64
    end interface

    interface
        function hipblasCtbmv_64(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCtbmv_64
    end interface

    interface
        function hipblasZtbmv_64(handle, uplo, transA, diag, m, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZtbmv_64
    end interface

    ! tbmvBatched
    interface
        function hipblasStbmvBatched(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasStbmvBatched
    end interface

    interface
        function hipblasDtbmvBatched(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDtbmvBatched
    end interface

    interface
        function hipblasCtbmvBatched(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCtbmvBatched
    end interface

    interface
        function hipblasZtbmvBatched(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZtbmvBatched
    end interface

    ! tbmvBatched_64
    interface
        function hipblasStbmvBatched_64(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasStbmvBatched_64
    end interface

    interface
        function hipblasDtbmvBatched_64(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDtbmvBatched_64
    end interface

    interface
        function hipblasCtbmvBatched_64(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCtbmvBatched_64
    end interface

    interface
        function hipblasZtbmvBatched_64(handle, uplo, transA, diag, m, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZtbmvBatched_64
    end interface

    ! tbmvStridedBatched
    interface
        function hipblasStbmvStridedBatched(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasStbmvStridedBatched
    end interface

    interface
        function hipblasDtbmvStridedBatched(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDtbmvStridedBatched
    end interface

    interface
        function hipblasCtbmvStridedBatched(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCtbmvStridedBatched
    end interface

    interface
        function hipblasZtbmvStridedBatched(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZtbmvStridedBatched
    end interface

    ! tbmvStridedBatched_64
    interface
        function hipblasStbmvStridedBatched_64(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasStbmvStridedBatched_64
    end interface

    interface
        function hipblasDtbmvStridedBatched_64(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDtbmvStridedBatched_64
    end interface

    interface
        function hipblasCtbmvStridedBatched_64(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCtbmvStridedBatched_64
    end interface

    interface
        function hipblasZtbmvStridedBatched_64(handle, uplo, transA, diag, m, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZtbmvStridedBatched_64
    end interface

    ! tbsv
    interface
        function hipblasStbsv(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStbsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasStbsv
    end interface

    interface
        function hipblasDtbsv(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtbsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDtbsv
    end interface

    interface
        function hipblasCtbsv(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtbsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCtbsv
    end interface

    interface
        function hipblasZtbsv(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtbsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZtbsv
    end interface

    ! tbsv_64
    interface
        function hipblasStbsv_64(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStbsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasStbsv_64
    end interface

    interface
        function hipblasDtbsv_64(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtbsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDtbsv_64
    end interface

    interface
        function hipblasCtbsv_64(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtbsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCtbsv_64
    end interface

    interface
        function hipblasZtbsv_64(handle, uplo, transA, diag, n, k, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtbsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZtbsv_64
    end interface

    ! tbsvBatched
    interface
        function hipblasStbsvBatched(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStbsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasStbsvBatched
    end interface

    interface
        function hipblasDtbsvBatched(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtbsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDtbsvBatched
    end interface

    interface
        function hipblasCtbsvBatched(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtbsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCtbsvBatched
    end interface

    interface
        function hipblasZtbsvBatched(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtbsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZtbsvBatched
    end interface

    ! tbsvBatched_64
    interface
        function hipblasStbsvBatched_64(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStbsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasStbsvBatched_64
    end interface

    interface
        function hipblasDtbsvBatched_64(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtbsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDtbsvBatched_64
    end interface

    interface
        function hipblasCtbsvBatched_64(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtbsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCtbsvBatched_64
    end interface

    interface
        function hipblasZtbsvBatched_64(handle, uplo, transA, diag, n, k, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtbsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZtbsvBatched_64
    end interface

    ! tbsvStridedBatched
    interface
        function hipblasStbsvStridedBatched(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStbsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasStbsvStridedBatched
    end interface

    interface
        function hipblasDtbsvStridedBatched(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtbsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDtbsvStridedBatched
    end interface

    interface
        function hipblasCtbsvStridedBatched(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtbsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCtbsvStridedBatched
    end interface

    interface
        function hipblasZtbsvStridedBatched(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtbsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZtbsvStridedBatched
    end interface

    ! tbsvStridedBatched_64
    interface
        function hipblasStbsvStridedBatched_64(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStbsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStbsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasStbsvStridedBatched_64
    end interface

    interface
        function hipblasDtbsvStridedBatched_64(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtbsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtbsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDtbsvStridedBatched_64
    end interface

    interface
        function hipblasCtbsvStridedBatched_64(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtbsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtbsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCtbsvStridedBatched_64
    end interface

    interface
        function hipblasZtbsvStridedBatched_64(handle, uplo, transA, diag, n, k, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtbsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtbsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZtbsvStridedBatched_64
    end interface

    ! trsv
    interface
        function hipblasStrsv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStrsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasStrsv
    end interface

    interface
        function hipblasDtrsv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtrsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDtrsv
    end interface

    interface
        function hipblasCtrsv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtrsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCtrsv
    end interface

    interface
        function hipblasZtrsv(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtrsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZtrsv
    end interface

    ! trsv_64
    interface
        function hipblasStrsv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasStrsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasStrsv_64
    end interface

    interface
        function hipblasDtrsv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasDtrsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDtrsv_64
    end interface

    interface
        function hipblasCtrsv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasCtrsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCtrsv_64
    end interface

    interface
        function hipblasZtrsv_64(handle, uplo, transA, diag, m, &
                              A, lda, x, incx) &
            bind(c, name='hipblasZtrsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZtrsv_64
    end interface

    ! trsvBatched
    interface
        function hipblasStrsvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStrsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasStrsvBatched
    end interface

    interface
        function hipblasDtrsvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtrsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDtrsvBatched
    end interface

    interface
        function hipblasCtrsvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtrsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCtrsvBatched
    end interface

    interface
        function hipblasZtrsvBatched(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtrsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZtrsvBatched
    end interface

    ! trsvBatched_64
    interface
        function hipblasStrsvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasStrsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasStrsvBatched_64
    end interface

    interface
        function hipblasDtrsvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasDtrsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrsvBatched_64
    end interface

    interface
        function hipblasCtrsvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasCtrsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrsvBatched_64
    end interface

    interface
        function hipblasZtrsvBatched_64(handle, uplo, transA, diag, m, &
                                     A, lda, x, incx, batch_count) &
            bind(c, name='hipblasZtrsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrsvBatched_64
    end interface

    ! trsvStridedBatched
    interface
        function hipblasStrsvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStrsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasStrsvStridedBatched
    end interface

    interface
        function hipblasDtrsvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtrsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDtrsvStridedBatched
    end interface

    interface
        function hipblasCtrsvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtrsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCtrsvStridedBatched
    end interface

    interface
        function hipblasZtrsvStridedBatched(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtrsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: m
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZtrsvStridedBatched
    end interface

    ! trsvStridedBatched_64
    interface
        function hipblasStrsvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStrsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasStrsvStridedBatched_64
    end interface

    interface
        function hipblasDtrsvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtrsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrsvStridedBatched_64
    end interface

    interface
        function hipblasCtrsvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtrsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrsvStridedBatched_64
    end interface

    interface
        function hipblasZtrsvStridedBatched_64(handle, uplo, transA, diag, m, &
                                            A, lda, stride_A, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtrsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrsvStridedBatched_64
    end interface

    ! tpsv
    interface
        function hipblasStpsv(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasStpsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasStpsv
    end interface

    interface
        function hipblasDtpsv(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasDtpsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasDtpsv
    end interface

    interface
        function hipblasCtpsv(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasCtpsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasCtpsv
    end interface

    interface
        function hipblasZtpsv(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasZtpsv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpsv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
        end function hipblasZtpsv
    end interface

    ! tpsv_64
    interface
        function hipblasStpsv_64(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasStpsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasStpsv_64
    end interface

    interface
        function hipblasDtpsv_64(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasDtpsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasDtpsv_64
    end interface

    interface
        function hipblasCtpsv_64(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasCtpsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasCtpsv_64
    end interface

    interface
        function hipblasZtpsv_64(handle, uplo, transA, diag, n, &
                              AP, x, incx) &
            bind(c, name='hipblasZtpsv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpsv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
        end function hipblasZtpsv_64
    end interface

    ! tpsvBatched
    interface
        function hipblasStpsvBatched(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasStpsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasStpsvBatched
    end interface

    interface
        function hipblasDtpsvBatched(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasDtpsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasDtpsvBatched
    end interface

    interface
        function hipblasCtpsvBatched(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasCtpsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasCtpsvBatched
    end interface

    interface
        function hipblasZtpsvBatched(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasZtpsvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpsvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
        end function hipblasZtpsvBatched
    end interface

    ! tpsvBatched_64
    interface
        function hipblasStpsvBatched_64(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasStpsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasStpsvBatched_64
    end interface

    interface
        function hipblasDtpsvBatched_64(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasDtpsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasDtpsvBatched_64
    end interface

    interface
        function hipblasCtpsvBatched_64(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasCtpsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasCtpsvBatched_64
    end interface

    interface
        function hipblasZtpsvBatched_64(handle, uplo, transA, diag, n, &
                                     AP, x, incx, batch_count) &
            bind(c, name='hipblasZtpsvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpsvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
        end function hipblasZtpsvBatched_64
    end interface

    ! tpsvStridedBatched
    interface
        function hipblasStpsvStridedBatched(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStpsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasStpsvStridedBatched
    end interface

    interface
        function hipblasDtpsvStridedBatched(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtpsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasDtpsvStridedBatched
    end interface

    interface
        function hipblasCtpsvStridedBatched(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtpsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasCtpsvStridedBatched
    end interface

    interface
        function hipblasZtpsvStridedBatched(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtpsvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpsvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int), value :: batch_count
        end function hipblasZtpsvStridedBatched
    end interface

    ! tpsvStridedBatched_64
    interface
        function hipblasStpsvStridedBatched_64(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasStpsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStpsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasStpsvStridedBatched_64
    end interface

    interface
        function hipblasDtpsvStridedBatched_64(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasDtpsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtpsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasDtpsvStridedBatched_64
    end interface

    interface
        function hipblasCtpsvStridedBatched_64(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasCtpsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtpsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasCtpsvStridedBatched_64
    end interface

    interface
        function hipblasZtpsvStridedBatched_64(handle, uplo, transA, diag, n, &
                                            AP, stride_AP, x, incx, stride_x, batch_count) &
            bind(c, name='hipblasZtpsvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtpsvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_NON_UNIT)), value :: diag
            integer(c_int64_t), value :: n
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            integer(c_int64_t), value :: batch_count
        end function hipblasZtpsvStridedBatched_64
    end interface

    ! symv
    interface
        function hipblasSsymv(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSsymv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSsymv
    end interface

    interface
        function hipblasDsymv(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDsymv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDsymv
    end interface

    interface
        function hipblasCsymv(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasCsymv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasCsymv
    end interface

    interface
        function hipblasZsymv(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZsymv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasZsymv
    end interface

    ! symv_64
    interface
        function hipblasSsymv_64(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSsymv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSsymv_64
    end interface

    interface
        function hipblasDsymv_64(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDsymv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDsymv_64
    end interface

    interface
        function hipblasCsymv_64(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasCsymv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasCsymv_64
    end interface

    interface
        function hipblasZsymv_64(handle, uplo, n, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasZsymv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasZsymv_64
    end interface

    ! symvBatched
    interface
        function hipblasSsymvBatched(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSsymvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSsymvBatched
    end interface

    interface
        function hipblasDsymvBatched(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDsymvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDsymvBatched
    end interface

    interface
        function hipblasCsymvBatched(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasCsymvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasCsymvBatched
    end interface

    interface
        function hipblasZsymvBatched(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZsymvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasZsymvBatched
    end interface

    ! symvBatched_64
    interface
        function hipblasSsymvBatched_64(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSsymvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSsymvBatched_64
    end interface

    interface
        function hipblasDsymvBatched_64(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDsymvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDsymvBatched_64
    end interface

    interface
        function hipblasCsymvBatched_64(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasCsymvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasCsymvBatched_64
    end interface

    interface
        function hipblasZsymvBatched_64(handle, uplo, n, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasZsymvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasZsymvBatched_64
    end interface

    ! symvStridedBatched
    interface
        function hipblasSsymvStridedBatched(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSsymvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSsymvStridedBatched
    end interface

    interface
        function hipblasDsymvStridedBatched(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDsymvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDsymvStridedBatched
    end interface

    interface
        function hipblasCsymvStridedBatched(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCsymvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasCsymvStridedBatched
    end interface

    interface
        function hipblasZsymvStridedBatched(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZsymvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasZsymvStridedBatched
    end interface

    ! symvStridedBatched_64
    interface
        function hipblasSsymvStridedBatched_64(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSsymvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSsymvStridedBatched_64
    end interface

    interface
        function hipblasDsymvStridedBatched_64(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDsymvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDsymvStridedBatched_64
    end interface

    interface
        function hipblasCsymvStridedBatched_64(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasCsymvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasCsymvStridedBatched_64
    end interface

    interface
        function hipblasZsymvStridedBatched_64(handle, uplo, n, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasZsymvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasZsymvStridedBatched_64
    end interface

    ! spmv
    interface
        function hipblasSspmv(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSspmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSspmv
    end interface

    interface
        function hipblasDspmv(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDspmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDspmv
    end interface

    ! spmv_64
    interface
        function hipblasSspmv_64(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSspmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSspmv_64
    end interface

    interface
        function hipblasDspmv_64(handle, uplo, n, alpha, AP, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDspmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDspmv_64
    end interface

    ! spmvBatched
    interface
        function hipblasSspmvBatched(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSspmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSspmvBatched
    end interface

    interface
        function hipblasDspmvBatched(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDspmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDspmvBatched
    end interface

    ! spmvBatched_64
    interface
        function hipblasSspmvBatched_64(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSspmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSspmvBatched_64
    end interface

    interface
        function hipblasDspmvBatched_64(handle, uplo, n, alpha, AP, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDspmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDspmvBatched_64
    end interface

    ! spmvStridedBatched
    interface
        function hipblasSspmvStridedBatched(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSspmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSspmvStridedBatched
    end interface

    interface
        function hipblasDspmvStridedBatched(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDspmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDspmvStridedBatched
    end interface

    ! spmvStridedBatched_64
    interface
        function hipblasSspmvStridedBatched_64(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSspmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSspmvStridedBatched_64
    end interface

    interface
        function hipblasDspmvStridedBatched_64(handle, uplo, n, alpha, AP, stride_AP, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDspmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDspmvStridedBatched_64
    end interface

    ! sbmv
    interface
        function hipblasSsbmv(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSsbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasSsbmv
    end interface

    interface
        function hipblasDsbmv(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDsbmv')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsbmv
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
        end function hipblasDsbmv
    end interface

    ! sbmv_64
    interface
        function hipblasSsbmv_64(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasSsbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasSsbmv_64
    end interface

    interface
        function hipblasDsbmv_64(handle, uplo, n, k, alpha, A, lda, &
                              x, incx, beta, y, incy) &
            bind(c, name='hipblasDsbmv_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsbmv_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
        end function hipblasDsbmv_64
    end interface

    ! sbmvBatched
    interface
        function hipblasSsbmvBatched(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSsbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasSsbmvBatched
    end interface

    interface
        function hipblasDsbmvBatched(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDsbmvBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsbmvBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
        end function hipblasDsbmvBatched
    end interface

    ! sbmvBatched_64
    interface
        function hipblasSsbmvBatched_64(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasSsbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasSsbmvBatched_64
    end interface

    interface
        function hipblasDsbmvBatched_64(handle, uplo, n, k, alpha, A, lda, &
                                     x, incx, beta, y, incy, batch_count) &
            bind(c, name='hipblasDsbmvBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsbmvBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
        end function hipblasDsbmvBatched_64
    end interface

    ! sbmvStridedBatched
    interface
        function hipblasSsbmvStridedBatched(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSsbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasSsbmvStridedBatched
    end interface

    interface
        function hipblasDsbmvStridedBatched(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDsbmvStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsbmvStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int), value :: batch_count
        end function hipblasDsbmvStridedBatched
    end interface

    ! sbmvStridedBatched_64
    interface
        function hipblasSsbmvStridedBatched_64(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasSsbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasSsbmvStridedBatched_64
    end interface

    interface
        function hipblasDsbmvStridedBatched_64(handle, uplo, n, k, alpha, A, lda, stride_A, &
                                            x, incx, stride_x, beta, y, incy, stride_y, batch_count) &
            bind(c, name='hipblasDsbmvStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsbmvStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: beta
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            integer(c_int64_t), value :: batch_count
        end function hipblasDsbmvStridedBatched_64
    end interface

    ! ger
    interface
        function hipblasSger(handle, m, n, alpha, x, incx, &
                             y, incy, A, lda) &
            bind(c, name='hipblasSger')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSger
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasSger
    end interface

    interface
        function hipblasDger(handle, m, n, alpha, x, incx, &
                             y, incy, A, lda) &
            bind(c, name='hipblasDger')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDger
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasDger
    end interface

    interface
        function hipblasCgeru(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasCgeru')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeru
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasCgeru
    end interface

    interface
        function hipblasCgerc(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasCgerc')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgerc
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasCgerc
    end interface

    interface
        function hipblasZgeru(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasZgeru')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeru
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasZgeru
    end interface

    interface
        function hipblasZgerc(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasZgerc')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgerc
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasZgerc
    end interface

    ! ger_64
    interface
        function hipblasSger_64(handle, m, n, alpha, x, incx, &
                             y, incy, A, lda) &
            bind(c, name='hipblasSger_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSger_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasSger_64
    end interface

    interface
        function hipblasDger_64(handle, m, n, alpha, x, incx, &
                             y, incy, A, lda) &
            bind(c, name='hipblasDger_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDger_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasDger_64
    end interface

    interface
        function hipblasCgeru_64(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasCgeru_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeru_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasCgeru_64
    end interface

    interface
        function hipblasCgerc_64(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasCgerc_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgerc_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasCgerc_64
    end interface

    interface
        function hipblasZgeru_64(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasZgeru_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeru_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasZgeru_64
    end interface

    interface
        function hipblasZgerc_64(handle, m, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasZgerc_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgerc_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasZgerc_64
    end interface

    ! gerBatched
    interface
        function hipblasSgerBatched(handle, m, n, alpha, x, incx, &
                                    y, incy, A, lda, batch_count) &
            bind(c, name='hipblasSgerBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgerBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasSgerBatched
    end interface

    interface
        function hipblasDgerBatched(handle, m, n, alpha, x, incx, &
                                    y, incy, A, lda, batch_count) &
            bind(c, name='hipblasDgerBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgerBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasDgerBatched
    end interface

    interface
        function hipblasCgeruBatched(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCgeruBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeruBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasCgeruBatched
    end interface

    interface
        function hipblasCgercBatched(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCgercBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgercBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasCgercBatched
    end interface

    interface
        function hipblasZgeruBatched(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZgeruBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeruBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasZgeruBatched
    end interface

    interface
        function hipblasZgercBatched(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZgercBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgercBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasZgercBatched
    end interface

    ! gerBatched_64
    interface
        function hipblasSgerBatched_64(handle, m, n, alpha, x, incx, &
                                    y, incy, A, lda, batch_count) &
            bind(c, name='hipblasSgerBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgerBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasSgerBatched_64
    end interface

    interface
        function hipblasDgerBatched_64(handle, m, n, alpha, x, incx, &
                                    y, incy, A, lda, batch_count) &
            bind(c, name='hipblasDgerBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgerBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasDgerBatched_64
    end interface

    interface
        function hipblasCgeruBatched_64(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCgeruBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeruBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasCgeruBatched_64
    end interface

    interface
        function hipblasCgercBatched_64(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCgercBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgercBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasCgercBatched_64
    end interface

    interface
        function hipblasZgeruBatched_64(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZgeruBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeruBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasZgeruBatched_64
    end interface

    interface
        function hipblasZgercBatched_64(handle, m, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZgercBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgercBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasZgercBatched_64
    end interface

    ! gerStridedBatched
    interface
        function hipblasSgerStridedBatched(handle, m, n, alpha, x, incx, stride_x, &
                                           y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasSgerStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgerStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasSgerStridedBatched
    end interface

    interface
        function hipblasDgerStridedBatched(handle, m, n, alpha, x, incx, stride_x, &
                                           y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasDgerStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgerStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasDgerStridedBatched
    end interface

    interface
        function hipblasCgeruStridedBatched(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCgeruStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeruStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasCgeruStridedBatched
    end interface

    interface
        function hipblasCgercStridedBatched(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCgercStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgercStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasCgercStridedBatched
    end interface

    interface
        function hipblasZgeruStridedBatched(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZgeruStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeruStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasZgeruStridedBatched
    end interface

    interface
        function hipblasZgercStridedBatched(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZgercStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgercStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasZgercStridedBatched
    end interface

    ! gerStridedBatched_64
    interface
        function hipblasSgerStridedBatched_64(handle, m, n, alpha, x, incx, stride_x, &
                                           y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasSgerStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgerStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasSgerStridedBatched_64
    end interface

    interface
        function hipblasDgerStridedBatched_64(handle, m, n, alpha, x, incx, stride_x, &
                                           y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasDgerStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgerStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasDgerStridedBatched_64
    end interface

    interface
        function hipblasCgeruStridedBatched_64(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCgeruStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeruStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasCgeruStridedBatched_64
    end interface

    interface
        function hipblasCgercStridedBatched_64(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCgercStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgercStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasCgercStridedBatched_64
    end interface

    interface
        function hipblasZgeruStridedBatched_64(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZgeruStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeruStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasZgeruStridedBatched_64
    end interface

    interface
        function hipblasZgercStridedBatched_64(handle, m, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZgercStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgercStridedBatched_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasZgercStridedBatched_64
    end interface

    ! spr
    interface
        function hipblasSspr(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasSspr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
        end function hipblasSspr
    end interface

    interface
        function hipblasDspr(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasDspr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
        end function hipblasDspr
    end interface

    interface
        function hipblasCspr(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasCspr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCspr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
        end function hipblasCspr
    end interface

    interface
        function hipblasZspr(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasZspr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZspr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
        end function hipblasZspr
    end interface

    ! spr_64
    interface
        function hipblasSspr_64(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasSspr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
        end function hipblasSspr_64
    end interface

    interface
        function hipblasDspr_64(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasDspr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
        end function hipblasDspr_64
    end interface

    interface
        function hipblasCspr_64(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasCspr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCspr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
        end function hipblasCspr_64
    end interface

    interface
        function hipblasZspr_64(handle, uplo, n, alpha, x, incx, AP) &
            bind(c, name='hipblasZspr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZspr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
        end function hipblasZspr_64
    end interface

    ! sprBatched
    interface
        function hipblasSsprBatched(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasSsprBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsprBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasSsprBatched
    end interface

    interface
        function hipblasDsprBatched(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasDsprBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsprBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasDsprBatched
    end interface

    interface
        function hipblasCsprBatched(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasCsprBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsprBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasCsprBatched
    end interface

    interface
        function hipblasZsprBatched(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasZsprBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsprBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasZsprBatched
    end interface

    ! sprBatched_64
    interface
        function hipblasSsprBatched_64(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasSsprBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsprBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasSsprBatched_64
    end interface

    interface
        function hipblasDsprBatched_64(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasDsprBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsprBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasDsprBatched_64
    end interface

    interface
        function hipblasCsprBatched_64(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasCsprBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsprBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasCsprBatched_64
    end interface

    interface
        function hipblasZsprBatched_64(handle, uplo, n, alpha, x, incx, AP, batch_count) &
            bind(c, name='hipblasZsprBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsprBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasZsprBatched_64
    end interface

    ! sprStridedBatched
    interface
        function hipblasSsprStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasSsprStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsprStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasSsprStridedBatched
    end interface

    interface
        function hipblasDsprStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasDsprStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsprStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasDsprStridedBatched
    end interface

    interface
        function hipblasCsprStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasCsprStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsprStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasCsprStridedBatched
    end interface

    interface
        function hipblasZsprStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasZsprStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsprStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasZsprStridedBatched
    end interface

    ! sprStridedBatched_64
    interface
        function hipblasSsprStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasSsprStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsprStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasSsprStridedBatched_64
    end interface

    interface
        function hipblasDsprStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasDsprStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsprStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasDsprStridedBatched_64
    end interface

    interface
        function hipblasCsprStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasCsprStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsprStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasCsprStridedBatched_64
    end interface

    interface
        function hipblasZsprStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           AP, stride_AP, batch_count) &
            bind(c, name='hipblasZsprStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsprStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasZsprStridedBatched_64
    end interface

    ! spr2
    interface
        function hipblasSspr2(handle, uplo, n, alpha, x, incx, &
                              y, incy, AP) &
            bind(c, name='hipblasSspr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
        end function hipblasSspr2
    end interface

    interface
        function hipblasDspr2(handle, uplo, n, alpha, x, incx, &
                              y, incy, AP) &
            bind(c, name='hipblasDspr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
        end function hipblasDspr2
    end interface

    ! spr2_64
    interface
        function hipblasSspr2_64(handle, uplo, n, alpha, x, incx, &
                              y, incy, AP) &
            bind(c, name='hipblasSspr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
        end function hipblasSspr2_64
    end interface

    interface
        function hipblasDspr2_64(handle, uplo, n, alpha, x, incx, &
                              y, incy, AP) &
            bind(c, name='hipblasDspr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
        end function hipblasDspr2_64
    end interface

    ! spr2Batched
    interface
        function hipblasSspr2Batched(handle, uplo, n, alpha, x, incx, &
                                     y, incy, AP, batch_count) &
            bind(c, name='hipblasSspr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasSspr2Batched
    end interface

    interface
        function hipblasDspr2Batched(handle, uplo, n, alpha, x, incx, &
                                     y, incy, AP, batch_count) &
            bind(c, name='hipblasDspr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: AP
            integer(c_int), value :: batch_count
        end function hipblasDspr2Batched
    end interface

    ! spr2Batched_64
    interface
        function hipblasSspr2Batched_64(handle, uplo, n, alpha, x, incx, &
                                     y, incy, AP, batch_count) &
            bind(c, name='hipblasSspr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasSspr2Batched_64
    end interface

    interface
        function hipblasDspr2Batched_64(handle, uplo, n, alpha, x, incx, &
                                     y, incy, AP, batch_count) &
            bind(c, name='hipblasDspr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: batch_count
        end function hipblasDspr2Batched_64
    end interface

    ! spr2StridedBatched
    interface
        function hipblasSspr2StridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasSspr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasSspr2StridedBatched
    end interface

    interface
        function hipblasDspr2StridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasDspr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int), value :: batch_count
        end function hipblasDspr2StridedBatched
    end interface

    ! spr2StridedBatched_64
    interface
        function hipblasSspr2StridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasSspr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSspr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasSspr2StridedBatched_64
    end interface

    interface
        function hipblasDspr2StridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, AP, stride_AP, batch_count) &
            bind(c, name='hipblasDspr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDspr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: AP
            integer(c_int64_t), value :: stride_AP
            integer(c_int64_t), value :: batch_count
        end function hipblasDspr2StridedBatched_64
    end interface

    ! syr
    interface
        function hipblasSsyr(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasSsyr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasSsyr
    end interface

    interface
        function hipblasDsyr(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasDsyr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasDsyr
    end interface

    interface
        function hipblasCsyr(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasCsyr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasCsyr
    end interface

    interface
        function hipblasZsyr(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasZsyr')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasZsyr
    end interface

    ! syr_64
    interface
        function hipblasSsyr_64(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasSsyr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasSsyr_64
    end interface

    interface
        function hipblasDsyr_64(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasDsyr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasDsyr_64
    end interface

    interface
        function hipblasCsyr_64(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasCsyr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasCsyr_64
    end interface

    interface
        function hipblasZsyr_64(handle, uplo, n, alpha, x, incx, A, lda) &
            bind(c, name='hipblasZsyr_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasZsyr_64
    end interface

    ! syrBatched
    interface
        function hipblasSsyrBatched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasSsyrBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasSsyrBatched
    end interface

    interface
        function hipblasDsyrBatched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasDsyrBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasDsyrBatched
    end interface

    interface
        function hipblasCsyrBatched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasCsyrBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasCsyrBatched
    end interface

    interface
        function hipblasZsyrBatched(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasZsyrBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasZsyrBatched
    end interface

    ! syrBatched_64
    interface
        function hipblasSsyrBatched_64(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasSsyrBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyrBatched_64
    end interface

    interface
        function hipblasDsyrBatched_64(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasDsyrBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyrBatched_64
    end interface

    interface
        function hipblasCsyrBatched_64(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasCsyrBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyrBatched_64
    end interface

    interface
        function hipblasZsyrBatched_64(handle, uplo, n, alpha, x, incx, A, lda, batch_count) &
            bind(c, name='hipblasZsyrBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyrBatched_64
    end interface

    ! syrStridedBatched
    interface
        function hipblasSsyrStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasSsyrStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasSsyrStridedBatched
    end interface

    interface
        function hipblasDsyrStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasDsyrStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasDsyrStridedBatched
    end interface

    interface
        function hipblasCsyrStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCsyrStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasCsyrStridedBatched
    end interface

    interface
        function hipblasZsyrStridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZsyrStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasZsyrStridedBatched
    end interface

    ! syrStridedBatched_64
    interface
        function hipblasSsyrStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasSsyrStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyrStridedBatched_64
    end interface

    interface
        function hipblasDsyrStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasDsyrStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyrStridedBatched_64
    end interface

    interface
        function hipblasCsyrStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCsyrStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyrStridedBatched_64
    end interface

    interface
        function hipblasZsyrStridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                           A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZsyrStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyrStridedBatched_64
    end interface

    ! syr2
    interface
        function hipblasSsyr2(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasSsyr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasSsyr2
    end interface

    interface
        function hipblasDsyr2(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasDsyr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasDsyr2
    end interface

    interface
        function hipblasCsyr2(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasCsyr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasCsyr2
    end interface

    interface
        function hipblasZsyr2(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasZsyr2')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
        end function hipblasZsyr2
    end interface

    ! syr2_64
    interface
        function hipblasSsyr2_64(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasSsyr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasSsyr2_64
    end interface

    interface
        function hipblasDsyr2_64(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasDsyr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasDsyr2_64
    end interface

    interface
        function hipblasCsyr2_64(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasCsyr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasCsyr2_64
    end interface

    interface
        function hipblasZsyr2_64(handle, uplo, n, alpha, x, incx, &
                              y, incy, A, lda) &
            bind(c, name='hipblasZsyr2_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
        end function hipblasZsyr2_64
    end interface

    ! syr2Batched
    interface
        function hipblasSsyr2Batched(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasSsyr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasSsyr2Batched
    end interface

    interface
        function hipblasDsyr2Batched(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasDsyr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasDsyr2Batched
    end interface

    interface
        function hipblasCsyr2Batched(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCsyr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasCsyr2Batched
    end interface

    interface
        function hipblasZsyr2Batched(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZsyr2Batched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2Batched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: batch_count
        end function hipblasZsyr2Batched
    end interface

    ! syr2Batched_64
    interface
        function hipblasSsyr2Batched_64(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasSsyr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyr2Batched_64
    end interface

    interface
        function hipblasDsyr2Batched_64(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasDsyr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyr2Batched_64
    end interface

    interface
        function hipblasCsyr2Batched_64(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasCsyr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyr2Batched_64
    end interface

    interface
        function hipblasZsyr2Batched_64(handle, uplo, n, alpha, x, incx, &
                                     y, incy, A, lda, batch_count) &
            bind(c, name='hipblasZsyr2Batched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2Batched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyr2Batched_64
    end interface

    ! syr2StridedBatched
    interface
        function hipblasSsyr2StridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasSsyr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasSsyr2StridedBatched
    end interface

    interface
        function hipblasDsyr2StridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasDsyr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasDsyr2StridedBatched
    end interface

    interface
        function hipblasCsyr2StridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCsyr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasCsyr2StridedBatched
    end interface

    interface
        function hipblasZsyr2StridedBatched(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZsyr2StridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2StridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int), value :: batch_count
        end function hipblasZsyr2StridedBatched
    end interface

    ! syr2StridedBatched_64
    interface
        function hipblasSsyr2StridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasSsyr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyr2StridedBatched_64
    end interface

    interface
        function hipblasDsyr2StridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasDsyr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyr2StridedBatched_64
    end interface

    interface
        function hipblasCsyr2StridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasCsyr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyr2StridedBatched_64
    end interface

    interface
        function hipblasZsyr2StridedBatched_64(handle, uplo, n, alpha, x, incx, stride_x, &
                                            y, incy, stride_y, A, lda, stride_A, batch_count) &
            bind(c, name='hipblasZsyr2StridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2StridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: y
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stride_y
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyr2StridedBatched_64
    end interface

    !--------!
    ! blas 3 !
    !--------!

    ! hemm
    interface
        function hipblasChemm(handle, side, uplo, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasChemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasChemm
    end interface

    interface
        function hipblasZhemm(handle, side, uplo, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZhemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZhemm
    end interface

    ! hemm_64
    interface
        function hipblasChemm_64(handle, side, uplo, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasChemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasChemm_64
    end interface

    interface
        function hipblasZhemm_64(handle, side, uplo, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZhemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZhemm_64
    end interface

    ! hemmBatched
    interface
        function hipblasChemmBatched(handle, side, uplo, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasChemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasChemmBatched
    end interface

    interface
        function hipblasZhemmBatched(handle, side, uplo, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZhemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZhemmBatched
    end interface

    ! hemmBatched_64
    interface
        function hipblasChemmBatched_64(handle, side, uplo, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasChemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasChemmBatched_64
    end interface

    interface
        function hipblasZhemmBatched_64(handle, side, uplo, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZhemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZhemmBatched_64
    end interface

    ! hemmStridedBatched
    interface
        function hipblasChemmStridedBatched(handle, side, uplo, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasChemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasChemmStridedBatched
    end interface

    interface
        function hipblasZhemmStridedBatched(handle, side, uplo, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZhemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZhemmStridedBatched
    end interface

    ! hemmStridedBatched_64
    interface
        function hipblasChemmStridedBatched_64(handle, side, uplo, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasChemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasChemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasChemmStridedBatched_64
    end interface

    interface
        function hipblasZhemmStridedBatched_64(handle, side, uplo, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZhemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZhemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZhemmStridedBatched_64
    end interface

    ! herk
    interface
        function hipblasCherk(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasCherk')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherk
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCherk
    end interface

    interface
        function hipblasZherk(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasZherk')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherk
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZherk
    end interface

    ! herk_64
    interface
        function hipblasCherk_64(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasCherk_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherk_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCherk_64
    end interface

    interface
        function hipblasZherk_64(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasZherk_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherk_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZherk_64
    end interface

    ! herkBatched
    interface
        function hipblasCherkBatched(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCherkBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCherkBatched
    end interface

    interface
        function hipblasZherkBatched(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZherkBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZherkBatched
    end interface

    ! herkBatched_64
    interface
        function hipblasCherkBatched_64(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCherkBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCherkBatched_64
    end interface

    interface
        function hipblasZherkBatched_64(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZherkBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZherkBatched_64
    end interface

    ! herkStridedBatched
    interface
        function hipblasCherkStridedBatched(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCherkStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCherkStridedBatched
    end interface

    interface
        function hipblasZherkStridedBatched(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZherkStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZherkStridedBatched
    end interface

    ! herkStridedBatched_64
    interface
        function hipblasCherkStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCherkStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCherkStridedBatched_64
    end interface

    interface
        function hipblasZherkStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZherkStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZherkStridedBatched_64
    end interface

    ! her2k
    interface
        function hipblasCher2k(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCher2k')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2k
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCher2k
    end interface

    interface
        function hipblasZher2k(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZher2k')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2k
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZher2k
    end interface

    ! her2k_64
    interface
        function hipblasCher2k_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCher2k_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2k_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCher2k_64
    end interface

    interface
        function hipblasZher2k_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZher2k_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2k_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZher2k_64
    end interface

    ! her2kBatched
    interface
        function hipblasCher2kBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCher2kBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2kBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCher2kBatched
    end interface

    interface
        function hipblasZher2kBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZher2kBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2kBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZher2kBatched
    end interface

    ! her2kBatched_64
    interface
        function hipblasCher2kBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCher2kBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2kBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCher2kBatched_64
    end interface

    interface
        function hipblasZher2kBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZher2kBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2kBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZher2kBatched_64
    end interface

    ! her2kStridedBatched
    interface
        function hipblasCher2kStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCher2kStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2kStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCher2kStridedBatched
    end interface

    interface
        function hipblasZher2kStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZher2kStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2kStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZher2kStridedBatched
    end interface

    ! her2kStridedBatched_64
    interface
        function hipblasCher2kStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCher2kStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCher2kStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCher2kStridedBatched_64
    end interface

    interface
        function hipblasZher2kStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZher2kStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZher2kStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZher2kStridedBatched_64
    end interface

    ! herkx
    interface
        function hipblasCherkx(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCherkx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCherkx
    end interface

    interface
        function hipblasZherkx(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZherkx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZherkx
    end interface

    ! herkx_64
    interface
        function hipblasCherkx_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCherkx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCherkx_64
    end interface

    interface
        function hipblasZherkx_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZherkx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZherkx_64
    end interface

    ! herkxBatched
    interface
        function hipblasCherkxBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCherkxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkxBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCherkxBatched
    end interface

    interface
        function hipblasZherkxBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZherkxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkxBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZherkxBatched
    end interface

    ! herkxBatched_64
    interface
        function hipblasCherkxBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCherkxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkxBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCherkxBatched_64
    end interface

    interface
        function hipblasZherkxBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZherkxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkxBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZherkxBatched_64
    end interface

    ! herkxStridedBatched
    interface
        function hipblasCherkxStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCherkxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkxStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCherkxStridedBatched
    end interface

    interface
        function hipblasZherkxStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZherkxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkxStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZherkxStridedBatched
    end interface

    ! herkxStridedBatched_64
    interface
        function hipblasCherkxStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCherkxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkxStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCherkxStridedBatched_64
    end interface

    interface
        function hipblasZherkxStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZherkxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZherkxStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZherkxStridedBatched_64
    end interface

    ! symm
    interface
        function hipblasSsymm(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSsymm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSsymm
    end interface

    interface
        function hipblasDsymm(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDsymm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDsymm
    end interface

    interface
        function hipblasCsymm(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCsymm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCsymm
    end interface

    interface
        function hipblasZsymm(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZsymm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZsymm
    end interface

    ! symm_64
    interface
        function hipblasSsymm_64(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSsymm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSsymm_64
    end interface

    interface
        function hipblasDsymm_64(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDsymm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDsymm_64
    end interface

    interface
        function hipblasCsymm_64(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCsymm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCsymm_64
    end interface

    interface
        function hipblasZsymm_64(handle, side, uplo, m, n, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZsymm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZsymm_64
    end interface

    ! symmBatched
    interface
        function hipblasSsymmBatched(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsymmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSsymmBatched
    end interface

    interface
        function hipblasDsymmBatched(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsymmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDsymmBatched
    end interface

    interface
        function hipblasCsymmBatched(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsymmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCsymmBatched
    end interface

    interface
        function hipblasZsymmBatched(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsymmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZsymmBatched
    end interface

    ! symmBatched_64
    interface
        function hipblasSsymmBatched_64(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsymmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSsymmBatched_64
    end interface

    interface
        function hipblasDsymmBatched_64(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsymmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDsymmBatched_64
    end interface

    interface
        function hipblasCsymmBatched_64(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsymmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCsymmBatched_64
    end interface

    interface
        function hipblasZsymmBatched_64(handle, side, uplo, m, n, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsymmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZsymmBatched_64
    end interface

    ! symmStridedBatched
    interface
        function hipblasSsymmStridedBatched(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsymmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSsymmStridedBatched
    end interface

    interface
        function hipblasDsymmStridedBatched(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsymmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDsymmStridedBatched
    end interface

    interface
        function hipblasCsymmStridedBatched(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsymmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCsymmStridedBatched
    end interface

    interface
        function hipblasZsymmStridedBatched(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsymmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZsymmStridedBatched
    end interface

    ! symmStridedBatched_64
    interface
        function hipblasSsymmStridedBatched_64(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsymmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsymmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSsymmStridedBatched_64
    end interface

    interface
        function hipblasDsymmStridedBatched_64(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsymmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsymmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDsymmStridedBatched_64
    end interface

    interface
        function hipblasCsymmStridedBatched_64(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsymmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsymmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCsymmStridedBatched_64
    end interface

    interface
        function hipblasZsymmStridedBatched_64(handle, side, uplo, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsymmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsymmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZsymmStridedBatched_64
    end interface

    ! syrk
    interface
        function hipblasSsyrk(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasSsyrk')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrk
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSsyrk
    end interface

    interface
        function hipblasDsyrk(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasDsyrk')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrk
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDsyrk
    end interface

    interface
        function hipblasCsyrk(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasCsyrk')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrk
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCsyrk
    end interface

    interface
        function hipblasZsyrk(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasZsyrk')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrk
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZsyrk
    end interface

    ! syrk_64
    interface
        function hipblasSsyrk_64(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasSsyrk_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrk_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSsyrk_64
    end interface

    interface
        function hipblasDsyrk_64(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasDsyrk_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrk_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDsyrk_64
    end interface

    interface
        function hipblasCsyrk_64(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasCsyrk_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrk_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCsyrk_64
    end interface

    interface
        function hipblasZsyrk_64(handle, uplo, transA, n, k, alpha, &
                              A, lda, beta, C, ldc) &
            bind(c, name='hipblasZsyrk_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrk_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZsyrk_64
    end interface

    ! syrkBatched
    interface
        function hipblasSsyrkBatched(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsyrkBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSsyrkBatched
    end interface

    interface
        function hipblasDsyrkBatched(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsyrkBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDsyrkBatched
    end interface

    interface
        function hipblasCsyrkBatched(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsyrkBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCsyrkBatched
    end interface

    interface
        function hipblasZsyrkBatched(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsyrkBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZsyrkBatched
    end interface

    ! syrkBatched_64
    interface
        function hipblasSsyrkBatched_64(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsyrkBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyrkBatched_64
    end interface

    interface
        function hipblasDsyrkBatched_64(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsyrkBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyrkBatched_64
    end interface

    interface
        function hipblasCsyrkBatched_64(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsyrkBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyrkBatched_64
    end interface

    interface
        function hipblasZsyrkBatched_64(handle, uplo, transA, n, k, alpha, &
                                     A, lda, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsyrkBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyrkBatched_64
    end interface

    ! syrkStridedBatched
    interface
        function hipblasSsyrkStridedBatched(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsyrkStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSsyrkStridedBatched
    end interface

    interface
        function hipblasDsyrkStridedBatched(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsyrkStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDsyrkStridedBatched
    end interface

    interface
        function hipblasCsyrkStridedBatched(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsyrkStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCsyrkStridedBatched
    end interface

    interface
        function hipblasZsyrkStridedBatched(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsyrkStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZsyrkStridedBatched
    end interface

    ! syrkStridedBatched_64
    interface
        function hipblasSsyrkStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsyrkStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyrkStridedBatched_64
    end interface

    interface
        function hipblasDsyrkStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsyrkStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyrkStridedBatched_64
    end interface

    interface
        function hipblasCsyrkStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsyrkStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyrkStridedBatched_64
    end interface

    interface
        function hipblasZsyrkStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                            A, lda, stride_A, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsyrkStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyrkStridedBatched_64
    end interface

    ! syr2k
    interface
        function hipblasSsyr2k(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSsyr2k')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2k
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSsyr2k
    end interface

    interface
        function hipblasDsyr2k(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDsyr2k')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2k
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDsyr2k
    end interface

    interface
        function hipblasCsyr2k(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCsyr2k')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2k
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCsyr2k
    end interface

    interface
        function hipblasZsyr2k(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZsyr2k')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2k
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZsyr2k
    end interface

    ! syr2k_64
    interface
        function hipblasSsyr2k_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSsyr2k_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2k_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSsyr2k_64
    end interface

    interface
        function hipblasDsyr2k_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDsyr2k_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2k_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDsyr2k_64
    end interface

    interface
        function hipblasCsyr2k_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCsyr2k_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2k_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCsyr2k_64
    end interface

    interface
        function hipblasZsyr2k_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZsyr2k_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2k_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZsyr2k_64
    end interface

    ! syr2kBatched
    interface
        function hipblasSsyr2kBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsyr2kBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2kBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSsyr2kBatched
    end interface

    interface
        function hipblasDsyr2kBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsyr2kBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2kBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDsyr2kBatched
    end interface

    interface
        function hipblasCsyr2kBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsyr2kBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2kBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCsyr2kBatched
    end interface

    interface
        function hipblasZsyr2kBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsyr2kBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2kBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZsyr2kBatched
    end interface

    ! syr2kBatched_64
    interface
        function hipblasSsyr2kBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsyr2kBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2kBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyr2kBatched_64
    end interface

    interface
        function hipblasDsyr2kBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsyr2kBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2kBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyr2kBatched_64
    end interface

    interface
        function hipblasCsyr2kBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsyr2kBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2kBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyr2kBatched_64
    end interface

    interface
        function hipblasZsyr2kBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsyr2kBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2kBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyr2kBatched_64
    end interface

    ! syr2kStridedBatched
    interface
        function hipblasSsyr2kStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsyr2kStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2kStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSsyr2kStridedBatched
    end interface

    interface
        function hipblasDsyr2kStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsyr2kStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2kStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDsyr2kStridedBatched
    end interface

    interface
        function hipblasCsyr2kStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsyr2kStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2kStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCsyr2kStridedBatched
    end interface

    interface
        function hipblasZsyr2kStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsyr2kStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2kStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZsyr2kStridedBatched
    end interface

    ! syr2kStridedBatched_64
    interface
        function hipblasSsyr2kStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsyr2kStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyr2kStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyr2kStridedBatched_64
    end interface

    interface
        function hipblasDsyr2kStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsyr2kStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyr2kStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyr2kStridedBatched_64
    end interface

    interface
        function hipblasCsyr2kStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsyr2kStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyr2kStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyr2kStridedBatched_64
    end interface

    interface
        function hipblasZsyr2kStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsyr2kStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyr2kStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyr2kStridedBatched_64
    end interface

    ! syrkx
    interface
        function hipblasSsyrkx(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSsyrkx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSsyrkx
    end interface

    interface
        function hipblasDsyrkx(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDsyrkx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDsyrkx
    end interface

    interface
        function hipblasCsyrkx(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCsyrkx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCsyrkx
    end interface

    interface
        function hipblasZsyrkx(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZsyrkx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZsyrkx
    end interface

    ! syrkx_64
    interface
        function hipblasSsyrkx_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSsyrkx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSsyrkx_64
    end interface

    interface
        function hipblasDsyrkx_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDsyrkx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDsyrkx_64
    end interface

    interface
        function hipblasCsyrkx_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCsyrkx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCsyrkx_64
    end interface

    interface
        function hipblasZsyrkx_64(handle, uplo, transA, n, k, alpha, &
                               A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZsyrkx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZsyrkx_64
    end interface

    ! syrkxBatched
    interface
        function hipblasSsyrkxBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsyrkxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkxBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSsyrkxBatched
    end interface

    interface
        function hipblasDsyrkxBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsyrkxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkxBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDsyrkxBatched
    end interface

    interface
        function hipblasCsyrkxBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsyrkxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkxBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCsyrkxBatched
    end interface

    interface
        function hipblasZsyrkxBatched(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsyrkxBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkxBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZsyrkxBatched
    end interface

    ! syrkxBatched_64
    interface
        function hipblasSsyrkxBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSsyrkxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkxBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyrkxBatched_64
    end interface

    interface
        function hipblasDsyrkxBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDsyrkxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkxBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyrkxBatched_64
    end interface

    interface
        function hipblasCsyrkxBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCsyrkxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkxBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyrkxBatched_64
    end interface

    interface
        function hipblasZsyrkxBatched_64(handle, uplo, transA, n, k, alpha, &
                                      A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZsyrkxBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkxBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyrkxBatched_64
    end interface

    ! syrkxStridedBatched
    interface
        function hipblasSsyrkxStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsyrkxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkxStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSsyrkxStridedBatched
    end interface

    interface
        function hipblasDsyrkxStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsyrkxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkxStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDsyrkxStridedBatched
    end interface

    interface
        function hipblasCsyrkxStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsyrkxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkxStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCsyrkxStridedBatched
    end interface

    interface
        function hipblasZsyrkxStridedBatched(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsyrkxStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkxStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZsyrkxStridedBatched
    end interface

    ! syrkxStridedBatched_64
    interface
        function hipblasSsyrkxStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSsyrkxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSsyrkxStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSsyrkxStridedBatched_64
    end interface

    interface
        function hipblasDsyrkxStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDsyrkxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDsyrkxStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDsyrkxStridedBatched_64
    end interface

    interface
        function hipblasCsyrkxStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCsyrkxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkxStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCsyrkxStridedBatched_64
    end interface

    interface
        function hipblasZsyrkxStridedBatched_64(handle, uplo, transA, n, k, alpha, &
                                             A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZsyrkxStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZsyrkxStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZsyrkxStridedBatched_64
    end interface

    ! trmm
    interface
        function hipblasStrmm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasStrmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasStrmm
    end interface

    interface
        function hipblasDtrmm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasDtrmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDtrmm
    end interface

    interface
        function hipblasCtrmm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasCtrmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCtrmm
    end interface

    interface
        function hipblasZtrmm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasZtrmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZtrmm
    end interface

    ! trmm_64
    interface
        function hipblasStrmm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasStrmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasStrmm_64
    end interface

    interface
        function hipblasDtrmm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasDtrmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDtrmm_64
    end interface

    interface
        function hipblasCtrmm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasCtrmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCtrmm_64
    end interface

    interface
        function hipblasZtrmm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb, C, ldc) &
            bind(c, name='hipblasZtrmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZtrmm_64
    end interface

    ! trmmBatched
    interface
        function hipblasStrmmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasStrmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasStrmmBatched
    end interface

    interface
        function hipblasDtrmmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasDtrmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDtrmmBatched
    end interface

    interface
        function hipblasCtrmmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasCtrmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCtrmmBatched
    end interface

    interface
        function hipblasZtrmmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasZtrmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZtrmmBatched
    end interface

    ! trmmBatched_64
    interface
        function hipblasStrmmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasStrmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasStrmmBatched_64
    end interface

    interface
        function hipblasDtrmmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasDtrmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrmmBatched_64
    end interface

    interface
        function hipblasCtrmmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasCtrmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrmmBatched_64
    end interface

    interface
        function hipblasZtrmmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasZtrmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrmmBatched_64
    end interface

    ! trmmStridedBatched
    interface
        function hipblasStrmmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasStrmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasStrmmStridedBatched
    end interface

    interface
        function hipblasDtrmmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDtrmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDtrmmStridedBatched
    end interface

    interface
        function hipblasCtrmmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCtrmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCtrmmStridedBatched
    end interface

    interface
        function hipblasZtrmmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZtrmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZtrmmStridedBatched
    end interface

    ! trmmStridedBatched_64
    interface
        function hipblasStrmmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasStrmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasStrmmStridedBatched_64
    end interface

    interface
        function hipblasDtrmmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDtrmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrmmStridedBatched_64
    end interface

    interface
        function hipblasCtrmmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCtrmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrmmStridedBatched_64
    end interface

    interface
        function hipblasZtrmmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZtrmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrmmStridedBatched_64
    end interface

    ! trtri
    interface
        function hipblasStrtri(handle, uplo, diag, n, &
                               A, lda, invA, ldinvA) &
            bind(c, name='hipblasStrtri')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrtri
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
        end function hipblasStrtri
    end interface

    interface
        function hipblasDtrtri(handle, uplo, diag, n, &
                               A, lda, invA, ldinvA) &
            bind(c, name='hipblasDtrtri')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrtri
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
        end function hipblasDtrtri
    end interface

    interface
        function hipblasCtrtri(handle, uplo, diag, n, &
                               A, lda, invA, ldinvA) &
            bind(c, name='hipblasCtrtri')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrtri
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
        end function hipblasCtrtri
    end interface

    interface
        function hipblasZtrtri(handle, uplo, diag, n, &
                               A, lda, invA, ldinvA) &
            bind(c, name='hipblasZtrtri')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrtri
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
        end function hipblasZtrtri
    end interface

    ! trtriBatched
    interface
        function hipblasStrtriBatched(handle, uplo, diag, n, &
                                      A, lda, invA, ldinvA, batch_count) &
            bind(c, name='hipblasStrtriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrtriBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int), value :: batch_count
        end function hipblasStrtriBatched
    end interface

    interface
        function hipblasDtrtriBatched(handle, uplo, diag, n, &
                                      A, lda, invA, ldinvA, batch_count) &
            bind(c, name='hipblasDtrtriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrtriBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int), value :: batch_count
        end function hipblasDtrtriBatched
    end interface

    interface
        function hipblasCtrtriBatched(handle, uplo, diag, n, &
                                      A, lda, invA, ldinvA, batch_count) &
            bind(c, name='hipblasCtrtriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrtriBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int), value :: batch_count
        end function hipblasCtrtriBatched
    end interface

    interface
        function hipblasZtrtriBatched(handle, uplo, diag, n, &
                                      A, lda, invA, ldinvA, batch_count) &
            bind(c, name='hipblasZtrtriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrtriBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int), value :: batch_count
        end function hipblasZtrtriBatched
    end interface

    ! trtriStridedBatched
    interface
        function hipblasStrtriStridedBatched(handle, uplo, diag, n, &
                                             A, lda, stride_A, invA, ldinvA, stride_invA, batch_count) &
            bind(c, name='hipblasStrtriStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrtriStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int64_t), value :: stride_invA
            integer(c_int), value :: batch_count
        end function hipblasStrtriStridedBatched
    end interface

    interface
        function hipblasDtrtriStridedBatched(handle, uplo, diag, n, &
                                             A, lda, stride_A, invA, ldinvA, stride_invA, batch_count) &
            bind(c, name='hipblasDtrtriStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrtriStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int64_t), value :: stride_invA
            integer(c_int), value :: batch_count
        end function hipblasDtrtriStridedBatched
    end interface

    interface
        function hipblasCtrtriStridedBatched(handle, uplo, diag, n, &
                                             A, lda, stride_A, invA, ldinvA, stride_invA, batch_count) &
            bind(c, name='hipblasCtrtriStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrtriStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int64_t), value :: stride_invA
            integer(c_int), value :: batch_count
        end function hipblasCtrtriStridedBatched
    end interface

    interface
        function hipblasZtrtriStridedBatched(handle, uplo, diag, n, &
                                             A, lda, stride_A, invA, ldinvA, stride_invA, batch_count) &
            bind(c, name='hipblasZtrtriStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrtriStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: invA
            integer(c_int), value :: ldinvA
            integer(c_int64_t), value :: stride_invA
            integer(c_int), value :: batch_count
        end function hipblasZtrtriStridedBatched
    end interface

    ! trsm
    interface
        function hipblasStrsm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasStrsm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
        end function hipblasStrsm
    end interface

    interface
        function hipblasDtrsm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasDtrsm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
        end function hipblasDtrsm
    end interface

    interface
        function hipblasCtrsm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasCtrsm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
        end function hipblasCtrsm
    end interface

    interface
        function hipblasZtrsm(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasZtrsm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
        end function hipblasZtrsm
    end interface

    ! trsm_64
    interface
        function hipblasStrsm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasStrsm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
        end function hipblasStrsm_64
    end interface

    interface
        function hipblasDtrsm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasDtrsm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
        end function hipblasDtrsm_64
    end interface

    interface
        function hipblasCtrsm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasCtrsm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
        end function hipblasCtrsm_64
    end interface

    interface
        function hipblasZtrsm_64(handle, side, uplo, transA, diag, m, n, alpha, &
                              A, lda, B, ldb) &
            bind(c, name='hipblasZtrsm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
        end function hipblasZtrsm_64
    end interface

    ! trsmBatched
    interface
        function hipblasStrsmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasStrsmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: batch_count
        end function hipblasStrsmBatched
    end interface

    interface
        function hipblasDtrsmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasDtrsmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: batch_count
        end function hipblasDtrsmBatched
    end interface

    interface
        function hipblasCtrsmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasCtrsmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: batch_count
        end function hipblasCtrsmBatched
    end interface

    interface
        function hipblasZtrsmBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasZtrsmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: batch_count
        end function hipblasZtrsmBatched
    end interface

    ! trsmBatched_64
    interface
        function hipblasStrsmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasStrsmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: batch_count
        end function hipblasStrsmBatched_64
    end interface

    interface
        function hipblasDtrsmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasDtrsmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrsmBatched_64
    end interface

    interface
        function hipblasCtrsmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasCtrsmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrsmBatched_64
    end interface

    interface
        function hipblasZtrsmBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                     A, lda, B, ldb, batch_count) &
            bind(c, name='hipblasZtrsmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrsmBatched_64
    end interface

    ! trsmStridedBatched
    interface
        function hipblasStrsmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasStrsmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int), value :: batch_count
        end function hipblasStrsmStridedBatched
    end interface

    interface
        function hipblasDtrsmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasDtrsmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int), value :: batch_count
        end function hipblasDtrsmStridedBatched
    end interface

    interface
        function hipblasCtrsmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasCtrsmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int), value :: batch_count
        end function hipblasCtrsmStridedBatched
    end interface

    interface
        function hipblasZtrsmStridedBatched(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasZtrsmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int), value :: batch_count
        end function hipblasZtrsmStridedBatched
    end interface

    ! trsmStridedBatched_64
    interface
        function hipblasStrsmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasStrsmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasStrsmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int64_t), value :: batch_count
        end function hipblasStrsmStridedBatched_64
    end interface

    interface
        function hipblasDtrsmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasDtrsmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDtrsmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int64_t), value :: batch_count
        end function hipblasDtrsmStridedBatched_64
    end interface

    interface
        function hipblasCtrsmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasCtrsmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCtrsmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int64_t), value :: batch_count
        end function hipblasCtrsmStridedBatched_64
    end interface

    interface
        function hipblasZtrsmStridedBatched_64(handle, side, uplo, transA, diag, m, n, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, batch_count) &
            bind(c, name='hipblasZtrsmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZtrsmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int64_t), value :: batch_count
        end function hipblasZtrsmStridedBatched_64
    end interface

    ! gemm
    interface
        function hipblasHgemm(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasHgemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHgemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasHgemm
    end interface

    interface
        function hipblasSgemm(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSgemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSgemm
    end interface

    interface
        function hipblasDgemm(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDgemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDgemm
    end interface

    interface
        function hipblasCgemm(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCgemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCgemm
    end interface

    interface
        function hipblasZgemm(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZgemm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZgemm
    end interface

    ! gemm_64
    interface
        function hipblasHgemm_64(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasHgemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHgemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasHgemm_64
    end interface

    interface
        function hipblasSgemm_64(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasSgemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSgemm_64
    end interface

    interface
        function hipblasDgemm_64(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasDgemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDgemm_64
    end interface

    interface
        function hipblasCgemm_64(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasCgemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCgemm_64
    end interface

    interface
        function hipblasZgemm_64(handle, transA, transB, m, n, k, alpha, &
                              A, lda, B, ldb, beta, C, ldc) &
            bind(c, name='hipblasZgemm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZgemm_64
    end interface

    ! gemmBatched
    interface
        function hipblasHgemmBatched(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasHgemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHgemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasHgemmBatched
    end interface

    interface
        function hipblasSgemmBatched(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSgemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSgemmBatched
    end interface

    interface
        function hipblasDgemmBatched(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDgemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDgemmBatched
    end interface

    interface
        function hipblasCgemmBatched(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCgemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCgemmBatched
    end interface

    interface
        function hipblasZgemmBatched(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZgemmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZgemmBatched
    end interface

    ! gemmBatched_64
    interface
        function hipblasHgemmBatched_64(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasHgemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHgemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasHgemmBatched_64
    end interface

    interface
        function hipblasSgemmBatched_64(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasSgemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSgemmBatched_64
    end interface

    interface
        function hipblasDgemmBatched_64(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasDgemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDgemmBatched_64
    end interface

    interface
        function hipblasCgemmBatched_64(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasCgemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCgemmBatched_64
    end interface

    interface
        function hipblasZgemmBatched_64(handle, transA, transB, m, n, k, alpha, &
                                     A, lda, B, ldb, beta, C, ldc, batch_count) &
            bind(c, name='hipblasZgemmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZgemmBatched_64
    end interface

    ! gemmStridedBatched
    interface
        function hipblasHgemmStridedBatched(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasHgemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHgemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasHgemmStridedBatched
    end interface

    interface
        function hipblasSgemmStridedBatched(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSgemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSgemmStridedBatched
    end interface

    interface
        function hipblasDgemmStridedBatched(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDgemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDgemmStridedBatched
    end interface

    interface
        function hipblasCgemmStridedBatched(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCgemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCgemmStridedBatched
    end interface

    interface
        function hipblasZgemmStridedBatched(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZgemmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZgemmStridedBatched
    end interface

    ! gemmStridedBatched_64
    interface
        function hipblasHgemmStridedBatched_64(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasHgemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasHgemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasHgemmStridedBatched_64
    end interface

    interface
        function hipblasSgemmStridedBatched_64(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSgemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSgemmStridedBatched_64
    end interface

    interface
        function hipblasDgemmStridedBatched_64(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDgemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDgemmStridedBatched_64
    end interface

    interface
        function hipblasCgemmStridedBatched_64(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCgemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCgemmStridedBatched_64
    end interface

    interface
        function hipblasZgemmStridedBatched_64(handle, transA, transB, m, n, k, alpha, &
                                            A, lda, stride_A, B, ldb, stride_B, beta, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZgemmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgemmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: beta
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZgemmStridedBatched_64
    end interface

    ! dgmm
    interface
        function hipblasSdgmm(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasSdgmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdgmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSdgmm
    end interface

    interface
        function hipblasDdgmm(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasDdgmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdgmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDdgmm
    end interface

    interface
        function hipblasCdgmm(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasCdgmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdgmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCdgmm
    end interface

    interface
        function hipblasZdgmm(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasZdgmm')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdgmm
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZdgmm
    end interface

    ! dgmm_64
    interface
        function hipblasSdgmm_64(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasSdgmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdgmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSdgmm_64
    end interface

    interface
        function hipblasDdgmm_64(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasDdgmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdgmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDdgmm_64
    end interface

    interface
        function hipblasCdgmm_64(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasCdgmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdgmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCdgmm_64
    end interface

    interface
        function hipblasZdgmm_64(handle, side, m, n, &
                              A, lda, x, incx, C, ldc) &
            bind(c, name='hipblasZdgmm_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdgmm_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZdgmm_64
    end interface

    ! dgmmBatched
    interface
        function hipblasSdgmmBatched(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasSdgmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdgmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSdgmmBatched
    end interface

    interface
        function hipblasDdgmmBatched(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasDdgmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdgmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDdgmmBatched
    end interface

    interface
        function hipblasCdgmmBatched(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasCdgmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdgmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCdgmmBatched
    end interface

    interface
        function hipblasZdgmmBatched(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasZdgmmBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdgmmBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZdgmmBatched
    end interface

    ! dgmmBatched_64
    interface
        function hipblasSdgmmBatched_64(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasSdgmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdgmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSdgmmBatched_64
    end interface

    interface
        function hipblasDdgmmBatched_64(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasDdgmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdgmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDdgmmBatched_64
    end interface

    interface
        function hipblasCdgmmBatched_64(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasCdgmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdgmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCdgmmBatched_64
    end interface

    interface
        function hipblasZdgmmBatched_64(handle, side, m, n, &
                                     A, lda, x, incx, C, ldc, batch_count) &
            bind(c, name='hipblasZdgmmBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdgmmBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZdgmmBatched_64
    end interface

    ! dgmmStridedBatched
    interface
        function hipblasSdgmmStridedBatched(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSdgmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdgmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSdgmmStridedBatched
    end interface

    interface
        function hipblasDdgmmStridedBatched(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDdgmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdgmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDdgmmStridedBatched
    end interface

    interface
        function hipblasCdgmmStridedBatched(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCdgmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdgmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCdgmmStridedBatched
    end interface

    interface
        function hipblasZdgmmStridedBatched(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZdgmmStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdgmmStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZdgmmStridedBatched
    end interface

    ! dgmmStridedBatched_64
    interface
        function hipblasSdgmmStridedBatched_64(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSdgmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSdgmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSdgmmStridedBatched_64
    end interface

    interface
        function hipblasDdgmmStridedBatched_64(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDdgmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDdgmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDdgmmStridedBatched_64
    end interface

    interface
        function hipblasCdgmmStridedBatched_64(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCdgmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCdgmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCdgmmStridedBatched_64
    end interface

    interface
        function hipblasZdgmmStridedBatched_64(handle, side, m, n, &
                                            A, lda, stride_A, x, incx, stride_x, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZdgmmStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZdgmmStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: x
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stride_x
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZdgmmStridedBatched_64
    end interface

    ! geam
    interface
        function hipblasSgeam(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasSgeam')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeam
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasSgeam
    end interface

    interface
        function hipblasDgeam(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasDgeam')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeam
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasDgeam
    end interface

    interface
        function hipblasCgeam(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasCgeam')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeam
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasCgeam
    end interface

    interface
        function hipblasZgeam(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasZgeam')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeam
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
        end function hipblasZgeam
    end interface

    ! geam_64
    interface
        function hipblasSgeam_64(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasSgeam_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeam_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasSgeam_64
    end interface

    interface
        function hipblasDgeam_64(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasDgeam_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeam_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasDgeam_64
    end interface

    interface
        function hipblasCgeam_64(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasCgeam_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeam_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasCgeam_64
    end interface

    interface
        function hipblasZgeam_64(handle, transA, transB, m, n, alpha, &
                              A, lda, beta, B, ldb, C, ldc) &
            bind(c, name='hipblasZgeam_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeam_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
        end function hipblasZgeam_64
    end interface

    ! geamBatched
    interface
        function hipblasSgeamBatched(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasSgeamBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeamBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasSgeamBatched
    end interface

    interface
        function hipblasDgeamBatched(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasDgeamBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeamBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasDgeamBatched
    end interface

    interface
        function hipblasCgeamBatched(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasCgeamBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeamBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasCgeamBatched
    end interface

    interface
        function hipblasZgeamBatched(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasZgeamBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeamBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
        end function hipblasZgeamBatched
    end interface

    ! geamBatched_64
    interface
        function hipblasSgeamBatched_64(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasSgeamBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeamBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasSgeamBatched_64
    end interface

    interface
        function hipblasDgeamBatched_64(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasDgeamBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeamBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasDgeamBatched_64
    end interface

    interface
        function hipblasCgeamBatched_64(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasCgeamBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeamBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasCgeamBatched_64
    end interface

    interface
        function hipblasZgeamBatched_64(handle, transA, transB, m, n, alpha, &
                                     A, lda, beta, B, ldb, C, ldc, batch_count) &
            bind(c, name='hipblasZgeamBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeamBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
        end function hipblasZgeamBatched_64
    end interface

    ! geamStridedBatched
    interface
        function hipblasSgeamStridedBatched(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSgeamStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeamStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasSgeamStridedBatched
    end interface

    interface
        function hipblasDgeamStridedBatched(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDgeamStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeamStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasDgeamStridedBatched
    end interface

    interface
        function hipblasCgeamStridedBatched(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCgeamStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeamStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasCgeamStridedBatched
    end interface

    interface
        function hipblasZgeamStridedBatched(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZgeamStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeamStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int), value :: batch_count
        end function hipblasZgeamStridedBatched
    end interface

    ! geamStridedBatched_64
    interface
        function hipblasSgeamStridedBatched_64(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasSgeamStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeamStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasSgeamStridedBatched_64
    end interface

    interface
        function hipblasDgeamStridedBatched_64(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasDgeamStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeamStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasDgeamStridedBatched_64
    end interface

    interface
        function hipblasCgeamStridedBatched_64(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasCgeamStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeamStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasCgeamStridedBatched_64
    end interface

    interface
        function hipblasZgeamStridedBatched_64(handle, transA, transB, m, n, alpha, &
                                            A, lda, stride_A, beta, B, ldb, stride_B, C, ldc, stride_C, batch_count) &
            bind(c, name='hipblasZgeamStridedBatched_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeamStridedBatched_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: beta
            type(c_ptr), value :: B
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_B
            type(c_ptr), value :: C
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_C
            integer(c_int64_t), value :: batch_count
        end function hipblasZgeamStridedBatched_64
    end interface

    !-----------------!
    ! blas Extensions !
    !-----------------!

    ! gemmEx
    interface
        function hipblasGemmEx(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                               b, b_type, ldb, beta, c, c_type, ldc, &
                               compute_type, algo) &
            bind(c, name='hipblasGemmEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmEx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int), value :: ldc
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
        end function hipblasGemmEx
    end interface

    interface
        function hipblasGemmExWithFlags(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                                        b, b_type, ldb, beta, c, c_type, ldc, &
                                        compute_type, algo, flags) &
            bind(c, name='hipblasGemmExWithFlags')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmExWithFlags
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int), value :: ldc
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
            integer(kind(HIPBLAS_GEMM_FLAGS_NONE)), value :: flags
        end function hipblasGemmExWithFlags
    end interface

    interface
        function hipblasGemmBatchedEx(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                                      b, b_type, ldb, beta, c, c_type, ldc, &
                                      batch_count, compute_type, algo) &
            bind(c, name='hipblasGemmBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmBatchedEx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
        end function hipblasGemmBatchedEx
    end interface

    interface
        function hipblasGemmBatchedExWithFlags(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                                               b, b_type, ldb, beta, c, c_type, ldc, &
                                               batch_count, compute_type, algo, flags) &
            bind(c, name='hipblasGemmBatchedExWithFlags')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmBatchedExWithFlags
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int), value :: ldc
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
            integer(kind(HIPBLAS_GEMM_FLAGS_NONE)), value :: flags
        end function hipblasGemmBatchedExWithFlags
    end interface

    interface
        function hipblasGemmStridedBatchedEx(handle, transA, transB, m, n, k, alpha, a, a_type, lda, stride_a, &
                                             b, b_type, ldb, stride_b, beta, c, c_type, ldc, stride_c, &
                                             batch_count, compute_type, algo) &
            bind(c, name='hipblasGemmStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmStridedBatchedEx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_c
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
        end function hipblasGemmStridedBatchedEx
    end interface

    interface
        function hipblasGemmStridedBatchedExWithFlags(handle, transA, transB, m, n, k, alpha, a, a_type, lda, stride_a, &
                                                      b, b_type, ldb, stride_b, beta, c, c_type, ldc, stride_c, &
                                                      batch_count, compute_type, algo, flags) &
            bind(c, name='hipblasGemmStridedBatchedExWithFlags')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmStridedBatchedExWithFlags
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int), value :: ldc
            integer(c_int64_t), value :: stride_c
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
            integer(kind(HIPBLAS_GEMM_FLAGS_NONE)), value :: flags
        end function hipblasGemmStridedBatchedExWithFlags
    end interface

    ! gemmEx_64
    interface
        function hipblasGemmEx_64(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                               b, b_type, ldb, beta, c, c_type, ldc, &
                               compute_type, algo) &
            bind(c, name='hipblasGemmEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmEx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int64_t), value :: ldc
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
        end function hipblasGemmEx_64
    end interface

    interface
        function hipblasGemmExWithFlags_64(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                                        b, b_type, ldb, beta, c, c_type, ldc, &
                                        compute_type, algo, flags) &
            bind(c, name='hipblasGemmExWithFlags_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmExWithFlags_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int64_t), value :: ldc
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
            integer(kind(HIPBLAS_GEMM_FLAGS_NONE)), value :: flags
        end function hipblasGemmExWithFlags_64
    end interface

    interface
        function hipblasGemmBatchedEx_64(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                                      b, b_type, ldb, beta, c, c_type, ldc, &
                                      batch_count, compute_type, algo) &
            bind(c, name='hipblasGemmBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmBatchedEx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
        end function hipblasGemmBatchedEx_64
    end interface

    interface
        function hipblasGemmBatchedExWithFlags_64(handle, transA, transB, m, n, k, alpha, a, a_type, lda, &
                                               b, b_type, ldb, beta, c, c_type, ldc, &
                                               batch_count, compute_type, algo, flags) &
            bind(c, name='hipblasGemmBatchedExWithFlags_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmBatchedExWithFlags_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int64_t), value :: lda
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int64_t), value :: ldb
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
            integer(kind(HIPBLAS_GEMM_FLAGS_NONE)), value :: flags
        end function hipblasGemmBatchedExWithFlags_64
    end interface

    interface
        function hipblasGemmStridedBatchedEx_64(handle, transA, transB, m, n, k, alpha, a, a_type, lda, stride_a, &
                                             b, b_type, ldb, stride_b, beta, c, c_type, ldc, stride_c, &
                                             batch_count, compute_type, algo) &
            bind(c, name='hipblasGemmStridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmStridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_c
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
        end function hipblasGemmStridedBatchedEx_64
    end interface

    interface
        function hipblasGemmStridedBatchedExWithFlags_64(handle, transA, transB, m, n, k, alpha, a, a_type, lda, stride_a, &
                                                      b, b_type, ldb, stride_b, beta, c, c_type, ldc, stride_c, &
                                                      batch_count, compute_type, algo, flags) &
            bind(c, name='hipblasGemmStridedBatchedExWithFlags_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasGemmStridedBatchedExWithFlags_64
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_OP_N)), value :: transB
            integer(c_int64_t), value :: m
            integer(c_int64_t), value :: n
            integer(c_int64_t), value :: k
            type(c_ptr), value :: alpha
            type(c_ptr), value :: a
            integer(kind(HIPBLAS_R_16F)), value :: a_type
            integer(c_int64_t), value :: lda
            integer(c_int64_t), value :: stride_a
            type(c_ptr), value :: b
            integer(kind(HIPBLAS_R_16F)), value :: b_type
            integer(c_int64_t), value :: ldb
            integer(c_int64_t), value :: stride_b
            type(c_ptr), value :: beta
            type(c_ptr), value :: c
            integer(kind(HIPBLAS_R_16F)), value :: c_type
            integer(c_int64_t), value :: ldc
            integer(c_int64_t), value :: stride_c
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
            integer(kind(HIPBLAS_GEMM_DEFAULT)), value :: algo
            integer(kind(HIPBLAS_GEMM_FLAGS_NONE)), value :: flags
        end function hipblasGemmStridedBatchedExWithFlags_64
    end interface

    ! trsmEx
    interface
        function hipblasTrsmEx(handle, side, uplo, transA, diag, m, n, alpha, A, lda, &
                               B, ldb, invA, invA_size, compute_type) &
            bind(c, name='hipblasTrsmEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasTrsmEx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_UPPER)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: invA
            integer(c_int), value :: invA_size
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
        end function hipblasTrsmEx
    end interface

    interface
        function hipblasTrsmBatchedEx(handle, side, uplo, transA, diag, m, n, alpha, A, lda, &
                                      B, ldb, batch_count, invA, invA_size, compute_type) &
            bind(c, name='hipblasTrsmBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasTrsmBatchedEx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_UPPER)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: batch_count
            type(c_ptr), value :: invA
            integer(c_int), value :: invA_size
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
        end function hipblasTrsmBatchedEx
    end interface

    interface
        function hipblasTrsmStridedBatchedEx(handle, side, uplo, transA, diag, m, n, alpha, A, lda, stride_A, &
                                             B, ldb, stride_B, batch_count, invA, invA_size, stride_invA, compute_type) &
            bind(c, name='hipblasTrsmStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasTrsmStridedBatchedEx
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_SIDE_LEFT)), value :: side
            integer(kind(HIPBLAS_FILL_MODE_UPPER)), value :: uplo
            integer(kind(HIPBLAS_OP_N)), value :: transA
            integer(kind(HIPBLAS_DIAG_UNIT)), value :: diag
            integer(c_int), value :: m
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: stride_A
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: stride_B
            integer(c_int), value :: batch_count
            type(c_ptr), value :: invA
            integer(c_int), value :: invA_size
            integer(c_int64_t), value :: stride_invA
            integer(kind(HIPBLAS_R_16F)), value :: compute_type
        end function hipblasTrsmStridedBatchedEx
    end interface

    ! ! syrkEx
    ! interface
    !     function hipblasCsyrkEx(handle, uplo, trans, n, k, alpha, A, Atype, lda, beta, C, Ctype, ldc) &
    !                 !             bind(c, name = 'hipblasCsyrkEx')
    !         use iso_c_binding
    !         use hipblas_enums
    !         implicit none
    integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCsyrkEx
    !         type(c_ptr), value :: handle
    !         integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
    !         integer(kind(HIPBLAS_OP_N)), value :: trans
    !         integer(c_int), value :: n
    !         integer(c_int), value :: k
    !         type(c_ptr), value :: alpha
    !         type(c_ptr), value :: A
    !         integer(kind(HIPBLAS_R_16F)), value :: Atype
    !         integer(c_int), value :: lda
    !         type(c_ptr), value :: beta
    !         type(c_ptr), value:: C
    !         integer(kind(HIPBLAS_R_16F)), value :: Ctype
    !         integer(c_int), value :: ldc
    !     end function hipblasCsyrkEx
    ! end interface

    ! ! herkEx
    ! interface
    !     function hipblasCherkEx(handle, uplo, trans, n, k, alpha, A, Atype, lda, beta, C, Ctype, ldc) &
    !                 !             bind(c, name = 'hipblasCherkEx')
    !         use iso_c_binding
    !         use hipblas_enums
    !         implicit none
    integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCherkEx
    !         type(c_ptr), value :: handle
    !         integer(kind(HIPBLAS_FILL_MODE_FULL)), value :: uplo
    !         integer(kind(HIPBLAS_OP_N)), value :: trans
    !         integer(c_int), value :: n
    !         integer(c_int), value :: k
    !         type(c_ptr), value :: alpha
    !         type(c_ptr), value :: A
    !         integer(kind(HIPBLAS_R_16F)), value :: Atype
    !         integer(c_int), value :: lda
    !         type(c_ptr), value :: beta
    !         type(c_ptr), value:: C
    !         integer(kind(HIPBLAS_R_16F)), value :: Ctype
    !         integer(c_int), value :: ldc
    !     end function hipblasCherkEx
    ! end interface

    ! axpyEx
    interface
        function hipblasAxpyEx(handle, n, alpha, alphaType, x, xType, incx, y, yType, incy, executionType) &
            bind(c, name='hipblasAxpyEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasAxpyEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasAxpyEx
    end interface

    interface
        function hipblasAxpyBatchedEx(handle, n, alpha, alphaType, x, xType, incx, &
                                      y, yType, incy, batch_count, executionType) &
            bind(c, name='hipblasAxpyBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasAxpyBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasAxpyBatchedEx
    end interface

    interface
        function hipblasAxpyStridedBatchedEx(handle, n, alpha, alphaType, x, xType, incx, stridex, &
                                             y, yType, incy, stridey, batch_count, executionType) &
            bind(c, name='hipblasAxpyStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasAxpyStridedBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stridey
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasAxpyStridedBatchedEx
    end interface

    ! axpyEx_64
    interface
        function hipblasAxpyEx_64(handle, n, alpha, alphaType, x, xType, incx, y, yType, incy, executionType) &
            bind(c, name='hipblasAxpyEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasAxpyEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasAxpyEx_64
    end interface

    interface
        function hipblasAxpyBatchedEx_64(handle, n, alpha, alphaType, x, xType, incx, &
                                      y, yType, incy, batch_count, executionType) &
            bind(c, name='hipblasAxpyBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasAxpyBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasAxpyBatchedEx_64
    end interface

    interface
        function hipblasAxpyStridedBatchedEx_64(handle, n, alpha, alphaType, x, xType, incx, stridex, &
                                             y, yType, incy, stridey, batch_count, executionType) &
            bind(c, name='hipblasAxpyStridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasAxpyStridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stridey
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasAxpyStridedBatchedEx_64
    end interface

    ! dotEx
    interface
        function hipblasDotEx(handle, n, x, xType, incx, y, yType, incy, result, resultType, executionType) &
            bind(c, name='hipblasDotEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotEx
    end interface

    interface
        function hipblasDotcEx(handle, n, x, xType, incx, y, yType, incy, result, resultType, executionType) &
            bind(c, name='hipblasDotcEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotcEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotcEx
    end interface

    interface
        function hipblasDotBatchedEx(handle, n, x, xType, incx, &
                                     y, yType, incy, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotBatchedEx
    end interface

    interface
        function hipblasDotcBatchedEx(handle, n, x, xType, incx, &
                                      y, yType, incy, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotcBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotcBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotcBatchedEx
    end interface

    interface
        function hipblasDotStridedBatchedEx(handle, n, x, xType, incx, stridex, &
                                            y, yType, incy, stridey, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotStridedBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stridey
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotStridedBatchedEx
    end interface

    interface
        function hipblasDotcStridedBatchedEx(handle, n, x, xType, incx, stridex, &
                                             y, yType, incy, stridey, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotcStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotcStridedBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stridey
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotcStridedBatchedEx
    end interface

    ! dotEx_64
    interface
        function hipblasDotEx_64(handle, n, x, xType, incx, y, yType, incy, result, resultType, executionType) &
            bind(c, name='hipblasDotEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotEx_64
    end interface

    interface
        function hipblasDotcEx_64(handle, n, x, xType, incx, y, yType, incy, result, resultType, executionType) &
            bind(c, name='hipblasDotcEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotcEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotcEx_64
    end interface

    interface
        function hipblasDotBatchedEx_64(handle, n, x, xType, incx, &
                                     y, yType, incy, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotBatchedEx_64
    end interface

    interface
        function hipblasDotcBatchedEx_64(handle, n, x, xType, incx, &
                                      y, yType, incy, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotcBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotcBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotcBatchedEx_64
    end interface

    interface
        function hipblasDotStridedBatchedEx_64(handle, n, x, xType, incx, stridex, &
                                            y, yType, incy, stridey, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotStridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotStridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stridey
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotStridedBatchedEx_64
    end interface

    interface
        function hipblasDotcStridedBatchedEx_64(handle, n, x, xType, incx, stridex, &
                                             y, yType, incy, stridey, batch_count, result, resultType, executionType) &
            bind(c, name='hipblasDotcStridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDotcStridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stridey
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasDotcStridedBatchedEx_64
    end interface

    ! nrm2Ex
    interface
        function hipblasNrm2Ex(handle, n, x, xType, incx, result, resultType, executionType) &
            bind(c, name='hipblasNrm2Ex')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasNrm2Ex
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasNrm2Ex
    end interface

    interface
        function hipblasNrm2BatchedEx(handle, n, x, xType, incx, &
                                      batch_count, result, resultType, executionType) &
            bind(c, name='hipblasNrm2BatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasNrm2BatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasNrm2BatchedEx
    end interface

    interface
        function hipblasNrm2StridedBatchedEx(handle, n, x, xType, incx, stridex, &
                                             batch_count, result, resultType, executionType) &
            bind(c, name='hipblasNrm2StridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasNrm2StridedBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stridex
            integer(c_int), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasNrm2StridedBatchedEx
    end interface

    ! nrm2Ex_64
    interface
        function hipblasNrm2Ex_64(handle, n, x, xType, incx, result, resultType, executionType) &
            bind(c, name='hipblasNrm2Ex_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasNrm2Ex_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasNrm2Ex_64
    end interface

    interface
        function hipblasNrm2BatchedEx_64(handle, n, x, xType, incx, &
                                      batch_count, result, resultType, executionType) &
            bind(c, name='hipblasNrm2BatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasNrm2BatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasNrm2BatchedEx_64
    end interface

    interface
        function hipblasNrm2StridedBatchedEx_64(handle, n, x, xType, incx, stridex, &
                                             batch_count, result, resultType, executionType) &
            bind(c, name='hipblasNrm2StridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasNrm2StridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stridex
            integer(c_int64_t), value :: batch_count
            type(c_ptr), value :: result
            integer(kind(HIPBLAS_R_16F)), value :: resultType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasNrm2StridedBatchedEx_64
    end interface

    ! rotEx
    interface
        function hipblasRotEx(handle, n, x, xType, incx, y, yType, incy, c, s, csType, executionType) &
            bind(c, name='hipblasRotEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasRotEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(kind(HIPBLAS_R_16F)), value :: csType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasRotEx
    end interface

    interface
        function hipblasRotBatchedEx(handle, n, x, xType, incx, &
                                     y, yType, incy, c, s, csType, batch_count, executionType) &
            bind(c, name='hipblasRotBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasRotBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(kind(HIPBLAS_R_16F)), value :: csType
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasRotBatchedEx
    end interface

    interface
        function hipblasRotStridedBatchedEx(handle, n, x, xType, incx, stridex, &
                                            y, yType, incy, stridey, c, s, csType, batch_count, executionType) &
            bind(c, name='hipblasRotStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasRotStridedBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int), value :: incy
            integer(c_int64_t), value :: stridey
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(kind(HIPBLAS_R_16F)), value :: csType
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasRotStridedBatchedEx
    end interface

    ! rotEx_64
    interface
        function hipblasRotEx_64(handle, n, x, xType, incx, y, yType, incy, c, s, csType, executionType) &
            bind(c, name='hipblasRotEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasRotEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(kind(HIPBLAS_R_16F)), value :: csType
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasRotEx_64
    end interface

    interface
        function hipblasRotBatchedEx_64(handle, n, x, xType, incx, &
                                     y, yType, incy, c, s, csType, batch_count, executionType) &
            bind(c, name='hipblasRotBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasRotBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(kind(HIPBLAS_R_16F)), value :: csType
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasRotBatchedEx_64
    end interface

    interface
        function hipblasRotStridedBatchedEx_64(handle, n, x, xType, incx, stridex, &
                                            y, yType, incy, stridey, c, s, csType, batch_count, executionType) &
            bind(c, name='hipblasRotStridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasRotStridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stridex
            type(c_ptr), value :: y
            integer(kind(HIPBLAS_R_16F)), value :: yType
            integer(c_int64_t), value :: incy
            integer(c_int64_t), value :: stridey
            type(c_ptr), value :: c
            type(c_ptr), value :: s
            integer(kind(HIPBLAS_R_16F)), value :: csType
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasRotStridedBatchedEx_64
    end interface

    ! scalEx
    interface
        function hipblasScalEx(handle, n, alpha, alphaType, x, xType, incx, executionType) &
            bind(c, name='hipblasScalEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScalEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasScalEx
    end interface

    interface
        function hipblasScalBatchedEx(handle, n, alpha, alphaType, x, xType, incx, &
                                      batch_count, executionType) &
            bind(c, name='hipblasScalBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScalBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasScalBatchedEx
    end interface

    interface
        function hipblasScalStridedBatchedEx(handle, n, alpha, alphaType, x, xType, incx, stridex, &
                                             batch_count, executionType) &
            bind(c, name='hipblasScalStridedBatchedEx')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScalStridedBatchedEx
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int), value :: incx
            integer(c_int64_t), value :: stridex
            integer(c_int), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasScalStridedBatchedEx
    end interface

    ! scalEx_64
    interface
        function hipblasScalEx_64(handle, n, alpha, alphaType, x, xType, incx, executionType) &
            bind(c, name='hipblasScalEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScalEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasScalEx_64
    end interface

    interface
        function hipblasScalBatchedEx_64(handle, n, alpha, alphaType, x, xType, incx, &
                                      batch_count, executionType) &
            bind(c, name='hipblasScalBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScalBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasScalBatchedEx_64
    end interface

    interface
        function hipblasScalStridedBatchedEx_64(handle, n, alpha, alphaType, x, xType, incx, stridex, &
                                             batch_count, executionType) &
            bind(c, name='hipblasScalStridedBatchedEx_64')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasScalStridedBatchedEx_64
            type(c_ptr), value :: handle
            integer(c_int64_t), value :: n
            type(c_ptr), value :: alpha
            integer(kind(HIPBLAS_R_16F)), value :: alphaType
            type(c_ptr), value :: x
            integer(kind(HIPBLAS_R_16F)), value :: xType
            integer(c_int64_t), value :: incx
            integer(c_int64_t), value :: stridex
            integer(c_int64_t), value :: batch_count
            integer(kind(HIPBLAS_R_16F)), value :: executionType
        end function hipblasScalStridedBatchedEx_64
    end interface

    !--------!
    ! Solver !
    !--------!

    ! getrf
    interface
        function hipblasSgetrf(handle, n, A, lda, ipiv, info) &
            bind(c, name='hipblasSgetrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetrf
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
        end function hipblasSgetrf
    end interface

    interface
        function hipblasDgetrf(handle, n, A, lda, ipiv, info) &
            bind(c, name='hipblasDgetrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetrf
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
        end function hipblasDgetrf
    end interface

    interface
        function hipblasCgetrf(handle, n, A, lda, ipiv, info) &
            bind(c, name='hipblasCgetrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetrf
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
        end function hipblasCgetrf
    end interface

    interface
        function hipblasZgetrf(handle, n, A, lda, ipiv, info) &
            bind(c, name='hipblasZgetrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetrf
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
        end function hipblasZgetrf
    end interface

    ! getrf_batched
    interface
        function hipblasSgetrfBatched(handle, n, A, lda, ipiv, info, batch_count) &
            bind(c, name='hipblasSgetrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetrfBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgetrfBatched
    end interface

    interface
        function hipblasDgetrfBatched(handle, n, A, lda, ipiv, info, batch_count) &
            bind(c, name='hipblasDgetrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetrfBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgetrfBatched
    end interface

    interface
        function hipblasCgetrfBatched(handle, n, A, lda, ipiv, info, batch_count) &
            bind(c, name='hipblasCgetrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetrfBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgetrfBatched
    end interface

    interface
        function hipblasZgetrfBatched(handle, n, A, lda, ipiv, info, batch_count) &
            bind(c, name='hipblasZgetrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetrfBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgetrfBatched
    end interface

    ! getrf_strided_batched
    interface
        function hipblasSgetrfStridedBatched(handle, n, A, lda, stride_A, &
                                             ipiv, stride_P, info, batch_count) &
            bind(c, name='hipblasSgetrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetrfStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgetrfStridedBatched
    end interface

    interface
        function hipblasDgetrfStridedBatched(handle, n, A, lda, stride_A, &
                                             ipiv, stride_P, info, batch_count) &
            bind(c, name='hipblasDgetrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetrfStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgetrfStridedBatched
    end interface

    interface
        function hipblasCgetrfStridedBatched(handle, n, A, lda, stride_A, &
                                             ipiv, stride_P, info, batch_count) &
            bind(c, name='hipblasCgetrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetrfStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgetrfStridedBatched
    end interface

    interface
        function hipblasZgetrfStridedBatched(handle, n, A, lda, stride_A, &
                                             ipiv, stride_P, info, batch_count) &
            bind(c, name='hipblasZgetrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetrfStridedBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgetrfStridedBatched
    end interface

    ! getrs
    interface
        function hipblasSgetrs(handle, trans, n, nrhs, A, lda, ipiv, &
                               B, ldb, info) &
            bind(c, name='hipblasSgetrs')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetrs
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
        end function hipblasSgetrs
    end interface

    interface
        function hipblasDgetrs(handle, trans, n, nrhs, A, lda, ipiv, &
                               B, ldb, info) &
            bind(c, name='hipblasDgetrs')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetrs
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
        end function hipblasDgetrs
    end interface

    interface
        function hipblasCgetrs(handle, trans, n, nrhs, A, lda, ipiv, &
                               B, ldb, info) &
            bind(c, name='hipblasCgetrs')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetrs
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
        end function hipblasCgetrs
    end interface

    interface
        function hipblasZgetrs(handle, trans, n, nrhs, A, lda, ipiv, &
                               B, ldb, info) &
            bind(c, name='hipblasZgetrs')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetrs
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
        end function hipblasZgetrs
    end interface

    ! getrs_batched
    interface
        function hipblasSgetrsBatched(handle, trans, n, nrhs, A, lda, ipiv, &
                                      B, ldb, info, batch_count) &
            bind(c, name='hipblasSgetrsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetrsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgetrsBatched
    end interface

    interface
        function hipblasDgetrsBatched(handle, trans, n, nrhs, A, lda, ipiv, &
                                      B, ldb, info, batch_count) &
            bind(c, name='hipblasDgetrsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetrsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgetrsBatched
    end interface

    interface
        function hipblasCgetrsBatched(handle, trans, n, nrhs, A, lda, ipiv, &
                                      B, ldb, info, batch_count) &
            bind(c, name='hipblasCgetrsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetrsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgetrsBatched
    end interface

    interface
        function hipblasZgetrsBatched(handle, trans, n, nrhs, A, lda, ipiv, &
                                      B, ldb, info, batch_count) &
            bind(c, name='hipblasZgetrsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetrsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgetrsBatched
    end interface

    ! getrs_strided_batched
    interface
        function hipblasSgetrsStridedBatched(handle, trans, n, nrhs, A, lda, stride_A, ipiv, &
                                             stride_P, B, ldb, stride_B, info, batch_count) &
            bind(c, name='hipblasSgetrsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetrsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: stride_B
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgetrsStridedBatched
    end interface

    interface
        function hipblasDgetrsStridedBatched(handle, trans, n, nrhs, A, lda, stride_A, ipiv, &
                                             stride_P, B, ldb, stride_B, info, batch_count) &
            bind(c, name='hipblasDgetrsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetrsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: stride_B
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgetrsStridedBatched
    end interface

    interface
        function hipblasCgetrsStridedBatched(handle, trans, n, nrhs, A, lda, stride_A, ipiv, &
                                             stride_P, B, ldb, stride_B, info, batch_count) &
            bind(c, name='hipblasCgetrsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetrsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: stride_B
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgetrsStridedBatched
    end interface

    interface
        function hipblasZgetrsStridedBatched(handle, trans, n, nrhs, A, lda, stride_A, ipiv, &
                                             stride_P, B, ldb, stride_B, info, batch_count) &
            bind(c, name='hipblasZgetrsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetrsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int), value :: stride_A
            type(c_ptr), value :: ipiv
            integer(c_int), value :: stride_P
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int), value :: stride_B
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgetrsStridedBatched
    end interface

    ! getri_batched
    interface
        function hipblasSgetriBatched(handle, n, A, lda, ipiv, C, ldc, info, batch_count) &
            bind(c, name='hipblasSgetriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgetriBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgetriBatched
    end interface

    interface
        function hipblasDgetriBatched(handle, n, A, lda, ipiv, C, ldc, info, batch_count) &
            bind(c, name='hipblasDgetriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgetriBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgetriBatched
    end interface

    interface
        function hipblasCgetriBatched(handle, n, A, lda, ipiv, C, ldc, info, batch_count) &
            bind(c, name='hipblasCgetriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgetriBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgetriBatched
    end interface

    interface
        function hipblasZgetriBatched(handle, n, A, lda, ipiv, C, ldc, info, batch_count) &
            bind(c, name='hipblasZgetriBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgetriBatched
            type(c_ptr), value :: handle
            integer(c_int), value :: n
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: ipiv
            type(c_ptr), value :: C
            integer(c_int), value :: ldc
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgetriBatched
    end interface

    ! geqrf
    interface
        function hipblasSgeqrf(handle, m, n, A, lda, tau, info) &
            bind(c, name='hipblasSgeqrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeqrf
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
        end function hipblasSgeqrf
    end interface

    interface
        function hipblasDgeqrf(handle, m, n, A, lda, tau, info) &
            bind(c, name='hipblasDgeqrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeqrf
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
        end function hipblasDgeqrf
    end interface

    interface
        function hipblasCgeqrf(handle, m, n, A, lda, tau, info) &
            bind(c, name='hipblasCgeqrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeqrf
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
        end function hipblasCgeqrf
    end interface

    interface
        function hipblasZgeqrf(handle, m, n, A, lda, tau, info) &
            bind(c, name='hipblasZgeqrf')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeqrf
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
        end function hipblasZgeqrf
    end interface

    ! geqrf_batched
    interface
        function hipblasSgeqrfBatched(handle, m, n, A, lda, tau, info, batch_count) &
            bind(c, name='hipblasSgeqrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeqrfBatched
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgeqrfBatched
    end interface

    interface
        function hipblasDgeqrfBatched(handle, m, n, A, lda, tau, info, batch_count) &
            bind(c, name='hipblasDgeqrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeqrfBatched
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgeqrfBatched
    end interface

    interface
        function hipblasCgeqrfBatched(handle, m, n, A, lda, tau, info, batch_count) &
            bind(c, name='hipblasCgeqrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeqrfBatched
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgeqrfBatched
    end interface

    interface
        function hipblasZgeqrfBatched(handle, m, n, A, lda, tau, info, batch_count) &
            bind(c, name='hipblasZgeqrfBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeqrfBatched
            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
            type(c_ptr), value :: tau
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgeqrfBatched
    end interface

    ! geqrf_strided_batched
    interface
        function hipblasSgeqrfStridedBatched(handle, m, n, A, lda, stride_A, &
                                             tau, stride_T, info, batch_count) &
            bind(c, name='hipblasSgeqrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgeqrfStridedBatched
            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
            integer(c_int), value :: stride_A
            type(c_ptr), value :: tau
            integer(c_int), value :: stride_T
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasSgeqrfStridedBatched
    end interface

    interface
        function hipblasDgeqrfStridedBatched(handle, m, n, A, lda, stride_A, &
                                             tau, stride_T, info, batch_count) &
            bind(c, name='hipblasDgeqrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgeqrfStridedBatched
            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
            integer(c_int), value :: stride_A
            type(c_ptr), value :: tau
            integer(c_int), value :: stride_T
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasDgeqrfStridedBatched
    end interface

    interface
        function hipblasCgeqrfStridedBatched(handle, m, n, A, lda, stride_A, &
                                             tau, stride_T, info, batch_count) &
            bind(c, name='hipblasCgeqrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgeqrfStridedBatched
            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
            integer(c_int), value :: stride_A
            type(c_ptr), value :: tau
            integer(c_int), value :: stride_T
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasCgeqrfStridedBatched
    end interface

    interface
        function hipblasZgeqrfStridedBatched(handle, m, n, A, lda, stride_A, &
                                             tau, stride_T, info, batch_count) &
            bind(c, name='hipblasZgeqrfStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgeqrfStridedBatched
            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
            integer(c_int), value :: stride_A
            type(c_ptr), value :: tau
            integer(c_int), value :: stride_T
            type(c_ptr), value :: info
            integer(c_int), value :: batch_count
        end function hipblasZgeqrfStridedBatched
    end interface

    ! gels
    interface
        function hipblasSgels(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo) &
            bind(c, name = 'hipblasSgels')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgels
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
        end function hipblasSgels
    end interface

    interface
        function hipblasDgels(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo) &
            bind(c, name = 'hipblasDgels')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgels
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
        end function hipblasDgels
    end interface

    interface
        function hipblasCgels(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo) &
            bind(c, name = 'hipblasCgels')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgels
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
        end function hipblasCgels
    end interface

    interface
        function hipblasZgels(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo) &
            bind(c, name = 'hipblasZgels')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgels
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
        end function hipblasZgels
    end interface

    ! gelsBatched
    interface
        function hipblasSgelsBatched(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasSgelsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgelsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasSgelsBatched
    end interface

    interface
        function hipblasDgelsBatched(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasDgelsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgelsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasDgelsBatched
    end interface

    interface
        function hipblasCgelsBatched(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasCgelsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgelsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasCgelsBatched
    end interface

    interface
        function hipblasZgelsBatched(handle, m, n, nrhs, trans, A, lda, B, ldb, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasZgelsBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgelsBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasZgelsBatched
    end interface

    ! gelsStridedBatched
    interface
        function hipblasSgelsStridedBatched(handle, m, n, nrhs, trans, A, lda, strideA, &
            B, ldb, strideB, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasSgelsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasSgelsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: strideA
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: strideB
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasSgelsStridedBatched
    end interface

    interface
        function hipblasDgelsStridedBatched(handle, m, n, nrhs, trans, A, lda, strideA, &
            B, ldb, strideB, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasDgelsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasDgelsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: strideA
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: strideB
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasDgelsStridedBatched
    end interface

    interface
        function hipblasCgelsStridedBatched(handle, m, n, nrhs, trans, A, lda, strideA, &
            B, ldb, strideB, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasCgelsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasCgelsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: strideA
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: strideB
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasCgelsStridedBatched
    end interface

    interface
        function hipblasZgelsStridedBatched(handle, m, n, nrhs, trans, A, lda, strideA, &
            B, ldb, strideB, info, deviceInfo, batchCount) &
                bind(c, name = 'hipblasZgelsStridedBatched')
            use iso_c_binding
            use hipblas_enums
            implicit none
            integer(kind(HIPBLAS_STATUS_SUCCESS)) :: hipblasZgelsStridedBatched
            type(c_ptr), value :: handle
            integer(kind(HIPBLAS_OP_N)), value :: trans
            integer(c_int), value :: m
            integer(c_int), value :: n
            integer(c_int), value :: nrhs
            type(c_ptr), value :: A
            integer(c_int), value :: lda
            integer(c_int64_t), value :: strideA
            type(c_ptr), value :: B
            integer(c_int), value :: ldb
            integer(c_int64_t), value :: strideB
            type(c_ptr), value :: info
            type(c_ptr), value :: deviceInfo
            integer(c_int), value :: batchCount
        end function hipblasZgelsStridedBatched
    end interface

end module hipblas
